15#ifndef __vtkSlicerVolumeRenderingLogic_h
16#define __vtkSlicerVolumeRenderingLogic_h
19#include "vtkSlicerVolumeRenderingModuleLogicExport.h"
38class vtkColorTransferFunction;
39class vtkPiecewiseFunction;
40class vtkScalarsToColors;
41class vtkVolumeProperty;
63 void PrintSelf(ostream& os, vtkIndent indent)
override;
70 const char* displayNodeClassName);
77 vtkSetStringMacro(DefaultRenderingMethod);
78 vtkGetStringMacro(DefaultRenderingMethod);
84 vtkSetMacro(UseLinearRamp,
bool);
85 vtkGetMacro(UseLinearRamp,
bool);
190 double scalarRange[2],
double threshold[2],
191 vtkVolumeProperty* node,
192 bool linearRamp =
false,
bool stayUpAtUpperLimit =
false);
217 double scalarRange[2],
double windowLevel[2],
218 vtkScalarsToColors* lut, vtkVolumeProperty* node);
224 double scalarRange[2], vtkVolumeProperty* node);
230 vtkScalarsToColors* colors, vtkVolumeProperty* node);
240 bool createROI=
true);
251 char *displayNodeID);
322 vtkPiecewiseFunction* function2)
const;
327 vtkColorTransferFunction* function2)
const;
329 vtkSetMacro(DefaultROIClassName, std::string);
330 vtkGetMacro(DefaultROIClassName, std::string);
MRML node for representing a volume display attributes.
Abstract Superclass for all specific types of MRML nodes.
MRML node for representing a volume display attributes.
MRML node for representing a volume (image stack).
A set of MRML Nodes that supports serialization and undo/redo.
vtkMRMLShaderPropertyNode volume shader custom code and custom uniform variables defined by users or ...
MRML node to represent a 3D view.
MRML node for representing a volume display attributes.
MRML node for representing a volume (image stack).
vtkMRMLVolumePropertyNode contains the transfer functions (scalar opacity, color and gradient opacity...
vtkMRMLVolumePropertyNode * GetPresetByName(const char *presetName)
std::map< std::string, std::string > GetRenderingMethods()
void PrintSelf(ostream &os, vtkIndent indent) override
void UpdateDisplayNodeFromVolumeNode(vtkMRMLVolumeRenderingDisplayNode *displayNode, vtkMRMLVolumeNode *volumeNode, vtkMRMLVolumePropertyNode *propNode=nullptr, vtkMRMLNode *roiNode=nullptr, bool createROI=true)
void UpdateTranferFunctionRangeFromImage(vtkMRMLVolumeRenderingDisplayNode *vspNode)
void ObserveMRMLScene() override
Reimplemented to initialize display nodes in the scene.
void SetThresholdToVolumeProp(double scalarRange[2], double threshold[2], vtkVolumeProperty *node, bool linearRamp=false, bool stayUpAtUpperLimit=false)
void OnMRMLSceneNodeAdded(vtkMRMLNode *node) override
void OnMRMLSceneNodeRemoved(vtkMRMLNode *node) override
vtkSlicerVolumeRenderingLogic()
bool LoadPresets(vtkMRMLScene *scene)
void SetWindowLevelToVolumeProp(double scalarRange[2], double windowLevel[2], vtkScalarsToColors *lut, vtkVolumeProperty *node)
void SetLabelMapToVolumeProp(vtkScalarsToColors *colors, vtkVolumeProperty *node)
vtkMRMLVolumePropertyNode * AddVolumePropertyFromFile(const char *filename)
void UpdateVolumeRenderingDisplayNode(vtkMRMLVolumeRenderingDisplayNode *node)
vtkMRMLVolumeRenderingDisplayNode * GetFirstVolumeRenderingDisplayNodeByROINode(vtkMRMLNode *roiNode)
Find the first volume rendering display node that uses the ROI.
void RegisterRenderingMethod(const char *methodName, const char *displayNodeClassName)
vtkMRMLVolumeRenderingDisplayNode * CreateVolumeRenderingDisplayNode(const char *renderingClassName=nullptr)
void AddAllVolumeRenderingDisplayNodes()
bool SetRecommendedVolumeRenderingProperties(vtkMRMLVolumeRenderingDisplayNode *vrDisplayNode)
std::vector< vtkMRMLNode * > DisplayNodesType
std::map< std::string, std::string > RenderingMethods
vtkMRMLVolumeRenderingDisplayNode * CreateDefaultVolumeRenderingNodes(vtkMRMLVolumeNode *volumeNode)
void SetMRMLSceneInternal(vtkMRMLScene *scene) override
void SetGradientOpacityToVolumeProp(double scalarRange[2], vtkVolumeProperty *node)
DisplayNodesType DisplayNodes
bool IsDifferentFunction(vtkPiecewiseFunction *function1, vtkPiecewiseFunction *function2) const
static const char * GetIconVolumeReferenceRole()
void CopyDisplayToVolumeRenderingDisplayNode(vtkMRMLVolumeRenderingDisplayNode *node, vtkMRMLVolumeDisplayNode *displayNode=nullptr)
vtkMRMLScene * PresetsScene
void CopyScalarDisplayToVolumeRenderingDisplayNode(vtkMRMLVolumeRenderingDisplayNode *volumeRenderingDisplayNode, vtkMRMLScalarVolumeDisplayNode *scalarDisplayNode=nullptr)
vtkMRMLDisplayableNode * CreateROINode(vtkMRMLVolumeRenderingDisplayNode *displayNode)
Create cropping ROI node, if does not exist yet.
vtkMRMLShaderPropertyNode * AddShaderPropertyFromFile(const char *filename)
void RemoveViewFromVolumeDisplayNodes(vtkMRMLVolumeNode *volumeNode, vtkMRMLViewNode *viewNode)
Remove ViewNode from VolumeRenderingDisplayNode for a VolumeNode,.
vtkMRMLScene * GetPresetsScene()
void CopyLabelMapDisplayToVolumeRenderingDisplayNode(vtkMRMLVolumeRenderingDisplayNode *volumeRenderingDisplayNode, vtkMRMLLabelMapVolumeDisplayNode *labelMapDisplayNode=nullptr)
void FitROIToVolume(vtkMRMLVolumeRenderingDisplayNode *vspNode)
static vtkSlicerVolumeRenderingLogic * New()
void OnMRMLNodeModified(vtkMRMLNode *node) override
int LoadCustomPresetsScene(const char *sceneFilePath)
vtkMRMLVolumeRenderingDisplayNode * GetVolumeRenderingDisplayNodeForViewNode(vtkMRMLVolumeNode *volumeNode, vtkMRMLViewNode *viewNode)
Find volume rendering display node referencing the view node and volume node.
void AddVolumeRenderingDisplayNode(vtkMRMLVolumeRenderingDisplayNode *node)
void ChangeVolumeRenderingMethod(const char *displayNodeClassName=nullptr)
std::string DefaultROIClassName
~vtkSlicerVolumeRenderingLogic() override
char * DefaultRenderingMethod
void RemovePreset(vtkMRMLVolumePropertyNode *preset)
void RemoveAllVolumeRenderingDisplayNodes()
void RemoveVolumeRenderingDisplayNode(vtkMRMLVolumeRenderingDisplayNode *node)
vtkMRMLVolumeRenderingDisplayNode * GetVolumeRenderingDisplayNodeForViewNode(vtkMRMLViewNode *viewNode)
Find volume rendering display node referencing the view node in the scene.
vtkMRMLVolumeRenderingDisplayNode * GetVolumeRenderingDisplayNodeByID(vtkMRMLVolumeNode *volumeNode, char *displayNodeID)
Find volume rendering display node reference in the volume.
vtkMRMLVolumeRenderingDisplayNode * GetFirstVolumeRenderingDisplayNode(vtkMRMLVolumeNode *volumeNode)
Find first volume rendering display node.
void AddPreset(vtkMRMLVolumePropertyNode *preset, vtkImageData *icon=nullptr, bool appendToEnd=false)
void RegisterNodes() override
bool IsDifferentFunction(vtkColorTransferFunction *function1, vtkColorTransferFunction *function2) const