Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Michael Migliore
VTK
Commits
2fed1cb0
Commit
2fed1cb0
authored
Aug 16, 2017
by
Sankhesh Jhaveri
💬
Browse files
Test for slider widget with multiple viewports
parent
d0e606ba
Changes
3
Hide whitespace changes
Inline
Side-by-side
Interaction/Widgets/Testing/Cxx/CMakeLists.txt
View file @
2fed1cb0
set
(
TestOrientedGlyphContour_ARGS
"--PlaybackFile"
"DATA{../Data/Input/TestOrientedGlyphContourEventLog.txt}"
)
set
(
TerrainPolylineEditor_ARGS -ProjectionMode 2 -HeightOffset 100
)
vtk_add_test_cxx
(
${
vtk-module
}
CxxTests tests
BoxWidget2.cxx
BoxWidget.cxx
BoxWidget2.cxx
ImagePlaneWidget.cxx
TerrainPolylineEditor.cxx
TestAffineWidget.cxx
...
...
@@ -20,24 +20,24 @@ vtk_add_test_cxx(${vtk-module}CxxTests tests
TestConstrainedHandleWidget.cxx
TestContourWidget2.cxx
TestDijkstraImageGeodesicPath.cxx
TestDistanceWidget3D.cxx
TestDistanceWidget.cxx
TestDistanceWidget3D.cxx
TestFinitePlaneWidget.cxx
TestFixedSizeHandleRepresentation3D.cxx
TestFocalPlaneContour.cxx
TestHandleWidget2D.cxx
TestHandleWidget.cxx
TestHandleWidget2D.cxx
TestImageActorContourWidget.cxx
TestImageTracerWidget.cxx
TestImplicitCylinderWidget.cxx
TestImplicitCylinderWidget2.cxx
TestImplicitPlaneWidget
2b
.cxx
TestImplicitPlaneWidget.cxx
TestImplicitPlaneWidget2.cxx
TestImplicitPlaneWidget3.cxx
TestImplicitPlaneWidget2LockNormalToCamera.cxx
TestImplicitPlaneWidget.cxx
Test
LogoWidgetAlphaBlending
.cxx
TestImplicitPlaneWidget
2b
.cxx
Test
ImplicitPlaneWidget3
.cxx
TestLogoWidget.cxx
TestLogoWidgetAlphaBlending.cxx
TestLogoWidgetDepthPeeling.cxx
TestMeasurementCubeHandleRepresentation3D.cxx
TestMultipleViewports.cxx
...
...
@@ -55,14 +55,15 @@ vtk_add_test_cxx(${vtk-module}CxxTests tests
TestResliceCursorWidget2.cxx
TestResliceCursorWidget3.cxx
TestScalarBarWidget.cxx
TestSeedWidget2.cxx
TestSeedWidget.cxx
TestSeedWidget2.cxx
TestSeedWidgetNonUniformRepresentations.cxx
TestSliderWidget2D.cxx
TestSliderWidget.cxx
TestS
p
li
ne
Widget.cxx
TestS
ph
er
e
Widget
ZoomInOut
.cxx
TestSli
der
Widget
2D
.cxx
TestS
lid
erWidget
MultipleViewports
.cxx
TestSphereWidget2CenterCursor.cxx
TestSphereWidgetZoomInOut.cxx
TestSplineWidget.cxx
TestTextWidget.cxx
)
vtk_add_test_cxx
(
${
vtk-module
}
CxxTests no_valid_tests
...
...
Interaction/Widgets/Testing/Cxx/TestSliderWidgetMultipleViewports.cxx
0 → 100644
View file @
2fed1cb0
/*=========================================================================
Program: Visualization Toolkit
Module: TestSliderWidgetMultipleViewports.cxx
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
//
// This example tests the vtkSliderWidget with multiple viewports.
// First include the required header files for the VTK classes we are using.
#include
"vtkSmartPointer.h"
#include
"vtkActor.h"
#include
"vtkAppendPolyData.h"
#include
"vtkClipPolyData.h"
#include
"vtkCommand.h"
#include
"vtkConeSource.h"
#include
"vtkGlyph3D.h"
#include
"vtkLODActor.h"
#include
"vtkPolyDataMapper.h"
#include
"vtkRenderWindow.h"
#include
"vtkRenderWindowInteractor.h"
#include
"vtkRenderer.h"
#include
"vtkSliderRepresentation2D.h"
#include
"vtkSliderRepresentation3D.h"
#include
"vtkSliderWidget.h"
#include
"vtkSphere.h"
#include
"vtkSphereSource.h"
#include
"vtkTesting.h"
#include
"vtkWidgetEvent.h"
#include
"vtkWidgetEventTranslator.h"
const
char
TestSliderWidgetMultipleViewportsLog
[]
=
"# StreamVersion 1
\n
"
"EnterEvent 292 46 0 0 0 0 0
\n
"
"MouseMoveEvent 273 65 0 0 0 0 0
\n
"
"MouseMoveEvent 252 88 0 0 0 0 0
\n
"
"MouseMoveEvent 148 299 0 0 0 0 0
\n
"
"LeaveEvent 147 301 0 0 0 0 0
\n
"
"EnterEvent 145 299 0 0 0 0 0
\n
"
"MouseMoveEvent 145 299 0 0 0 0 0
\n
"
"MouseMoveEvent 115 190 0 0 0 0 0
\n
"
"LeftButtonPressEvent 115 190 0 0 0 0 0
\n
"
"StartInteractionEvent 115 190 0 0 0 0 0
\n
"
"LeftButtonReleaseEvent 115 190 0 0 0 0 0
\n
"
"EndInteractionEvent 115 190 0 0 0 0 0
\n
"
"RenderEvent 115 190 0 0 0 0 0
\n
"
"KeyPressEvent 115 190 0 0 114 1 r
\n
"
"CharEvent 115 190 0 0 114 1 r
\n
"
"RenderEvent 115 190 0 0 114 1 r
\n
"
"KeyReleaseEvent 115 190 0 0 114 1 r
\n
"
"MouseMoveEvent 194 163 0 0 0 0 r
\n
"
"MouseMoveEvent 195 163 0 0 0 0 r
\n
"
"LeftButtonPressEvent 195 163 0 0 0 0 r
\n
"
"RenderEvent 195 163 0 0 0 0 r
\n
"
"MouseMoveEvent 195 163 0 0 0 0 r
\n
"
"MouseMoveEvent 201 151 0 0 0 0 r
\n
"
"RenderEvent 201 151 0 0 0 0 r
\n
"
"LeftButtonReleaseEvent 201 151 0 0 0 0 r
\n
"
"RenderEvent 201 151 0 0 0 0 r
\n
"
"LeftButtonPressEvent 204 29 0 0 0 0 r
\n
"
"RenderEvent 204 29 0 0 0 0 r
\n
"
"RenderEvent 210 30 0 0 0 0 r
\n
"
"LeftButtonReleaseEvent 210 30 0 0 0 0 r
\n
"
"LeftButtonPressEvent 158 159 0 0 0 0 r
\n
"
"RenderEvent 158 159 0 0 0 0 r
\n
"
"LeftButtonReleaseEvent 169 138 0 0 0 0 r
\n
"
"RenderEvent 169 138 0 0 0 0 r
\n
"
"RenderEvent 169 138 0 0 0 0 r
\n
"
"MouseMoveEvent 251 159 0 0 0 0 r
\n
"
"LeftButtonPressEvent 251 159 0 0 0 0 r
\n
"
"StartInteractionEvent 251 159 0 0 0 0 r
\n
"
"TimerEvent 251 159 0 0 0 0 r
\n
"
"RenderEvent 251 159 0 0 0 0 r
\n
"
"TimerEvent 251 159 0 0 0 0 r
\n
"
"RenderEvent 251 159 0 0 0 0 r
\n
"
"TimerEvent 251 159 0 0 0 0 r
\n
"
"RenderEvent 251 159 0 0 0 0 r
\n
"
"TimerEvent 251 159 0 0 0 0 r
\n
"
"RenderEvent 251 159 0 0 0 0 r
\n
"
"LeftButtonReleaseEvent 251 159 0 0 0 0 r
\n
"
"EndInteractionEvent 251 159 0 0 0 0 r
\n
"
"RenderEvent 251 159 0 0 0 0 r
\n
"
"LeftButtonPressEvent 250 159 0 0 0 0 r
\n
"
"StartInteractionEvent 250 159 0 0 0 0 r
\n
"
"TimerEvent 250 159 0 0 0 0 r
\n
"
"RenderEvent 250 159 0 0 0 0 r
\n
"
"TimerEvent 250 159 0 0 0 0 r
\n
"
"RenderEvent 250 159 0 0 0 0 r
\n
"
"TimerEvent 250 159 0 0 0 0 r
\n
"
"RenderEvent 250 159 0 0 0 0 r
\n
"
"TimerEvent 250 159 0 0 0 0 r
\n
"
"RenderEvent 250 159 0 0 0 0 r
\n
"
"TimerEvent 250 159 0 0 0 0 r
\n
"
"RenderEvent 250 159 0 0 0 0 r
\n
"
"TimerEvent 250 159 0 0 0 0 r
\n
"
"RenderEvent 250 159 0 0 0 0 r
\n
"
"LeftButtonReleaseEvent 250 159 0 0 0 0 r
\n
"
"EndInteractionEvent 250 159 0 0 0 0 r
\n
"
"RenderEvent 250 159 0 0 0 0 r
\n
"
"LeftButtonPressEvent 250 159 0 0 0 0 r
\n
"
"RenderEvent 250 159 0 0 0 0 r
\n
"
"LeftButtonReleaseEvent 250 159 0 0 0 0 r
\n
"
"RenderEvent 250 159 0 0 0 0 r
\n
"
"LeftButtonPressEvent 209 30 0 0 0 0 r
\n
"
"RenderEvent 209 30 0 0 0 0 r
\n
"
"MouseMoveEvent 209 30 0 0 0 0 r
\n
"
"RenderEvent 209 30 0 0 0 0 r
\n
"
"MouseMoveEvent 210 30 0 0 0 0 r
\n
"
"RenderEvent 210 30 0 0 0 0 r
\n
"
"MouseMoveEvent 210 30 0 0 0 0 r
\n
"
"RenderEvent 210 30 0 0 0 0 r
\n
"
"MouseMoveEvent 211 30 0 0 0 0 r
\n
"
"RenderEvent 211 30 0 0 0 0 r
\n
"
"MouseMoveEvent 212 30 0 0 0 0 r
\n
"
"RenderEvent 212 30 0 0 0 0 r
\n
"
"MouseMoveEvent 214 30 0 0 0 0 r
\n
"
"RenderEvent 214 30 0 0 0 0 r
\n
"
"MouseMoveEvent 214 30 0 0 0 0 r
\n
"
"RenderEvent 214 30 0 0 0 0 r
\n
"
"MouseMoveEvent 215 30 0 0 0 0 r
\n
"
"RenderEvent 215 30 0 0 0 0 r
\n
"
"MouseMoveEvent 233 30 0 0 0 0 r
\n
"
"RenderEvent 233 30 0 0 0 0 r
\n
"
"LeftButtonReleaseEvent 233 30 0 0 0 0 r
\n
"
"MouseMoveEvent 204 30 0 0 0 0 r
\n
"
"LeftButtonPressEvent 204 30 0 0 0 0 r
\n
"
"RenderEvent 204 30 0 0 0 0 r
\n
"
"LeftButtonReleaseEvent 204 30 0 0 0 0 r
\n
"
"RenderEvent 204 30 0 0 0 0 r
\n
"
"RenderEvent 204 30 0 0 0 0 r
\n
"
"MouseMoveEvent 239 83 0 0 0 0 r
\n
"
;
// This does the actual work: updates the probe.
// Callback for the interaction
class
vtkSliderMultipleViewportsCallback
:
public
vtkCommand
{
public:
static
vtkSliderMultipleViewportsCallback
*
New
()
{
return
new
vtkSliderMultipleViewportsCallback
;
}
void
Execute
(
vtkObject
*
caller
,
unsigned
long
,
void
*
)
VTK_OVERRIDE
{
vtkSliderWidget
*
sliderWidget
=
reinterpret_cast
<
vtkSliderWidget
*>
(
caller
);
this
->
Glyph
->
SetScaleFactor
(
static_cast
<
vtkSliderRepresentation
*>
(
sliderWidget
->
GetRepresentation
())
->
GetValue
());
}
vtkSliderMultipleViewportsCallback
()
:
Glyph
(
0
)
{
}
vtkGlyph3D
*
Glyph
;
};
int
TestSliderWidgetMultipleViewports
(
int
argc
,
char
*
argv
[])
{
// Create a mace out of filters.
//
vtkSmartPointer
<
vtkSphereSource
>
sphereSource
=
vtkSmartPointer
<
vtkSphereSource
>::
New
();
vtkSmartPointer
<
vtkConeSource
>
cone
=
vtkSmartPointer
<
vtkConeSource
>::
New
();
vtkSmartPointer
<
vtkGlyph3D
>
glyph
=
vtkSmartPointer
<
vtkGlyph3D
>::
New
();
glyph
->
SetInputConnection
(
sphereSource
->
GetOutputPort
());
glyph
->
SetSourceConnection
(
cone
->
GetOutputPort
());
glyph
->
SetVectorModeToUseNormal
();
glyph
->
SetScaleModeToScaleByVector
();
glyph
->
SetScaleFactor
(
0.25
);
// The sphere and spikes are appended into a single polydata.
// This just makes things simpler to manage.
vtkSmartPointer
<
vtkAppendPolyData
>
apd
=
vtkSmartPointer
<
vtkAppendPolyData
>::
New
();
apd
->
AddInputConnection
(
glyph
->
GetOutputPort
());
apd
->
AddInputConnection
(
sphereSource
->
GetOutputPort
());
vtkSmartPointer
<
vtkPolyDataMapper
>
maceMapper
=
vtkSmartPointer
<
vtkPolyDataMapper
>::
New
();
maceMapper
->
SetInputConnection
(
apd
->
GetOutputPort
());
vtkSmartPointer
<
vtkLODActor
>
maceActor
=
vtkSmartPointer
<
vtkLODActor
>::
New
();
maceActor
->
SetMapper
(
maceMapper
);
maceActor
->
VisibilityOn
();
maceActor
->
SetPosition
(
1
,
1
,
1
);
// Create the RenderWindow, Renderer and both Actors
//
vtkSmartPointer
<
vtkRenderer
>
ren1
=
vtkSmartPointer
<
vtkRenderer
>::
New
();
ren1
->
SetViewport
(
0
,
0
,
0.5
,
1.0
);
vtkSmartPointer
<
vtkRenderWindow
>
renWin
=
vtkSmartPointer
<
vtkRenderWindow
>::
New
();
renWin
->
AddRenderer
(
ren1
);
vtkSmartPointer
<
vtkRenderer
>
ren2
=
vtkSmartPointer
<
vtkRenderer
>::
New
();
ren2
->
SetViewport
(
0.5
,
0
,
1.0
,
1.0
);
renWin
->
AddRenderer
(
ren2
);
vtkSmartPointer
<
vtkRenderWindowInteractor
>
iren
=
vtkSmartPointer
<
vtkRenderWindowInteractor
>::
New
();
iren
->
SetRenderWindow
(
renWin
);
// VTK widgets consist of two parts: the widget part that handles event
// processing; and the widget representation that defines how the widget
// appears in the scene (i.e., matters pertaining to geometry).
vtkSmartPointer
<
vtkSliderRepresentation2D
>
sliderRep
=
vtkSmartPointer
<
vtkSliderRepresentation2D
>::
New
();
sliderRep
->
SetValue
(
0.25
);
sliderRep
->
SetTitleText
(
"Spike Size"
);
sliderRep
->
GetPoint1Coordinate
()
->
SetCoordinateSystemToNormalizedDisplay
();
sliderRep
->
GetPoint1Coordinate
()
->
SetValue
(
0.1
,
0.1
);
sliderRep
->
GetPoint2Coordinate
()
->
SetCoordinateSystemToNormalizedDisplay
();
sliderRep
->
GetPoint2Coordinate
()
->
SetValue
(
0.4
,
0.1
);
sliderRep
->
SetSliderLength
(
0.02
);
sliderRep
->
SetSliderWidth
(
0.03
);
sliderRep
->
SetEndCapLength
(
0.01
);
sliderRep
->
SetEndCapWidth
(
0.03
);
sliderRep
->
SetTubeWidth
(
0.005
);
vtkSmartPointer
<
vtkSliderWidget
>
sliderWidget
=
vtkSmartPointer
<
vtkSliderWidget
>::
New
();
sliderWidget
->
SetInteractor
(
iren
);
sliderWidget
->
SetRepresentation
(
sliderRep
);
sliderWidget
->
SetCurrentRenderer
(
ren2
);
sliderWidget
->
SetAnimationModeToAnimate
();
vtkSmartPointer
<
vtkSliderMultipleViewportsCallback
>
callback
=
vtkSmartPointer
<
vtkSliderMultipleViewportsCallback
>::
New
();
callback
->
Glyph
=
glyph
;
sliderWidget
->
AddObserver
(
vtkCommand
::
InteractionEvent
,
callback
);
ren1
->
AddActor
(
maceActor
);
sliderWidget
->
EnabledOn
();
vtkSmartPointer
<
vtkSliderRepresentation3D
>
sliderRep3D
=
vtkSmartPointer
<
vtkSliderRepresentation3D
>::
New
();
sliderRep3D
->
SetValue
(
0.25
);
sliderRep3D
->
SetTitleText
(
"Spike Size"
);
sliderRep3D
->
GetPoint1Coordinate
()
->
SetCoordinateSystemToWorld
();
sliderRep3D
->
GetPoint1Coordinate
()
->
SetValue
(
0
,
0
,
0
);
sliderRep3D
->
GetPoint2Coordinate
()
->
SetCoordinateSystemToWorld
();
sliderRep3D
->
GetPoint2Coordinate
()
->
SetValue
(
2
,
0
,
0
);
sliderRep3D
->
SetSliderLength
(
0.075
);
sliderRep3D
->
SetSliderWidth
(
0.05
);
sliderRep3D
->
SetEndCapLength
(
0.05
);
vtkSmartPointer
<
vtkSliderWidget
>
sliderWidget3D
=
vtkSmartPointer
<
vtkSliderWidget
>::
New
();
sliderWidget3D
->
GetEventTranslator
()
->
SetTranslation
(
vtkCommand
::
RightButtonPressEvent
,
vtkWidgetEvent
::
Select
);
sliderWidget3D
->
GetEventTranslator
()
->
SetTranslation
(
vtkCommand
::
RightButtonReleaseEvent
,
vtkWidgetEvent
::
EndSelect
);
sliderWidget3D
->
SetInteractor
(
iren
);
sliderWidget3D
->
SetRepresentation
(
sliderRep3D
);
sliderWidget3D
->
SetCurrentRenderer
(
ren2
);
sliderWidget3D
->
SetAnimationModeToAnimate
();
sliderWidget3D
->
EnabledOn
();
sliderWidget3D
->
AddObserver
(
vtkCommand
::
InteractionEvent
,
callback
);
// Add the actors to the renderer, set the background and size
//
ren1
->
SetBackground
(
0.1
,
0.2
,
0.4
);
ren2
->
SetBackground
(
0.9
,
0.4
,
0.2
);
renWin
->
SetSize
(
300
,
300
);
// render the image
//
iren
->
Initialize
();
renWin
->
Render
();
return
vtkTesting
::
InteractorEventLoop
(
argc
,
argv
,
iren
,
TestSliderWidgetMultipleViewportsLog
);
}
Interaction/Widgets/Testing/Data/Baseline/TestSliderWidgetMultipleViewports.png.md5
0 → 100644
View file @
2fed1cb0
b094ff6e812426bc70b035195a769c71
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment