Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
vtkMRMLSliceLogic Class Reference

Slicer logic class for slice manipulation. More...

#include <Libs/MRML/Logic/vtkMRMLSliceLogic.h>

Inheritance diagram for vtkMRMLSliceLogic:
Collaboration diagram for vtkMRMLSliceLogic:

Public Types

enum  {
  LayerNone = vtkMRMLSliceCompositeNode::LayerNone , LayerBackground = vtkMRMLSliceCompositeNode::LayerBackground , LayerForeground = vtkMRMLSliceCompositeNode::LayerForeground , LayerLabel = vtkMRMLSliceCompositeNode::LayerLabel ,
  Layer_Last
}
 
enum  { CompositeModifiedEvent = 18000 }
 CompositeModifiedEvent is generated when slice composite node is modified. More...
 
typedef vtkMRMLAbstractLogic Superclass
 
- Public Types inherited from vtkMRMLAbstractLogic
typedef vtkObject Superclass
 
typedef void(vtkMRMLAbstractLogic::* TaskFunctionPointer) (void *clientdata)
 

Public Member Functions

vtkMRMLSliceNodeAddSliceNode (const char *layoutName)
 Convenience function for adding a slice node and setting it in this logic.
 
void EndSliceCompositeNodeInteraction ()
 Indicate an interaction with the slice composite node has been completed.
 
void EndSliceNodeInteraction ()
 Indicate an interaction with the slice node has been completed.
 
void EndSliceOffsetInteraction ()
 Indicate the slice offset value has completed its change.
 
virtual bool EnterMRMLCallback () const
 
void FitFOVToBackground (double fov)
 
void FitSliceToAll (int width=-1, int height=-1)
 adjust the node's field of view to match the extent of all volume layers
 
void FitSliceToBackground (int width=-1, int height=-1)
 
void FitSliceToFirst (int width=-1, int height=-1)
 adjust the node's field of view to match the extent of the first selected volume (background, foregorund, labelmap)
 
void FitSliceToVolume (vtkMRMLVolumeNode *volumeNode, int width, int height)
 adjust the node's field of view to match the extent of the volume
 
void FitSliceToVolumes (vtkCollection *volumeNodes, int width, int height)
 adjust the node's field of view to match the extent of the volume
 
void GetBackgroundRASBox (double rasDimensions[3], double rasCenter[3])
 Get the size of the volume, transformed to RAS space.
 
void GetBackgroundSliceBounds (double sliceBounds[6])
 
void GetBackgroundSliceDimensions (double sliceDimensions[3], double sliceCenter[3])
 Get the size of the volume, transformed to slice space.
 
double * GetBackgroundSliceSpacing () VTK_SIZEHINT(3)
 
void GetBackgroundWindowLevelAndRange (double &window, double &level, double &rangeLow, double &rangeHigh)
 Helper to get the background layer Window/Level and intensity range.
 
void GetBackgroundWindowLevelAndRange (double &window, double &level, double &rangeLow, double &rangeHigh, bool &autoWindowLevel)
 
vtkImageBlend * GetBlend ()
 
vtkImageBlend * GetBlendUVW ()
 
virtual const char * GetClassName ()
 
int GetEditableLayerAtWorldPosition (double worldPos[3], bool backgroundVolumeEditable=true, bool foregroundVolumeEditable=true)
 
virtual vtkImageReslice * GetExtractModelTexture ()
 
void GetForegroundWindowLevelAndRange (double &window, double &level, double &rangeLow, double &rangeHigh)
 Helper to get the foreground layer Window/Level and intensity range.
 
void GetForegroundWindowLevelAndRange (double &window, double &level, double &rangeLow, double &rangeHigh, bool &autoWindowLevel)
 
vtkAlgorithmOutput * GetImageDataConnection ()
 
vtkMRMLVolumeNodeGetLayerVolumeNode (int layer)
 
void GetLowestVolumeSliceBounds (double sliceBounds[6], bool useVoxelCenter=false)
 
double * GetLowestVolumeSliceSpacing () VTK_SIZEHINT(3)
 
vtkMRMLSliceLayerLogicGetNthLayer (int layerIndex)
 
vtkAlgorithmOutput * GetNthLayerImageDataConnection (int layerIndex)
 
vtkAlgorithmOutput * GetNthLayerImageDataConnectionUVW (int layerIndex)
 
vtkMRMLVolumeNodeGetNthLayerVolumeNode (int layerIndex)
 
std::vector< vtkMRMLDisplayNode * > GetPolyDataDisplayNodes ()
 Get all slice displaynodes creating PolyData models like glyphs etc.
 
void GetSliceBounds (double sliceBounds[6])
 Get the largest slice bounding box for all volumes in layers.
 
vtkMRMLSliceDisplayNodeGetSliceDisplayNode ()
 Slice plane display properties.
 
int GetSliceIndexFromOffset (double sliceOffset)
 
int GetSliceIndexFromOffset (double sliceOffset, vtkMRMLVolumeNode *volumeNode)
 
virtual vtkMRMLModelDisplayNodeGetSliceModelDisplayNode ()
 
virtual vtkMRMLModelNodeGetSliceModelNode ()
 Model slice plane.
 
virtual vtkMRMLLinearTransformNodeGetSliceModelTransformNode ()
 Model slice plane transform from xy to RAS.
 
virtual vtkMRMLSliceNodeGetSliceNode ()
 The MRML slice node for this slice logic.
 
bool GetSliceOffsetRangeResolution (double range[2], double &resolution)
 
void GetVolumeSliceBounds (vtkMRMLVolumeNode *volumeNode, double sliceBounds[6], bool useVoxelCenter=false)
 
void GetVolumeSliceDimensions (vtkMRMLVolumeNode *volumeNode, double sliceDimensions[3], double sliceCenter[3])
 Get the size of the volume, transformed to slice space.
 
double * GetVolumeSliceSpacing (vtkMRMLVolumeNode *volumeNode) VTK_SIZEHINT(3)
 
bool HasInputs ()
 
bool HasUVWInputs ()
 
virtual int IsA (const char *type)
 
void PrintSelf (ostream &os, vtkIndent indent) override
 
void ResizeSliceNode (double newWidth, double newHeight)
 
void RotateSliceToLowestVolumeAxes (bool forceSlicePlaneToSingleSlice=true)
 
void SetBackgroundWindowLevel (double window, double level)
 Helper to set the background layer Window/Level.
 
void SetForegroundWindowLevel (double window, double level)
 Helper to set the foreground layer Window/Level.
 
void SetNthLayer (int layerIndex, vtkMRMLSliceLayerLogic *layer)
 
void SetSliceExtentsToSliceNode ()
 Set slice extents to all layers.
 
void SetSliceNode (vtkMRMLSliceNode *newSliceNode)
 
void SnapSliceOffsetToIJK ()
 
void StartSliceCompositeNodeInteraction (unsigned int parameters)
 
void StartSliceNodeInteraction (unsigned int parameters)
 
void StartSliceOffsetInteraction ()
 Indicate the slice offset value is starting to change.
 
void UpdateImageData ()
 Internally used by UpdatePipeline.
 
void UpdatePipeline ()
 update the pipeline to reflect the current state of the nodes
 
void UpdateSliceCompositeNode ()
 Manage and synchronize the SliceCompositeNode.
 
void UpdateSliceNode ()
 Manage and synchronize the SliceNode.
 
void UpdateSliceNodeFromLayout ()
 Update slicer node given a layout name.
 
virtual vtkMRMLSliceCompositeNodeGetSliceCompositeNode ()
 
void SetSliceCompositeNode (vtkMRMLSliceCompositeNode *SliceCompositeNode)
 
vtkMRMLSliceLayerLogicGetBackgroundLayer ()
 
void SetBackgroundLayer (vtkMRMLSliceLayerLogic *BackgroundLayer)
 
vtkMRMLSliceLayerLogicGetForegroundLayer ()
 
void SetForegroundLayer (vtkMRMLSliceLayerLogic *ForegroundLayer)
 
vtkMRMLSliceLayerLogicGetLabelLayer ()
 
void SetLabelLayer (vtkMRMLSliceLayerLogic *LabelLayer)
 
double GetSliceOffset ()
 
void SetSliceOffset (double offset)
 
void CreateSliceModel ()
 
void DeleteSliceModel ()
 
- Public Member Functions inherited from vtkMRMLAbstractLogic
virtual vtkMRMLApplicationLogicGetMRMLApplicationLogic () const
 Get access to overall application state.
 
vtkMRMLSceneGetMRMLScene () const
 Return a reference to the current MRML scene.
 
void PrintSelf (ostream &os, vtkIndent indent) override
 
virtual void SetMRMLApplicationLogic (vtkMRMLApplicationLogic *logic)
 
void SetMRMLScene (vtkMRMLScene *newScene)
 Set and observe the MRMLScene.
 

Static Public Member Functions

static vtkMRMLSliceCompositeNodeGetSliceCompositeNode (vtkMRMLSliceNode *node)
 Return the associated slicerlayer nodes.
 
static vtkMRMLSliceNodeGetSliceNode (vtkMRMLSliceCompositeNode *node)
 Return the associated slice node.
 
static void GetVolumeRASBox (vtkMRMLVolumeNode *volumeNode, double rasDimensions[3], double rasCenter[3])
 Get the size of the volume, transformed to RAS space.
 
static bool IsSliceModelDisplayNode (vtkMRMLDisplayNode *mrmlDisplayNode)
 
static bool IsSliceModelNode (vtkMRMLNode *mrmlNode)
 
static int IsTypeOf (const char *type)
 
static vtkMRMLSliceLogicNew ()
 The Usual VTK class functions.
 
static vtkMRMLSliceLogicSafeDownCast (vtkObject *o)
 
- Static Public Member Functions inherited from vtkMRMLAbstractLogic
static int IsTypeOf (const char *type)
 
static vtkMRMLAbstractLogicNew ()
 
static vtkMRMLAbstractLogicSafeDownCast (vtkObject *o)
 

Static Public Attributes

static const int SLICE_INDEX_NO_VOLUME
 
static const int SLICE_INDEX_OUT_OF_VOLUME
 
static const int SLICE_INDEX_ROTATED
 
static const std::string SLICE_MODEL_NODE_NAME_SUFFIX
 

Protected Types

typedef std::vector< LayerListItemLayerList
 
typedef std::vector< LayerListItem >::const_iterator LayerListConstIterator
 
typedef vtkSmartPointer< vtkMRMLSliceLayerLogicLayerListItem
 
typedef std::vector< LayerListItem >::iterator LayerListIterator
 

Protected Member Functions

vtkMRMLVolumeNodeGetFirstVolumeNode ()
 
bool IsEventInsideVolume (bool background, double worldPos[3])
 
void OnMRMLNodeModified (vtkMRMLNode *node) override
 
void OnMRMLSceneEndImport () override
 
void OnMRMLSceneEndRestore () override
 
void OnMRMLSceneNodeAdded (vtkMRMLNode *node) override
 
void OnMRMLSceneNodeRemoved (vtkMRMLNode *node) override
 
void OnMRMLSceneStartClose () override
 
void ProcessMRMLLogicsEvents ()
 
void ProcessMRMLLogicsEvents (vtkObject *caller, unsigned long event, void *callData) override
 process logic events
 
void SetMRMLSceneInternal (vtkMRMLScene *newScene) override
 
void SetNthLayerVolumeNode (int layerIndex, vtkMRMLVolumeNode *volumeNode)
 Set volume associated with a layer.
 
void SetupCrosshairNode ()
 
void UpdateFromMRMLScene () override
 
void UpdateSliceNodes ()
 
bool VolumeWindowLevelEditable (const char *vtkNotUsed(volumeNodeID))
 Deprecated. Returns true if the volume's window/level values are editable on the GUI.
 
 vtkMRMLSliceLogic ()
 
 ~vtkMRMLSliceLogic () override
 
void SetWindowLevel (int layer, double window, double level)
 
void GetWindowLevelAndRange (int layer, double &window, double &level, double &rangeLow, double &rangeHigh, bool &autoWindowLevel)
 
- Protected Member Functions inherited from vtkMRMLAbstractLogic
int EndModify (bool wasModifying)
 
virtual bool EnterMRMLLogicsCallback () const
 
virtual bool EnterMRMLNodesCallback () const
 
virtual bool EnterMRMLSceneCallback () const
 
bool GetDisableModifiedEvent () const
 
int GetInMRMLLogicsCallbackFlag () const
 
int GetInMRMLNodesCallbackFlag () const
 
