Source code for brainspace.vtk_interface.wrappers.renderer

"""
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)