Slicer 5.12
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;
43
44// STD includes
45#include <map>
46#include <vector>
47
57class VTK_SLICER_VOLUMERENDERING_MODULE_LOGIC_EXPORT vtkSlicerVolumeRenderingLogic : public vtkSlicerModuleLogic
58{
59public:
62 void PrintSelf(ostream& os, vtkIndent indent) override;
63
68 void RegisterRenderingMethod(const char* methodName, const char* displayNodeClassName);
70 std::map<std::string, std::string> GetRenderingMethods();
75 vtkSetStringMacro(DefaultRenderingMethod);
76 vtkGetStringMacro(DefaultRenderingMethod);
77
82 vtkSetMacro(UseLinearRamp, bool);
83 vtkGetMacro(UseLinearRamp, bool);
84
97
109 vtkMRMLVolumeRenderingDisplayNode* CreateVolumeRenderingDisplayNode(const char* renderingClassName = nullptr);
110
118
122
126
130
133 void ChangeVolumeRenderingMethod(const char* displayNodeClassName = nullptr);
134
140
151
158
165 vtkMRMLLabelMapVolumeDisplayNode* labelMapDisplayNode = nullptr);
166
182 void SetThresholdToVolumeProp(double scalarRange[2], double threshold[2], vtkVolumeProperty* node, bool linearRamp = false, bool stayUpAtUpperLimit = false);
183
209 void SetWindowLevelToVolumeProp(double scalarRange[2],
210 double windowLevel[2],
211 vtkScalarsToColors* lut,
212 vtkVolumeProperty* node,
214 bool invertColormap = false);
215
219 void SetGradientOpacityToVolumeProp(double scalarRange[2], vtkVolumeProperty* node);
220
224 void SetLabelMapToVolumeProp(vtkScalarsToColors* colors, vtkVolumeProperty* node);
225
231 vtkMRMLVolumeNode* volumeNode,
232 vtkMRMLVolumePropertyNode* propNode = nullptr,
233 vtkMRMLNode* roiNode = nullptr,
234 bool createROI = true);
235
238
241
244
247
250
253
256
258
263
267
270 bool AddVolumePropertiesFromFile(const char* filename, vtkCollection* loadedNodes = nullptr);
271
275
283
297 vtkMRMLVolumePropertyNode* AddPreset(vtkMRMLVolumePropertyNode* preset, vtkImageData* icon = nullptr, bool appendToEnd = false);
298
302
305 int LoadCustomPresetsScene(const char* sceneFilePath);
306
310 static const char* GetIconVolumeReferenceRole() { return "IconVolume"; };
311
318
321 bool IsDifferentFunction(vtkPiecewiseFunction* function1, vtkPiecewiseFunction* function2) const;
322
325 bool IsDifferentFunction(vtkColorTransferFunction* function1, vtkColorTransferFunction* function2) const;
326
327 vtkSetMacro(DefaultROIClassName, std::string);
328 vtkGetMacro(DefaultROIClassName, std::string);
329
330protected:
333
334 void SetMRMLSceneInternal(vtkMRMLScene* scene) override;
335 // Register local MRML nodes
336 void RegisterNodes() override;
337
339 void ObserveMRMLScene() override;
340 void OnMRMLSceneNodeAdded(vtkMRMLNode* node) override;
342 void OnMRMLNodeModified(vtkMRMLNode* node) override;
343
344 // Update from
346
347 std::map<std::string, std::string> RenderingMethods;
355
357
358 typedef std::vector<vtkMRMLNode*> DisplayNodesType;
360
363
365
366private:
368 void operator=(const vtkSlicerVolumeRenderingLogic&) = delete;
369};
370
371#endif
WindowMappingMode
Window Scalar Mapping Modes.
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 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 SetWindowLevelToVolumeProp(double scalarRange[2], double windowLevel[2], vtkScalarsToColors *lut, vtkVolumeProperty *node, vtkImageMapToWindowLevelAddon::WindowMappingMode mode=vtkImageMapToWindowLevelAddon::Linear, bool invertColormap=false)
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