int GetInMRMLSceneCallbackFlag () const
 
vtkCallbackCommand * GetMRMLLogicsCallbackCommand ()
 
vtkObserverManagerGetMRMLLogicsObserverManager () const
 
vtkCallbackCommand * GetMRMLNodesCallbackCommand ()
 
vtkObserverManagerGetMRMLNodesObserverManager () const
 
vtkCallbackCommand * GetMRMLSceneCallbackCommand ()
 
vtkObserverManagerGetMRMLSceneObserverManager () const
 
int GetPendingModifiedEventCount () const
 
int GetProcessingMRMLSceneEvent () const
 Return the event id currently processed or 0 if any.
 
int InvokePendingModifiedEvent ()
 
void Modified () override
 
virtual void ObserveMRMLScene ()
 
virtual void OnMRMLSceneEndBatchProcess ()
 
virtual void OnMRMLSceneEndClose ()
 
virtual void OnMRMLSceneNew ()
 
virtual void OnMRMLSceneStartBatchProcess ()
 
virtual void OnMRMLSceneStartImport ()
 
virtual void OnMRMLSceneStartRestore ()
 
virtual void ProcessMRMLNodesEvents (vtkObject *caller, unsigned long event, void *callData)
 
virtual void ProcessMRMLSceneEvents (vtkObject *caller, unsigned long event, void *callData)
 
virtual void RegisterNodes ()
 
void SetAndObserveMRMLSceneEventsInternal (vtkMRMLScene *newScene, vtkIntArray *events, vtkFloatArray *priorities=nullptr)
 
void SetDisableModifiedEvent (bool onOff)
 
void SetInMRMLLogicsCallbackFlag (int flag)
 
void SetInMRMLNodesCallbackFlag (int flag)
 
void SetInMRMLSceneCallbackFlag (int flag)
 
void SetProcessingMRMLSceneEvent (int event)
 
bool StartModify ()
 
virtual void UnobserveMRMLScene ()
 
 vtkMRMLAbstractLogic ()
 
 ~vtkMRMLAbstractLogic () override
 

Static Protected Member Functions

static vtkMRMLSliceCompositeNodeGetSliceCompositeNode (vtkMRMLScene *scene, const char *layoutName)
 
static vtkMRMLSliceNodeGetSliceNode (vtkMRMLScene *scene, const char *layoutName)
 
static bool UpdateAddSubOperation (vtkImageMathematics *addSubMath, int compositing)
 Helper to update the operation to perform based on compositing mode.
 
static bool UpdateBlendLayers (vtkImageBlend *blend, const std::deque< SliceLayerInfo > &layers, bool clipToBackgroundVolume)
 
static bool UpdateFractions (BlendPipeline *pipeline, const std::vector< vtkAlgorithmOutput * > &imagePorts, const std::vector< double > &opacities)
 Helper to update layers opacity when adding/subtracting the background layer.
 
static bool UpdateFractions (vtkImageMathematics *fraction, double opacity)
 Helper to update layer opacity when adding/subtracting the background layer.
 
static void UpdateReconstructionSlab (vtkMRMLSliceLogic *sliceLogic, vtkMRMLSliceLayerLogic *sliceLayerLogic)
 Helper to update reconstruction slab settings for a given layer.
 
- Static Protected Member Functions inherited from vtkMRMLAbstractLogic
static void MRMLLogicsCallback (vtkObject *caller, unsigned long eid, void *clientData, void *callData)
 MRMLLogicCallback is a static function to relay modified events from the logics.
 
static void MRMLNodesCallback (vtkObject *caller, unsigned long eid, void *clientData, void *callData)
 MRMLNodesCallback is a static function to relay modified events from the nodes.
 
static void MRMLSceneCallback (vtkObject *caller, unsigned long eid, void *clientData, void *callData)
 

Protected Attributes

bool AddingSliceModelNodes
 
vtkImageReslice * ExtractModelTexture
 
vtkAlgorithmOutput * ImageDataConnection
 
LayerList Layers
 
BlendPipeline * Pipeline
 
BlendPipeline * PipelineUVW
 
vtkMRMLSliceCompositeNodeSliceCompositeNode
 
vtkMRMLModelDisplayNodeSliceModelDisplayNode
 
vtkMRMLModelNodeSliceModelNode
 
vtkMRMLLinearTransformNodeSliceModelTransformNode
 
vtkMRMLSliceNodeSliceNode
 
double SliceSpacing [3]
 

Detailed Description

Slicer logic class for slice manipulation.

This class manages the logic associated with display of slice windows (but not the GUI). Features of the class include: – a back-to-front list of MRML volumes to be displayed – a compositing mode for each volume layer (opacity, outline, glyph, checkerboard, etc) – each layer is required to provide an RGBA image in the space defined by the vtkMRMLSliceNode

This class manages internal vtk pipelines that create an output vtkImageData which can be used by the vtkSlicerSliceGUI class to display the resulting composite image or it can be used as a texture map in a vtkSlicerView. This class can also be used for resampling volumes for further computation.

Definition at line 58 of file vtkMRMLSliceLogic.h.

Member Typedef Documentation

◆ LayerList

typedef std::vector<LayerListItem> vtkMRMLSliceLogic::LayerList
protected

Definition at line 461 of file vtkMRMLSliceLogic.h.

◆ LayerListConstIterator

typedef std::vector<LayerListItem>::const_iterator vtkMRMLSliceLogic::LayerListConstIterator
protected

Definition at line 463 of file vtkMRMLSliceLogic.h.

◆ LayerListItem

typedef vtkSmartPointer<vtkMRMLSliceLayerLogic> vtkMRMLSliceLogic::LayerListItem
protected

Definition at line 460 of file vtkMRMLSliceLogic.h.

◆ LayerListIterator

typedef std::vector<LayerListItem>::iterator vtkMRMLSliceLogic::LayerListIterator
protected

Definition at line 462 of file vtkMRMLSliceLogic.h.

◆ Superclass

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
LayerNone 
LayerBackground 
LayerForeground 
LayerLabel 
Layer_Last 

Definition at line 72 of file vtkMRMLSliceLogic.h.

◆ anonymous enum

anonymous enum

CompositeModifiedEvent is generated when slice composite node is modified.

Enumerator
CompositeModifiedEvent 

