Source code for brainspace.vtk_interface.wrappers.algorithm

"""
Wrappers for VTK algorithms and mappers.
"""

# Author: Oualid Benkarim <oualid.benkarim@mcgill.ca>
# License: BSD 3 clause


from vtk.util.vtkConstants import VTK_DOUBLE

from .base import BSVTKObjectWrapper, wrap_vtk
from .property import BSTextProperty
from .lookup_table import (BSLookupTable, BSLookupTableWithEnabling,
                           BSWindowLevelLookupTable, BSColorTransferFunction,
                           BSDiscretizableColorTransferFunction)
from ..decorators import unwrap_input


[docs]class BSAlgorithm(BSVTKObjectWrapper): """Wrapper for vtkAlgorithm."""
[docs] def __init__(self, vtkobject=None, **kwargs): super().__init__(vtkobject=vtkobject, **kwargs)
@property def nip(self): """int: Returns number of input ports""" return self.GetNumberOfInputPorts() @property def nop(self): """int: Returns number of output ports""" return self.GetNumberOfOutputPorts() @property def nic(self): """int: Returns number of total input connections""" return self.GetTotalNumberOfInputConnections() @property def is_source(self): """bool: Returns True if self is a source. False, otherwise.""" return self.nip == 0 @property def is_sink(self): """bool: Returns True if self is a sink. False, otherwise.""" return self.nop == 0 @property def is_filter(self): """bool: Returns True if self is a filter. False, otherwise. A filter that is not a source nor a sink. """ return not (self.is_source and self.is_sink)
class LUTMixin: def SetLookupTable(self, obj=None, **kwargs): """Set lookup table. Wraps the `SetLookupTable` method of `vtkMapper` to accept a `vtkLookupTable` or BSLookupTable. Parameters ---------- obj : vtkLookupTable or BSLookupTable, optional Lookup table. If None, a LookupTable is created. Default is None. kwargs : optional keyword arguments Arguments are used to set the lookup table. """ if obj is None: obj = BSLookupTable(**kwargs) else: obj = wrap_vtk(obj, **kwargs) self.VTKObject.SetLookupTable(obj.VTKObject) return obj def SetLookupTableWithEnabling(self, obj=None, **kwargs): """Set lookup table using a LookupTableWithEnabling. Parameters ---------- obj : vtkLookupTableWithEnabling or BSLookupTableWithEnabling, optional Lookup table. If None, the lut is created. Default is None. kwargs : optional keyword arguments Arguments are used to set the lookup table. """ obj = BSLookupTableWithEnabling(vtkobject=obj, **kwargs) self.VTKObject.SetLookupTable(obj.VTKObject) return obj def SetWindowLevelLookupTable(self, obj=None, **kwargs): """Set lookup table using a WindowLevelLookupTable. Parameters ---------- obj : vtkWindowLevelLookupTable or BSWindowLevelLookupTable, optional Lookup table. If None, the lut is created. Default is None. kwargs : optional keyword arguments Arguments are used to set the lookup table. """ obj = BSWindowLevelLookupTable(vtkobject=obj, **kwargs) self.VTKObject.SetLookupTable(obj.VTKObject) return obj def SetColorTransferFunction(self, obj=None, **kwargs): """Set lookup table using a ColorTransferFunction. Parameters ---------- obj : vtkColorTransferFunction or BSColorTransferFunction, optional Lookup table. If None, the color transfer function is created. Default is None. kwargs : optional keyword arguments Arguments are used to set the lookup table. """ obj = BSColorTransferFunction(vtkobject=obj, **kwargs) self.VTKObject.SetLookupTable(obj.VTKObject) return obj def SetDiscretizableColorTransferFunction(self, obj=None, **kwargs): """Set lookup table using a DiscretizableColorTransferFunction. Parameters ---------- obj : vtkDiscretizableColorTransferFunction or BSDiscretizableColorTransferFunction, optional Lookup table. If None, the discretizable color transfer function is created. Default is None. kwargs : optional keyword arguments Arguments are used to set the lookup table. """ obj = BSDiscretizableColorTransferFunction(vtkobject=obj, **kwargs) self.VTKObject.SetLookupTable(obj.VTKObject) return obj class BSAbstractMapper(BSAlgorithm): """Wrapper for vtkAbstractMapper.""" def __init__(self, vtkobject, **kwargs): super().__init__(vtkobject=vtkobject, **kwargs) class BSAbstractMapper3D(BSAbstractMapper): """Wrapper for vtkAbstractMapper.""" pass class BSMapper(BSAbstractMapper3D, LUTMixin): """Wrapper for vtkMapper.""" def __init__(self, vtkobject, **kwargs): super().__init__(vtkobject=vtkobject, **kwargs) def SetArrayName(self, name): """Set array id. Wraps the `SetArrayName` method of `vtkMapper` such that the access mode is changed to accept setting the array name. Parameters ---------- name : str Array name. """ self.VTKObject.SetArrayAccessMode(1) self.VTKObject.SetArrayName(name) def SetArrayId(self, idx): """Set array id. Wraps the `SetArrayId` method of `vtkMapper` such that the access mode is changed to accept setting the array id. Parameters ---------- idx : int Array id. """ self.VTKObject.SetArrayAccessMode(0) self.VTKObject.SetArrayId(idx)
[docs]class BSDataSetMapper(BSMapper): """Wrapper for vtkDataSetMapper."""
[docs] def __init__(self, vtkobject=None, **kwargs): super().__init__(vtkobject=vtkobject, **kwargs)
[docs]class BSPolyDataMapper(BSMapper): """Wrapper for vtkPolyDataMapper."""
[docs] def __init__(self, vtkobject=None, **kwargs): super().__init__(vtkobject=vtkobject, **kwargs)
[docs]class BSLabeledContourMapper(BSMapper): """Wrapper for vtkLabeledContourMapper."""
[docs] def __init__(self, vtkobject=None, **kwargs): super().__init__(vtkobject=vtkobject, **kwargs)
[docs] def SetTextProperty(self, obj=None, **kwargs): """Set text property. Wraps the `SetTextProperty` method of `vtkLabeledContourMapper` to accept a `vtkTextProperty` or BSTextProperty. Parameters ---------- obj : vtkTextProperty or BSTextProperty, optional Label text property. If None, the property is created. Default is None. kwargs : optional keyword arguments Arguments are used to set the property. """ obj = BSTextProperty(vtkobject=obj, **kwargs) self.VTKObject.SetTextProperty(obj.VTKObject) return obj
[docs] @unwrap_input(1, vtype={1: VTK_DOUBLE}) def SetTextPropertyMapping(self, mapping): self.VTKObject.SetTextPropertyMapping(mapping)
class BSMapper2D(BSAbstractMapper): """Wrapper for vtkMapper2D.""" def __init__(self, vtkobject, **kwargs): super().__init__(vtkobject=vtkobject, **kwargs)
[docs]class BSLabeledDataMapper(BSMapper2D): """Wrapper for vtkLabeledDataMapper."""
[docs] def __init__(self, vtkobject=None, **kwargs): super().__init__(vtkobject=vtkobject, **kwargs)
[docs]class BSLabelPlacementMapper(BSMapper2D): """Wrapper for vtkLabelPlacementMapper."""
[docs] def __init__(self, vtkobject=None, **kwargs): super().__init__(vtkobject=vtkobject, **kwargs)
[docs]class BSPolyDataMapper2D(BSMapper2D, LUTMixin): """Wrapper for vtkPolyDataMapper2D."""
[docs] def __init__(self, vtkobject=None, **kwargs): super().__init__(vtkobject=vtkobject, **kwargs)
[docs]class BSTextMapper2D(BSMapper2D): """Wrapper for vtkPolyDataMapper2D."""
[docs] def __init__(self, vtkobject=None, **kwargs): super().__init__(vtkobject=vtkobject, **kwargs)
[docs] def SetTextProperty(self, obj=None, **kwargs): """Set text property. Wraps the `SetTextProperty` method of `vtkTextActor` to accept a `vtkTextProperty` or BSTextProperty. Parameters ---------- obj : vtkTextProperty or BSTextProperty, optional Label text property. If None, the property is created. Default is None. kwargs : optional keyword arguments Arguments are used to set the property. """ if obj is None: obj = self.VTKObject.GetTextProperty() obj = BSTextProperty(vtkobject=obj, **kwargs) self.VTKObject.SetTextProperty(obj.VTKObject) return obj
[docs]class BSPolyDataAlgorithm(BSAlgorithm): """Wrapper for vtkPolyDataAlgorithm.""" pass
[docs]class BSWindowToImageFilter(BSAlgorithm): """Wrapper for vtkWindowToImageFilter.""" pass
class BSImageAlgorithm(BSAlgorithm): """Wrapper for vtkImageAlgorithm.""" pass
[docs]class BSImageWriter(BSImageAlgorithm): """Wrapper for vtkImageWriter.""" pass
[docs]class BSBMPWriter(BSImageWriter): """Wrapper for vtkBMPWriter.""" pass
[docs]class BSJPEGWriter(BSImageWriter): """Wrapper for vtkJPEGWriter.""" pass
[docs]class BSPNGWriter(BSImageWriter): """Wrapper for vtkPNGWriter.""" pass
[docs]class BSPostScriptWriter(BSImageWriter): """Wrapper for vtkPostScriptWriter.""" pass
[docs]class BSTIFFWriter(BSImageWriter): """Wrapper for vtkTIFFWriter.""" pass