1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
#!/usr/bin/env python
from __future__ import print_function
from vtkmodules.vtkFiltersCore import vtkGenerateIds
from vtkmodules.vtkFiltersSources import vtkSphereSource
from vtkmodules.vtkInteractionStyle import vtkInteractorStyleRubberBandZoom
from vtkmodules.vtkRenderingCore import (
vtkActor,
vtkPolyDataMapper,
vtkRenderWindow,
vtkRenderWindowInteractor,
vtkRenderer,
)
import vtkmodules.vtkInteractionStyle
import vtkmodules.vtkRenderingFreeType
import vtkmodules.vtkRenderingOpenGL2
import vtkmodules.test.Testing
class TestStyleRubberBandZoomPerspective(vtkmodules.test.Testing.vtkTest):
def initPipeline(self):
try:
if self.pipelineInitialized:
# default state
self.style.LockAspectToViewportOff()
self.style.CenterAtStartPositionOff()
self.style.UseDollyForPerspectiveProjectionOn()
# reset camera too
self.renderer.ResetCamera()
self.renderWindow.Render()
except AttributeError:
pass
self.pipelineInitialized = True
self.sphere = vtkSphereSource()
self.idFilter = vtkGenerateIds()
self.mapper = vtkPolyDataMapper()
self.actor = vtkActor()
self.idFilter.PointIdsOff()
self.idFilter.CellIdsOn()
self.idFilter.SetInputConnection(self.sphere.GetOutputPort())
self.mapper.SetInputConnection(self.idFilter.GetOutputPort())
self.mapper.SetColorModeToMapScalars()
self.mapper.SetScalarModeToUseCellFieldData()
self.mapper.SelectColorArray("vtkCellIds")
self.mapper.UseLookupTableScalarRangeOff()
self.mapper.SetScalarRange(0, 95)
self.actor.SetMapper(self.mapper)
self.renderer = vtkRenderer()
self.renderer.AddActor(self.actor)
self.renderWindow = vtkRenderWindow()
self.renderWindow.AddRenderer(self.renderer)
self.iren = vtkRenderWindowInteractor()
self.iren.SetRenderWindow(self.renderWindow)
self.style = vtkInteractorStyleRubberBandZoom()
self.iren.SetInteractorStyle(self.style)
self.renderer.GetActiveCamera().SetPosition(0, 0, -1)
self.renderer.ResetCamera()
self.renderWindow.Render()
def interact(self):
self.iren.SetEventInformationFlipY(150, 150, 0, 0, chr(0), 0, "")
self.iren.InvokeEvent("LeftButtonPressEvent")
self.iren.SetEventInformationFlipY(192, 182, 0, 0, chr(0), 0, "")
self.iren.InvokeEvent("MouseMoveEvent")
self.iren.InvokeEvent("LeftButtonReleaseEvent")
def compare(self, suffix):
img_file = "TestStyleRubberBandZoomPerspective-%s.png" % suffix
vtkmodules.test.Testing.compareImage(self.renderWindow, vtkmodules.test.Testing.getAbsImagePath(img_file))
vtkmodules.test.Testing.interact()
def testDefault(self):
print("testDefault")
self.initPipeline()
self.interact()
self.compare("Default")
def testLockAspect(self):
print("testLockAspect")
self.initPipeline()
self.style.LockAspectToViewportOn()
self.interact()
self.compare("LockAspect")
def testCenterAtStartPosition(self):
print("testCenterAtStartPosition")
self.initPipeline()
self.style.CenterAtStartPositionOn()
self.interact()
self.compare("CenterAtStartPosition")
def testCenterAtStartPositionAndLockAspect(self):
print("testCenterAtStartPositionAndLockAspect")
self.initPipeline()
self.style.CenterAtStartPositionOn()
self.style.LockAspectToViewportOn()
self.interact()
self.compare("CenterAtStartPositionAndLockAspect")
def testParaViewWay(self):
print("testParaViewWay")
self.initPipeline()
self.style.CenterAtStartPositionOn()
self.style.LockAspectToViewportOn()
self.style.UseDollyForPerspectiveProjectionOff()
self.interact()
self.compare("ParaViewWay")
if __name__ == "__main__":
vtkmodules.test.Testing.main([(TestStyleRubberBandZoomPerspective, 'test')])
|