Definition at line 67 of file vtkMRMLSliceLogic.h.

Constructor & Destructor Documentation

◆ vtkMRMLSliceLogic()

vtkMRMLSliceLogic::vtkMRMLSliceLogic ( )
protected

◆ ~vtkMRMLSliceLogic()

vtkMRMLSliceLogic::~vtkMRMLSliceLogic ( )
overrideprotected

Member Function Documentation

◆ AddSliceNode()

vtkMRMLSliceNode * vtkMRMLSliceLogic::AddSliceNode ( const char * layoutName)

Convenience function for adding a slice node and setting it in this logic.

◆ CreateSliceModel()

void vtkMRMLSliceLogic::CreateSliceModel ( )

Make a slice model with the current configuration

◆ DeleteSliceModel()

void vtkMRMLSliceLogic::DeleteSliceModel ( )

◆ EndSliceCompositeNodeInteraction()

void vtkMRMLSliceLogic::EndSliceCompositeNodeInteraction ( )

Indicate an interaction with the slice composite node has been completed.

◆ EndSliceNodeInteraction()

void vtkMRMLSliceLogic::EndSliceNodeInteraction ( )

Indicate an interaction with the slice node has been completed.

◆ EndSliceOffsetInteraction()

void vtkMRMLSliceLogic::EndSliceOffsetInteraction ( )

Indicate the slice offset value has completed its change.

◆ EnterMRMLCallback()

virtual bool vtkMRMLSliceLogic::EnterMRMLCallback ( ) const
virtual

Reimplemented to avoid calling ProcessMRMLSceneEvents when we are adding the MRMLModelNode into the scene

◆ FitFOVToBackground()

void vtkMRMLSliceLogic::FitFOVToBackground ( double fov)

adjust the node's field of view to match the FOV the value fov will be applied to the smallest slice window dimension

◆ FitSliceToAll()

void vtkMRMLSliceLogic::FitSliceToAll ( int width = -1,
int height = -1 )

adjust the node's field of view to match the extent of all volume layers

◆ FitSliceToBackground()

void vtkMRMLSliceLogic::FitSliceToBackground ( int width = -1,
int height = -1 )

Adjust the node's field of view to match the extent of the volume visible in the slice's background. This is a more advanced version of FitSliceToAll, which takes into account that in case of ClipToBackgroundVolume is enabled then all layers above the background volume will be clipped to the background volume's extents.

◆ FitSliceToFirst()

void vtkMRMLSliceLogic::FitSliceToFirst ( int width = -1,
int height = -1 )

adjust the node's field of view to match the extent of the first selected volume (background, foregorund, labelmap)

◆ FitSliceToVolume()

void vtkMRMLSliceLogic::FitSliceToVolume ( vtkMRMLVolumeNode * volumeNode,
int width,
int height )

adjust the node's field of view to match the extent of the volume

◆ FitSliceToVolumes()

void vtkMRMLSliceLogic::FitSliceToVolumes ( vtkCollection * volumeNodes,
int width,
int height )

adjust the node's field of view to match the extent of the volume

◆ GetBackgroundLayer()

vtkMRMLSliceLayerLogic * vtkMRMLSliceLogic::GetBackgroundLayer ( )

The background slice layer

◆ GetBackgroundRASBox()

void vtkMRMLSliceLogic::GetBackgroundRASBox ( double rasDimensions[3],
double rasCenter[3] )

Get the size of the volume, transformed to RAS space.

◆ GetBackgroundSliceBounds()

void vtkMRMLSliceLogic::GetBackgroundSliceBounds ( double sliceBounds[6])

Get the min/max bounds of the volume

  • note these are not translated by the current slice offset so they can be used to calculate the range (e.g. of a slider) that operates in slice space

◆ GetBackgroundSliceDimensions()

void vtkMRMLSliceLogic::GetBackgroundSliceDimensions ( double sliceDimensions[3],
double sliceCenter[3] )

Get the size of the volume, transformed to slice space.

◆ GetBackgroundSliceSpacing()

double * vtkMRMLSliceLogic::GetBackgroundSliceSpacing ( )

Get the spacing of the volume, transformed to slice space

  • to be used, for example, to set the slice increment for stepping a single voxel relative to the current slice view

◆ GetBackgroundWindowLevelAndRange() [1/2]

void vtkMRMLSliceLogic::GetBackgroundWindowLevelAndRange ( double & window,
double & level,
double & rangeLow,
double & rangeHigh )

Helper to get the background layer Window/Level and intensity range.

◆ GetBackgroundWindowLevelAndRange() [2/2]

void vtkMRMLSliceLogic::GetBackgroundWindowLevelAndRange ( double & window,
double & level,
double & rangeLow,
double & rangeHigh,
bool & autoWindowLevel )

Helper to get the background layer Window/Level, intensity range and status of automatic Window/Level setting

◆ GetBlend()

vtkImageBlend * vtkMRMLSliceLogic::GetBlend ( )

The compositing filter TODO: this will eventually be generalized to a per-layer compositing function

◆ GetBlendUVW()

vtkImageBlend * vtkMRMLSliceLogic::GetBlendUVW ( )

◆ GetClassName()

virtual const char * vtkMRMLSliceLogic::GetClassName ( )
virtual

Reimplemented from vtkMRMLAbstractLogic.

◆ GetEditableLayerAtWorldPosition()

int vtkMRMLSliceLogic::GetEditableLayerAtWorldPosition ( double worldPos[3],
bool backgroundVolumeEditable = true,
bool foregroundVolumeEditable = true )

Get volume at the specified world position that should be used for interactions, such as window/level adjustments. backgroundVolumeEditable and foregroundVolumeEditable can be used specify that a volume is not editable (even if it is visible at the given position).

◆ GetExtractModelTexture()

virtual vtkImageReslice * vtkMRMLSliceLogic::GetExtractModelTexture ( )
virtual

An image reslice instance to pull a single slice from the volume that represents the filmsheet display output

◆ GetFirstVolumeNode()

vtkMRMLVolumeNode * vtkMRMLSliceLogic::GetFirstVolumeNode ( )
protected

Get the first available volume (search order: background, foreground, label) The method is not public because in the future we may want to change internal implementation details (for example, we may ignore volumes without vtkImageData or those that have empty extent).

◆ GetForegroundLayer()

vtkMRMLSliceLayerLogic * vtkMRMLSliceLogic::GetForegroundLayer ( )

