"""
Wrappers for VTK classes needed for rendering.
"""
# Author: Oualid Benkarim <oualid.benkarim@mcgill.ca>
# License: BSD 3 clause
from .base import BSVTKObjectWrapper, wrap_vtk
from .actor import BSActor, BSActor2D, BSScalarBarActor, BSTextActor
###############################################################
# Renderer
###############################################################
class BSViewport(BSVTKObjectWrapper):
"""Wrapper for vtkViewport."""
def __init__(self, vtkobject, **kwargs):
super().__init__(vtkobject=vtkobject, **kwargs)
def AddActor2D(self, obj=None, **kwargs):
"""Set mapper.
Wraps the `AddActor2D` method of `vtkViewport` to accept a
`vtkActor2D` or BSActor2D.
Parameters
----------
obj : vtkActor or BSActor
2D Actor.
kwargs : optional keyword arguments
Arguments are used to set the actor.
"""
actor = BSActor2D(vtkobject=obj, **kwargs)
self.VTKObject.AddActor2D(actor.VTKObject)
return actor
def AddScalarBarActor(self, obj=None, **kwargs):
actor = BSScalarBarActor(vtkobject=obj, **kwargs)
self.VTKObject.AddActor2D(actor.VTKObject)
return actor
def AddTextActor(self, obj=None, **kwargs):
actor = BSTextActor(vtkobject=obj, **kwargs)
self.VTKObject.AddActor2D(actor.VTKObject)
return actor
[docs]class BSRenderer(BSViewport):
"""Wrapper for vtkRenderer."""
[docs] def __init__(self, vtkobject=None, **kwargs):
super().__init__(vtkobject=vtkobject, **kwargs)
[docs] def AddActor(self, obj=None, **kwargs):
"""Set mapper.
Wraps the `AddActor` method of `vtkRenderer` to accept a
`vtkActor` or BSActor.
Parameters
----------
obj : vtkActor or BSActor, optional
Actor. If None, the actor is created. Default is None.
kwargs : optional keyword arguments
Arguments are used to set the actor.
"""
actor = BSActor(vtkobject=obj, **kwargs)
self.VTKObject.AddActor(actor.VTKObject)
return actor
###############################################################
# Interactor style
###############################################################
class BSInteractorObserver(BSVTKObjectWrapper):
"""Wrapper for vtkInteractorObserver."""
def __init__(self, vtkobject, **kwargs):
super().__init__(vtkobject=vtkobject, **kwargs)
[docs]class BSInteractorStyle(BSInteractorObserver):
"""Wrapper for vtkInteractorStyle."""
[docs] def __init__(self, vtkobject=None, **kwargs):
super().__init__(vtkobject=vtkobject, **kwargs)
[docs]class BSInteractorStyleJoystickCamera(BSInteractorStyle):
"""Wrapper for vtkInteractorStyleJoystickCamera."""
pass
[docs]class BSInteractorStyleJoystickActor(BSInteractorStyle):
"""Wrapper for vtkInteractorStyleJoystickActor."""
pass
[docs]class BSInteractorStyleTerrain(BSInteractorStyle):
"""Wrapper for vtkInteractorStyleTerrain."""
pass
[docs]class BSInteractorStyleRubberBandZoom(BSInteractorStyle):
"""Wrapper for vtkInteractorStyleRubberBandZoom."""
pass
[docs]class BSInteractorStyleTrackballActor(BSInteractorStyle):
"""Wrapper for vtkInteractorStyleTrackballActor."""
pass
[docs]class BSInteractorStyleTrackballCamera(BSInteractorStyle):
"""Wrapper for vtkInteractorStyleTrackballCamera."""
pass
[docs]class BSInteractorStyleImage(BSInteractorStyleTrackballCamera):
"""Wrapper for vtkInteractorStyleImage."""
pass
[docs]class BSInteractorStyleRubberBandPick(BSInteractorStyleTrackballCamera):
"""Wrapper for vtkInteractorStyleRubberBandPick."""
pass
[docs]class BSInteractorStyleSwitchBase(BSInteractorStyle):
"""Wrapper for vtkInteractorStyleSwitchBase."""
pass
[docs]class BSInteractorStyleSwitch(BSInteractorStyleSwitchBase):
"""Wrapper for vtkInteractorStyleSwitch."""
pass
###############################################################
# Window Interactor
###############################################################
[docs]class BSRenderWindowInteractor(BSVTKObjectWrapper):
"""Wrapper for vtkRenderWindowInteractor."""
[docs] def __init__(self, vtkobject=None, **kwargs):
super().__init__(vtkobject=vtkobject, **kwargs)
[docs] def SetInteractorStyle(self, obj=None, **kwargs):
if obj is None and len(kwargs) == 0:
self.VTKObject.SetInteractorStyle(None)
return None
if obj is None:
style = BSInteractorStyleSwitch(vtkobject=obj, **kwargs)
else:
style = wrap_vtk(obj, **kwargs)
self.VTKObject.SetInteractorStyle(style.VTKObject)
return style
[docs] def SetInteractorStyleNone(self):
return self.VTKObject.SetInteractorStyle(None)
[docs] def SetInteractorStyleSwitch(self, obj=None, **kwargs):
style = BSInteractorStyleSwitch(vtkobject=obj, **kwargs)
self.VTKObject.SetInteractorStyle(style.VTKObject)
return style
[docs] def SetInteractorStyleTrackBallCamera(self, obj=None, **kwargs):
style = BSInteractorStyleTrackballCamera(vtkobject=obj, **kwargs)
self.VTKObject.SetInteractorStyle(style.VTKObject)
return style
[docs] def SetInteractorStyleJoystickCamera(self, obj=None, **kwargs):
style = BSInteractorStyleJoystickCamera(vtkobject=obj, **kwargs)
self.VTKObject.SetInteractorStyle(style.VTKObject)
return style
[docs] def SetInteractorStyleTrackballActor(self, obj=None, **kwargs):
style = BSInteractorStyleTrackballActor(vtkobject=obj, **kwargs)
self.VTKObject.SetInteractorStyle(style.VTKObject)
return style
[docs] def SetInteractorStyleJoystickActor(self, obj=None, **kwargs):
style = BSInteractorStyleJoystickActor(vtkobject=obj, **kwargs)
self.VTKObject.SetInteractorStyle(style.VTKObject)
return style
[docs] def SetInteractorStyleRubberBandZoom(self, obj=None, **kwargs):
style = BSInteractorStyleRubberBandZoom(vtkobject=obj, **kwargs)
self.VTKObject.SetInteractorStyle(style.VTKObject)
return style
[docs] def SetInteractorStyleRubberBandPick(self, obj=None, **kwargs):
style = BSInteractorStyleRubberBandPick(vtkobject=obj, **kwargs)
self.VTKObject.SetInteractorStyle(style.VTKObject)
return style
[docs] def SetInteractorStyleImage(self, obj=None, **kwargs):
style = BSInteractorStyleImage(vtkobject=obj, **kwargs)
self.VTKObject.SetInteractorStyle(style.VTKObject)
return style
[docs] def SetInteractorStyleTerrain(self, obj=None, **kwargs):
style = BSInteractorStyleTerrain(vtkobject=obj, **kwargs)
self.VTKObject.SetInteractorStyle(style.VTKObject)
return style
[docs]class BSGenericRenderWindowInteractor(BSRenderWindowInteractor):
"""Wrapper for vtkGenericRenderWindowInteractor."""
pass
###############################################################
# Window
###############################################################
class BSWindow(BSVTKObjectWrapper):
"""Wrapper for vtkWindow."""
def __init__(self, vtkobject, **kwargs):
super().__init__(vtkobject=vtkobject, **kwargs)
[docs]class BSRenderWindow(BSWindow):
"""Wrapper for vtkRenderWindow."""
[docs] def __init__(self, vtkobject=None, **kwargs):
super().__init__(vtkobject=vtkobject, **kwargs)
[docs] def AddRenderer(self, obj=None, **kwargs):
ren = BSRenderer(vtkobject=obj, **kwargs)
self.VTKObject.AddRenderer(ren.VTKObject)
return ren
[docs] def SetInteractor(self, obj=None, **kwargs):
if obj is None and len(kwargs) == 0:
self.VTKObject.SetInteractor(None)
return None
iren = BSRenderWindowInteractor(vtkobject=obj, **kwargs)
self.VTKObject.SetInteractor(iren.VTKObject)
return iren
###############################################################
# Camera
###############################################################
[docs]class BSCamera(BSVTKObjectWrapper):
"""Wrapper for vtkCamera."""
[docs] def __init__(self, vtkobject=None, **kwargs):
super().__init__(vtkobject=vtkobject, **kwargs)