Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
vtkSlicerVolumeRenderingLogic.h
Go to the documentation of this file.
1/*=auto=========================================================================
2
3 Portions (c) Copyright 2005 Brigham and Women's Hospital (BWH) All Rights Reserved.
4
5 See COPYRIGHT.txt
6 or http://www.slicer.org/copyright/copyright.txt for details.
7
8 Program: 3D Slicer
9 Module: $RCSfile: vtkSlicerVolumeRenderingLogic.h,v $
10 Date: $Date: 2006/01/08 04:48:05 $
11 Version: $Revision: 1.45 $
12
13=========================================================================auto=*/
14
15#ifndef __vtkSlicerVolumeRenderingLogic_h
16#define __vtkSlicerVolumeRenderingLogic_h
17
18// VolumeRendering includes
19#include "vtkSlicerVolumeRenderingModuleLogicExport.h"
21
22// Slicer includes
24
25// MRML includes
28class vtkMRMLNode;
32class vtkMRMLViewNode;
36
37// VTK includes
38class vtkColorTransferFunction;
39class vtkPiecewiseFunction;
40class vtkScalarsToColors;
41class vtkVolumeProperty;
42
43// STD includes
44#include <map>
45#include <vector>
46
56class VTK_SLICER_VOLUMERENDERING_MODULE_LOGIC_EXPORT vtkSlicerVolumeRenderingLogic : public vtkSlicerModuleLogic
57{
58public:
61 void PrintSelf(ostream& os, vtkIndent indent) override;
62
67 void RegisterRenderingMethod(const char* methodName, const char* displayNodeClassName);
69 std::map<std::string, std::string> GetRenderingMethods();
74 vtkSetStringMacro(DefaultRenderingMethod);
75 vtkGetStringMacro(DefaultRenderingMethod);
76
81 vtkSetMacro(UseLinearRamp, bool);
82 vtkGetMacro(UseLinearRamp, bool);
83
96
108 vtkMRMLVolumeRenderingDisplayNode* CreateVolumeRenderingDisplayNode(const char* renderingClassName = nullptr);
109
117
121
125
129
132 void ChangeVolumeRenderingMethod(const char* displayNodeClassName = nullptr);
133
139
150
157
164 vtkMRMLLabelMapVolumeDisplayNode* labelMapDisplayNode = nullptr);
165
181 void SetThresholdToVolumeProp(double scalarRange[2], double threshold[2], vtkVolumeProperty* node, bool linearRamp = false, bool stayUpAtUpperLimit = false);
182
205 void SetWindowLevelToVolumeProp(double scalarRange[2], double windowLevel[2], vtkScalarsToColors* lut, vtkVolumeProperty* node);
206
210 void SetGradientOpacityToVolumeProp(double scalarRange[2], vtkVolumeProperty* node);
211
215 void SetLabelMapToVolumeProp(vtkScalarsToColors* colors, vtkVolumeProperty* node);
216
222 vtkMRMLVolumeNode* volumeNode,
223 vtkMRMLVolumePropertyNode* propNode = nullptr,
224 vtkMRMLNode* roiNode = nullptr,
225 bool createROI = true);
226
229
232
235
238
241
244
247
249
254
258
261 bool AddVolumePropertiesFromFile(const char* filename, vtkCollection* loadedNodes = nullptr);
262
266
274
288 vtkMRMLVolumePropertyNode* AddPreset(vtkMRMLVolumePropertyNode* preset, vtkImageData* icon = nullptr, bool appendToEnd = false);
289
293
296 int LoadCustomPresetsScene(const char* sceneFilePath);
297
301 static const char* GetIconVolumeReferenceRole() { return "IconVolume"; };
302
309
312 bool IsDifferentFunction(vtkPiecewiseFunction* function1, vtkPiecewiseFunction* function2) const;
313
316 bool IsDifferentFunction(vtkColorTransferFunction* function1, vtkColorTransferFunction* function2) const;
317
318 vtkSetMacro(DefaultROIClassName, std::string);
319 vtkGetMacro(DefaultROIClassName, std::string);
320
321protected:
324
325 void SetMRMLSceneInternal(vtkMRMLScene* scene) override;
326 // Register local MRML nodes
327 void RegisterNodes() override;
328
330 void ObserveMRMLScene() override;
331 void OnMRMLSceneNodeAdded(vtkMRMLNode* node) override;
333 void OnMRMLNodeModified(vtkMRMLNode* node) override;
334
335 // Update from
337
338 std::map<std::string, std::string> RenderingMethods;
346
348
349 typedef std::vector<vtkMRMLNode*> DisplayNodesType;
351
354
356
357private:
359 void operator=(const vtkSlicerVolumeRenderingLogic&) = delete;
360};
361
362#endif
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
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)
bool SetRecommendedVolumeRenderingProperties(vtkMRMLVolumeRenderingDisplayNode *vrDisplayNode)
std::vector< vtkMRMLNode * > DisplayNodesType
std::map< std::string, std::string > RenderingMethods
bool AddVolumePropertiesFromFile(const char *filename, vtkCollection *loadedNodes=nullptr)
vtkMRMLVolumePropertyNode * AddPreset(vtkMRMLVolumePropertyNode *preset, vtkImageData *icon=nullptr, bool appendToEnd=false)
vtkMRMLVolumeRenderingDisplayNode * CreateDefaultVolumeRenderingNodes(vtkMRMLVolumeNode *volumeNode)
void SetMRMLSceneInternal(vtkMRMLScene *scene) override
void SetGradientOpacityToVolumeProp(double scalarRange[2], vtkVolumeProperty *node)
bool IsDifferentFunction(vtkPiecewiseFunction *function1, vtkPiecewiseFunction *function2) const
void CopyDisplayToVolumeRenderingDisplayNode(vtkMRMLVolumeRenderingDisplayNode *node, vtkMRMLVolumeDisplayNode *displayNode=nullptr)
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)
~vtkSlicerVolumeRenderingLogic() override
void RemovePreset(vtkMRMLVolumePropertyNode *preset)
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.
bool IsDifferentFunction(vtkColorTransferFunction *function1, vtkColorTransferFunction *function2) const