The foreground slice layer

◆ GetForegroundWindowLevelAndRange() [1/2]

void vtkMRMLSliceLogic::GetForegroundWindowLevelAndRange ( double & window,
double & level,
double & rangeLow,
double & rangeHigh )

Helper to get the foreground layer Window/Level and intensity range.

◆ GetForegroundWindowLevelAndRange() [2/2]

void vtkMRMLSliceLogic::GetForegroundWindowLevelAndRange ( double & window,
double & level,
double & rangeLow,
double & rangeHigh,
bool & autoWindowLevel )

Helper to get the foreground layer Window/Level, intensity range and status of automatic Window/Level setting

◆ GetImageDataConnection()

vtkAlgorithmOutput * vtkMRMLSliceLogic::GetImageDataConnection ( )

the tail of the pipeline – returns nullptr if none of the inputs exist

◆ GetLabelLayer()

vtkMRMLSliceLayerLogic * vtkMRMLSliceLogic::GetLabelLayer ( )

The Label slice layer

◆ GetLayerVolumeNode()

vtkMRMLVolumeNode * vtkMRMLSliceLogic::GetLayerVolumeNode ( int layer)
Deprecated
Get the volume node corresponding to layer (0=background, 1=foreground, 2=label)
See also
GetNthLayerVolumeNode

◆ GetLowestVolumeSliceBounds()

void vtkMRMLSliceLogic::GetLowestVolumeSliceBounds ( double sliceBounds[6],
bool useVoxelCenter = false )

Get the min/max bounds of the lowest volume layer (background, foreground, label)

  • note these are not translated by the current slice offset so they can be used to calculate the range (e.g. of a slider) that operates in slice space
  • returns first non-null layer If useVoxelCenter is set to false (default) then bounds of voxel sides are returned (otherwise then bounds of voxels centers are returned).

◆ GetLowestVolumeSliceSpacing()

double * vtkMRMLSliceLogic::GetLowestVolumeSliceSpacing ( )

Get the spacing of the lowest volume layer (background, foreground, label), transformed to slice space

  • to be used, for example, to set the slice increment for stepping a single voxel relative to the current slice view
  • returns first non-null layer

◆ GetNthLayer()

vtkMRMLSliceLayerLogic * vtkMRMLSliceLogic::GetNthLayer ( int layerIndex)

◆ GetNthLayerImageDataConnection()

vtkAlgorithmOutput * vtkMRMLSliceLogic::GetNthLayerImageDataConnection ( int layerIndex)

◆ GetNthLayerImageDataConnectionUVW()

vtkAlgorithmOutput * vtkMRMLSliceLogic::GetNthLayerImageDataConnectionUVW ( int layerIndex)

◆ GetNthLayerVolumeNode()

vtkMRMLVolumeNode * vtkMRMLSliceLogic::GetNthLayerVolumeNode ( int layerIndex)

Get the volume node corresponding to layer (0=background, 1=foreground, 2=label)

◆ GetPolyDataDisplayNodes()

std::vector< vtkMRMLDisplayNode * > vtkMRMLSliceLogic::GetPolyDataDisplayNodes ( )

Get all slice displaynodes creating PolyData models like glyphs etc.

◆ GetSliceBounds()

void vtkMRMLSliceLogic::GetSliceBounds ( double sliceBounds[6])

Get the largest slice bounding box for all volumes in layers.

◆ GetSliceCompositeNode() [1/3]

virtual vtkMRMLSliceCompositeNode * vtkMRMLSliceLogic::GetSliceCompositeNode ( )
virtual

The MRML slice node for this slice logic

◆ GetSliceCompositeNode() [2/3]

static vtkMRMLSliceCompositeNode * vtkMRMLSliceLogic::GetSliceCompositeNode ( vtkMRMLScene * scene,
const char * layoutName )
staticprotected

◆ GetSliceCompositeNode() [3/3]

static vtkMRMLSliceCompositeNode * vtkMRMLSliceLogic::GetSliceCompositeNode ( vtkMRMLSliceNode * node)
static

Return the associated slicerlayer nodes.

◆ GetSliceDisplayNode()

vtkMRMLSliceDisplayNode * vtkMRMLSliceLogic::GetSliceDisplayNode ( )

Slice plane display properties.

◆ GetSliceIndexFromOffset() [1/2]

int vtkMRMLSliceLogic::GetSliceIndexFromOffset ( double sliceOffset)

Get the DICOM slice index (1-based) from slice offset (distance from the origin to the slice plane). Slice index is computed for the first available volume (the search order is background, foreground, label volume). If the return value is negative then then no slice index can be determined for the first available volume: SLICE_INDEX_ROTATED=the slice is rotated compared to the volume planes, SLICE_INDEX_OUT_OF_VOLUME=the slice plane is out of the volume SLICE_INDEX_NO_VOLUME=no volume is available

◆ GetSliceIndexFromOffset() [2/2]

int vtkMRMLSliceLogic::GetSliceIndexFromOffset ( double sliceOffset,
vtkMRMLVolumeNode * volumeNode )

Get the DICOM slice index (1-based) from slice offset (distance from the origin to the slice plane). If the return value is negative then then no slice index can be determined: SLICE_INDEX_ROTATED=the slice is rotated compared to the volume planes, SLICE_INDEX_OUT_OF_VOLUME=the slice plane is out of the volume SLICE_INDEX_NO_VOLUME=the specified volume is not available

◆ GetSliceModelDisplayNode()

virtual vtkMRMLModelDisplayNode * vtkMRMLSliceLogic::GetSliceModelDisplayNode ( )
virtual

Model slice plane display properties. The method is deprecated, use SliceDisplayNode instead.

◆ GetSliceModelNode()

virtual vtkMRMLModelNode * vtkMRMLSliceLogic::GetSliceModelNode ( )
virtual

Model slice plane.

◆ GetSliceModelTransformNode()

virtual vtkMRMLLinearTransformNode * vtkMRMLSliceLogic::GetSliceModelTransformNode ( )
virtual

Model slice plane transform from xy to RAS.

◆ GetSliceNode() [1/3]

virtual vtkMRMLSliceNode * vtkMRMLSliceLogic::GetSliceNode ( )
virtual

The MRML slice node for this slice logic.

◆ GetSliceNode() [2/3]

