Slicer 5.4
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
qMRMLSegmentationGeometryWidget.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Copyright (c) Laboratory for Percutaneous Surgery (PerkLab)
4 Queen's University, Kingston, ON, Canada. All Rights Reserved.
5
6 See COPYRIGHT.txt
7 or http://www.slicer.org/copyright/copyright.txt for details.
8
9 Unless required by applicable law or agreed to in writing, software
10 distributed under the License is distributed on an "AS IS" BASIS,
11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 See the License for the specific language governing permissions and
13 limitations under the License.
14
15 This file was originally developed by Csaba Pinter, PerkLab, Queen's University
16 and was supported through the Applied Cancer Research Unit program of Cancer Care
17 Ontario with funds provided by the Ontario Ministry of Health and Long-Term Care
18 and CANARIE.
19
20==============================================================================*/
21
22#ifndef __qMRMLSegmentationGeometryWidget_h
23#define __qMRMLSegmentationGeometryWidget_h
24
25// Segmentations includes
26#include "qSlicerSegmentationsModuleWidgetsExport.h"
27
28// MRMLWidgets includes
29#include "qMRMLWidget.h"
30
31// CTK includes
32#include <ctkPimpl.h>
33#include <ctkVTKObject.h>
34
36class vtkMRMLNode;
38class qMRMLSegmentationGeometryWidgetPrivate;
39
41class Q_SLICER_MODULE_SEGMENTATIONS_WIDGETS_EXPORT qMRMLSegmentationGeometryWidget : public qMRMLWidget
42{
43 Q_OBJECT
44 QVTK_OBJECT
45
46 Q_PROPERTY(bool editEnabled READ editEnabled WRITE setEditEnabled)
47 Q_PROPERTY(double oversamplingFactor READ oversamplingFactor WRITE setOversamplingFactor)
48 Q_PROPERTY(bool isotropicSpacing READ isotropicSpacing WRITE setIsotropicSpacing)
49 Q_PROPERTY(bool padSegmentation READ padSegmentation WRITE setPadSegmentation)
50
51public:
54 explicit qMRMLSegmentationGeometryWidget(QWidget* parent = nullptr);
57
59 Q_INVOKABLE vtkMRMLSegmentationNode* segmentationNode()const;
60 Q_INVOKABLE QString segmentationNodeID()const;
61
62 bool editEnabled()const;
63 vtkMRMLNode* sourceNode()const;
64 double oversamplingFactor()const;
65 bool isotropicSpacing()const;
66 bool padSegmentation()const;
67
68 void setSpacing(double aSpacing[3]);
69
71 Q_INVOKABLE void geometryImageData(vtkOrientedImageData* outputGeometry);
72
73public slots:
75 void setSegmentationNode(vtkMRMLSegmentationNode* node);
76
77 void setEditEnabled(bool aEditEnabled);
78 void setSourceNode(vtkMRMLNode* sourceNode);
79 void setOversamplingFactor(double aOversamplingFactor);
80 void setIsotropicSpacing(bool aIsotropicSpacing);
81 void setPadSegmentation(bool aPadSegmentation);
82
84 void setReferenceImageGeometryForSegmentationNode();
85
87 void resampleLabelmapsInSegmentationNode();
88
89protected slots:
91 void updateWidgetFromMRML();
92
94 void onSourceNodeChanged(vtkMRMLNode*);
95
96 void onOversamplingFactorChanged(double);
97 void onIsotropicSpacingChanged(bool);
98 void onUserSpacingChanged(double*);
99 void onPadSegmentationChanged(bool);
100
101protected:
102 QScopedPointer<qMRMLSegmentationGeometryWidgetPrivate> d_ptr;
103
104private:
105 Q_DECLARE_PRIVATE(qMRMLSegmentationGeometryWidget);
106 Q_DISABLE_COPY(qMRMLSegmentationGeometryWidget);
107};
108
109#endif
Base class for any widget that requires a MRML Scene.
Definition qMRMLWidget.h:36
Abstract Superclass for all specific types of MRML nodes.
MRML node containing segmentations.
Image data containing orientation information.