static vtkMRMLSliceNode * vtkMRMLSliceLogic::GetSliceNode ( vtkMRMLScene * scene,
const char * layoutName )
staticprotected

◆ GetSliceNode() [3/3]

static vtkMRMLSliceNode * vtkMRMLSliceLogic::GetSliceNode ( vtkMRMLSliceCompositeNode * node)
static

Return the associated slice node.

◆ GetSliceOffset()

double vtkMRMLSliceLogic::GetSliceOffset ( )

Get/Set the current distance from the origin to the slice plane

◆ GetSliceOffsetRangeResolution()

bool vtkMRMLSliceLogic::GetSliceOffsetRangeResolution ( double range[2],
double & resolution )

Get range and resolution for slice offset sliders. Returns false if the information cannot be determined.

◆ GetVolumeRASBox()

static void vtkMRMLSliceLogic::GetVolumeRASBox ( vtkMRMLVolumeNode * volumeNode,
double rasDimensions[3],
double rasCenter[3] )
static

Get the size of the volume, transformed to RAS space.

◆ GetVolumeSliceBounds()

void vtkMRMLSliceLogic::GetVolumeSliceBounds ( vtkMRMLVolumeNode * volumeNode,
double sliceBounds[6],
bool useVoxelCenter = false )

Get the min/max bounds of the volume

  • note these are not translated by the current slice offset so they can be used to calculate the range (e.g. of a slider) that operates in slice space If useVoxelCenter is set to false (default) then bounds of voxel sides are returned (otherwise then bounds of voxels centers are returned).

◆ GetVolumeSliceDimensions()

void vtkMRMLSliceLogic::GetVolumeSliceDimensions ( vtkMRMLVolumeNode * volumeNode,
double sliceDimensions[3],
double sliceCenter[3] )

Get the size of the volume, transformed to slice space.

◆ GetVolumeSliceSpacing()

double * vtkMRMLSliceLogic::GetVolumeSliceSpacing ( vtkMRMLVolumeNode * volumeNode)

Get the spacing of the volume, transformed to slice space

  • to be used, for example, to set the slice increment for stepping a single voxel relative to the current slice view

◆ GetWindowLevelAndRange()

void vtkMRMLSliceLogic::GetWindowLevelAndRange ( int layer,
double & window,
double & level,
double & rangeLow,
double & rangeHigh,
bool & autoWindowLevel )
protected

◆ HasInputs()

bool vtkMRMLSliceLogic::HasInputs ( )

Return True if at least one layer has an image data

See also
vtkMRMLSliceLayerLogic::GetImageDataConnection()

◆ HasUVWInputs()

bool vtkMRMLSliceLogic::HasUVWInputs ( )

Return True if at least one layer has an UVW image data

See also
vtkMRMLSliceLayerLogic::GetImageDataConnectionUVW()

◆ IsA()

virtual int vtkMRMLSliceLogic::IsA ( const char * type)
virtual

Reimplemented from vtkMRMLAbstractLogic.

◆ IsEventInsideVolume()

bool vtkMRMLSliceLogic::IsEventInsideVolume ( bool background,
double worldPos[3] )
protected

Returns true if position is inside the selected layer volume. Use background flag to choose between foreground/background layer.

◆ IsSliceModelDisplayNode()

static bool vtkMRMLSliceLogic::IsSliceModelDisplayNode ( vtkMRMLDisplayNode * mrmlDisplayNode)
static

Return true if the display node is a volume slice node display node by checking the attribute SliceLogic.IsSliceModelDisplayNode Returns false if the attribute is not present, true if the attribute is present and not equal to zero

◆ IsSliceModelNode()

static bool vtkMRMLSliceLogic::IsSliceModelNode ( vtkMRMLNode * mrmlNode)
static

Return true if the node is a model node that has the default volume slice node name suffix, false otherwise

See also
SLICE_MODEL_NODE_NAME_SUFFIX

◆ IsTypeOf()

static int vtkMRMLSliceLogic::IsTypeOf ( const char * type)
static

◆ New()

static vtkMRMLSliceLogic * vtkMRMLSliceLogic::New ( )
static

The Usual VTK class functions.

◆ OnMRMLNodeModified()

void vtkMRMLSliceLogic::OnMRMLNodeModified ( vtkMRMLNode * )
overrideprotectedvirtual

Called after the corresponding MRML event is triggered.

See also
ProcessMRMLNodesEvents

Reimplemented from vtkMRMLAbstractLogic.

◆ OnMRMLSceneEndImport()

void vtkMRMLSliceLogic::OnMRMLSceneEndImport ( )
overrideprotectedvirtual

If vtkMRMLScene::EndImportEvent has been set to be observed in SetMRMLSceneInternal, it is called when the scene fires the event

See also
ProcessMRMLSceneEvents, SetMRMLSceneInternal
OnMRMLSceneStartImport, OnMRMLSceneNew

Reimplemented from vtkMRMLAbstractLogic.

◆ OnMRMLSceneEndRestore()

void vtkMRMLSliceLogic::OnMRMLSceneEndRestore ( )
overrideprotectedvirtual

If vtkMRMLScene::EndRestoreEvent has been set to be observed in SetMRMLSceneInternal, it is called when the scene fires the event

See also
ProcessMRMLSceneEvents, SetMRMLSceneInternal
OnMRMLSceneStartRestore

Reimplemented from vtkMRMLAbstractLogic.

◆ OnMRMLSceneNodeAdded()

void vtkMRMLSliceLogic::OnMRMLSceneNodeAdded ( vtkMRMLNode * )
overrideprotectedvirtual

If vtkMRMLScene::NodeAddedEvent has been set to be observed in SetMRMLSceneInternal, it is called when the scene fires the event

See also
ProcessMRMLSceneEvents, SetMRMLSceneInternal
OnMRMLSceneNodeRemoved, vtkMRMLScene::NodeAboutToBeAdded

Reimplemented from vtkMRMLAbstractLogic.

◆ OnMRMLSceneNodeRemoved()

void vtkMRMLSliceLogic::OnMRMLSceneNodeRemoved ( vtkMRMLNode * )
overrideprotectedvirtual

If vtkMRMLScene::NodeRemovedEvent has been set to be observed in SetMRMLSceneInternal, it is called when the scene fires the event

See also
ProcessMRMLSceneEvents, SetMRMLSceneInternal
OnMRMLSceneNodeAdded, vtkMRMLScene::NodeAboutToBeRemoved

Reimplemented from vtkMRMLAbstractLogic.

◆ OnMRMLSceneStartClose()

void vtkMRMLSliceLogic::OnMRMLSceneStartClose ( )
overrideprotectedvirtual

If vtkMRMLScene::StartCloseEvent has been set to be observed in SetMRMLSceneInternal, it is called when the scene fires the event

See also
ProcessMRMLSceneEvents, SetMRMLSceneInternal
OnMRMLSceneEndClose

Reimplemented from vtkMRMLAbstractLogic.

◆ PrintSelf()

void vtkMRMLSliceLogic::PrintSelf ( ostream & os,
vtkIndent indent )
override

◆ ProcessMRMLLogicsEvents() [1/2]

void vtkMRMLSliceLogic::ProcessMRMLLogicsEvents ( )
protected

◆ ProcessMRMLLogicsEvents() [2/2]

void vtkMRMLSliceLogic::ProcessMRMLLogicsEvents ( vtkObject * caller,
unsigned long event,
void * callData )
overrideprotectedvirtual

process logic events

Reimplemented from vtkMRMLAbstractLogic.

◆ ResizeSliceNode()

void vtkMRMLSliceLogic::ResizeSliceNode ( double newWidth,
double newHeight )

Adjust dimensions and fov based on the new viewport size. The size should be the viewport size (typically vtkRenderWindow), not the size of the renderers (important if it's in a lightbox mode). It must be called each time the renderwindow size is modified and each time the lightbox configuration is changed.

◆ RotateSliceToLowestVolumeAxes()

void vtkMRMLSliceLogic::RotateSliceToLowestVolumeAxes ( bool forceSlicePlaneToSingleSlice = true)

Rotate slice view to match axes of the lowest volume layer (background, foreground, label).

Parameters
forceSlicePlaneToSingleSliceIf the volume is single-slice and forceSlicePlaneToSingleSlice is enabled then slice view will be aligned with the volume's slice plane. If the flag is disabled of the volume has more than one slice then the slice view will be rotated to the closest orthogonal axis.

◆ SafeDownCast()

static vtkMRMLSliceLogic * vtkMRMLSliceLogic::SafeDownCast ( vtkObject * o)
static

◆ SetBackgroundLayer()

void vtkMRMLSliceLogic::SetBackgroundLayer ( vtkMRMLSliceLayerLogic * BackgroundLayer)

◆ SetBackgroundWindowLevel()

void vtkMRMLSliceLogic::SetBackgroundWindowLevel ( double window,
double level )

Helper to set the background layer Window/Level.

◆ SetForegroundLayer()

void vtkMRMLSliceLogic::SetForegroundLayer ( vtkMRMLSliceLayerLogic * ForegroundLayer)

◆ SetForegroundWindowLevel()

void vtkMRMLSliceLogic::SetForegroundWindowLevel ( double window,
double level )

Helper to set the foreground layer Window/Level.

◆ SetLabelLayer()

void vtkMRMLSliceLogic::SetLabelLayer ( vtkMRMLSliceLayerLogic * LabelLayer)

◆ SetMRMLSceneInternal()

void vtkMRMLSliceLogic::SetMRMLSceneInternal ( vtkMRMLScene * newScene)
overrideprotectedvirtual

Called each time a new scene is set. Can be reimplemented in derived classes. Doesn't observe the scene by default, that means that UpdateFromMRMLScene() won't be called by default when a scene is imported, closed or restored, only when a new scene is set.

See also
SetAndObserveMRMLSceneInternal() SetAndObserveMRMLSceneEventsInternal()
UpdateFromMRMLScene()

Reimplemented from vtkMRMLAbstractLogic.

◆ SetNthLayer()

void vtkMRMLSliceLogic::SetNthLayer ( int layerIndex,
vtkMRMLSliceLayerLogic * layer )

◆ SetNthLayerVolumeNode()

void vtkMRMLSliceLogic::SetNthLayerVolumeNode ( int layerIndex,
vtkMRMLVolumeNode * volumeNode )
protected

Set volume associated with a layer.

◆ SetSliceCompositeNode()

void vtkMRMLSliceLogic::SetSliceCompositeNode ( vtkMRMLSliceCompositeNode * SliceCompositeNode)

◆ SetSliceExtentsToSliceNode()

void vtkMRMLSliceLogic::SetSliceExtentsToSliceNode ( )

Set slice extents to all layers.

◆ SetSliceNode()

void vtkMRMLSliceLogic::SetSliceNode ( vtkMRMLSliceNode * newSliceNode)

◆ SetSliceOffset()

void vtkMRMLSliceLogic::SetSliceOffset ( double offset)

◆ SetupCrosshairNode()

void vtkMRMLSliceLogic::SetupCrosshairNode ( )
protected

◆ SetWindowLevel()

void vtkMRMLSliceLogic::SetWindowLevel ( int layer,
double window,
double level )
protected

Helper to get/set Window/Level in any layer

◆ SnapSliceOffsetToIJK()

void vtkMRMLSliceLogic::SnapSliceOffsetToIJK ( )

Set the current distance so that it corresponds to the closest center of a voxel in IJK space (integer value)

◆ StartSliceCompositeNodeInteraction()

void vtkMRMLSliceLogic::StartSliceCompositeNodeInteraction ( unsigned int parameters)

Indicate an interaction with the slice composite node is beginning. The parameters of the slice node being manipulated are passed as a bitmask. See vtkMRMLSliceNode::InteractionFlagType.

◆ StartSliceNodeInteraction()

void vtkMRMLSliceLogic::StartSliceNodeInteraction ( unsigned int parameters)

Indicate an interaction with the slice node is beginning. The parameters of the slice node being manipulated are passed as a bitmask. See vtkMRMLSliceNode::InteractionFlagType.

◆ StartSliceOffsetInteraction()

void vtkMRMLSliceLogic::StartSliceOffsetInteraction ( )

Indicate the slice offset value is starting to change.

◆ UpdateAddSubOperation()

static bool vtkMRMLSliceLogic::UpdateAddSubOperation ( vtkImageMathematics * addSubMath,
int compositing )
staticprotected

Helper to update the operation to perform based on compositing mode.

◆ UpdateBlendLayers()

static bool vtkMRMLSliceLogic::UpdateBlendLayers ( vtkImageBlend * blend,
const std::deque< SliceLayerInfo > & layers,
bool clipToBackgroundVolume )
staticprotected

Helper to update input of blend filter from a set of layers. It minimizes changes to the imaging pipeline (does not remove and re-add an input if it is not changed) because rebuilding of the pipeline is a relatively expensive operation.

◆ UpdateFractions() [1/2]

static bool vtkMRMLSliceLogic::UpdateFractions ( BlendPipeline * pipeline,
const std::vector< vtkAlgorithmOutput * > & imagePorts,
const std::vector< double > & opacities )
staticprotected

Helper to update layers opacity when adding/subtracting the background layer.

◆ UpdateFractions() [2/2]

static bool vtkMRMLSliceLogic::UpdateFractions ( vtkImageMathematics * fraction,
double opacity )
staticprotected

Helper to update layer opacity when adding/subtracting the background layer.

◆ UpdateFromMRMLScene()

void vtkMRMLSliceLogic::UpdateFromMRMLScene ( )
overrideprotectedvirtual

Called every time the scene has been significantly changed. If the scene BatchProcessState events are observed (in SetMRMLSceneInternal() ), UpdateFromMRMLScene is called after each batch process (Close, Import, Restore...). It is also being called by default when a new scene is set (SetMRMLScene).

See also
SetMRMLSceneInternal, UnobserveMRMLScene, ObserveMRMLScene

Reimplemented from vtkMRMLAbstractLogic.

◆ UpdateImageData()

void vtkMRMLSliceLogic::UpdateImageData ( )

Internally used by UpdatePipeline.

◆ UpdatePipeline()

void vtkMRMLSliceLogic::UpdatePipeline ( )

update the pipeline to reflect the current state of the nodes

◆ UpdateReconstructionSlab()

static void vtkMRMLSliceLogic::UpdateReconstructionSlab ( vtkMRMLSliceLogic * sliceLogic,
vtkMRMLSliceLayerLogic * sliceLayerLogic )
staticprotected

Helper to update reconstruction slab settings for a given layer.

◆ UpdateSliceCompositeNode()

void vtkMRMLSliceLogic::UpdateSliceCompositeNode ( )

Manage and synchronize the SliceCompositeNode.

◆ UpdateSliceNode()

void vtkMRMLSliceLogic::UpdateSliceNode ( )

Manage and synchronize the SliceNode.

◆ UpdateSliceNodeFromLayout()

void vtkMRMLSliceLogic::UpdateSliceNodeFromLayout ( )

Update slicer node given a layout name.

◆ UpdateSliceNodes()

void vtkMRMLSliceLogic::UpdateSliceNodes ( )
protected

◆ VolumeWindowLevelEditable()

bool vtkMRMLSliceLogic::VolumeWindowLevelEditable ( const char * vtkNotUsedvolumeNodeID)
inlineprotected

Deprecated. Returns true if the volume's window/level values are editable on the GUI.

Definition at line 453 of file vtkMRMLSliceLogic.h.

Member Data Documentation

◆ AddingSliceModelNodes

bool vtkMRMLSliceLogic::AddingSliceModelNodes
protected

Definition at line 467 of file vtkMRMLSliceLogic.h.

◆ ExtractModelTexture

vtkImageReslice* vtkMRMLSliceLogic::ExtractModelTexture
protected

Definition at line 474 of file vtkMRMLSliceLogic.h.

◆ ImageDataConnection

vtkAlgorithmOutput* vtkMRMLSliceLogic::ImageDataConnection
protected

Definition at line 475 of file vtkMRMLSliceLogic.h.

◆ Layers

LayerList vtkMRMLSliceLogic::Layers
protected

Definition at line 465 of file vtkMRMLSliceLogic.h.

◆ Pipeline

BlendPipeline* vtkMRMLSliceLogic::Pipeline
protected

Definition at line 472 of file vtkMRMLSliceLogic.h.

◆ PipelineUVW

BlendPipeline* vtkMRMLSliceLogic::PipelineUVW
protected

Definition at line 473 of file vtkMRMLSliceLogic.h.

◆ SLICE_INDEX_NO_VOLUME

const int vtkMRMLSliceLogic::SLICE_INDEX_NO_VOLUME
static

Definition at line 329 of file vtkMRMLSliceLogic.h.

◆ SLICE_INDEX_OUT_OF_VOLUME

const int vtkMRMLSliceLogic::SLICE_INDEX_OUT_OF_VOLUME
static

Definition at line 328 of file vtkMRMLSliceLogic.h.

◆ SLICE_INDEX_ROTATED

const int vtkMRMLSliceLogic::SLICE_INDEX_ROTATED
static

Definition at line 327 of file vtkMRMLSliceLogic.h.

◆ SLICE_MODEL_NODE_NAME_SUFFIX

const std::string vtkMRMLSliceLogic::SLICE_MODEL_NODE_NAME_SUFFIX
static

Default node name suffix for use with volume slice models to distinguish them as built in models rather than user accessible.

See also
IsSliceModelNode

Definition at line 364 of file vtkMRMLSliceLogic.h.

◆ SliceCompositeNode

vtkMRMLSliceCompositeNode* vtkMRMLSliceLogic::SliceCompositeNode
protected

Definition at line 470 of file vtkMRMLSliceLogic.h.

◆ SliceModelDisplayNode

vtkMRMLModelDisplayNode* vtkMRMLSliceLogic::SliceModelDisplayNode
protected

Definition at line 478 of file vtkMRMLSliceLogic.h.

◆ SliceModelNode

vtkMRMLModelNode* vtkMRMLSliceLogic::SliceModelNode
protected

Definition at line 477 of file vtkMRMLSliceLogic.h.

◆ SliceModelTransformNode

vtkMRMLLinearTransformNode* vtkMRMLSliceLogic::SliceModelTransformNode
protected

Definition at line 479 of file vtkMRMLSliceLogic.h.

◆ SliceNode

vtkMRMLSliceNode* vtkMRMLSliceLogic::SliceNode
protected

Definition at line 469 of file vtkMRMLSliceLogic.h.

◆ SliceSpacing

double vtkMRMLSliceLogic::SliceSpacing[3]
protected

Definition at line 480 of file vtkMRMLSliceLogic.h.


The documentation for this class was generated from the following file: