Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
qMRMLSliceControllerWidget.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Program: 3D Slicer
4
5 Copyright (c) Kitware Inc.
6
7 See COPYRIGHT.txt
8 or http://www.slicer.org/copyright/copyright.txt for details.
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15
16 This file was originally developed by Jean-Christophe Fillion-Robin, Kitware Inc.
17 and was partially funded by NIH grant 3P41RR013218-12S1
18
19==============================================================================*/
20
21#ifndef __qMRMLSliceControllerWidget_h
22#define __qMRMLSliceControllerWidget_h
23
24// qMRMLWidget includes
26#include <vtkVersion.h>
27
28class QButtonGroup;
29class QToolButton;
30class qMRMLSliceControllerWidgetPrivate;
32class vtkAlgorithmOutput;
33class vtkCollection;
34class vtkImageData;
35class vtkMRMLNode;
36class vtkMRMLScene;
40
54class QMRML_WIDGETS_EXPORT qMRMLSliceControllerWidget
56{
57 Q_OBJECT
58 Q_PROPERTY(QString sliceViewName READ sliceViewName WRITE setSliceViewName)
59 Q_PROPERTY(QString sliceViewLabel READ sliceViewLabel WRITE setSliceViewLabel)
60 Q_PROPERTY(QColor sliceViewColor READ sliceViewColor WRITE setSliceViewColor)
61 Q_PROPERTY(double sliceOffsetResolution READ sliceOffsetResolution WRITE setSliceOffsetResolution)
62 Q_PROPERTY(bool moreButtonVisibility READ isMoreButtonVisible WRITE setMoreButtonVisible)
63 Q_PROPERTY(QString sliceOrientation READ sliceOrientation WRITE setSliceOrientation)
64 Q_PROPERTY(bool showSliceOffsetSlider READ showSliceOffsetSlider WRITE setShowSliceOffsetSlider)
65public:
68
70 explicit qMRMLSliceControllerWidget(QWidget* parent = nullptr);
72
74 bool isLinked()const;
75
77 bool isCompareView()const;
78
81 QString sliceOrientation()const;
82
88 Q_INVOKABLE vtkAlgorithmOutput* imageDataConnection()const;
89
92 Q_INVOKABLE vtkMRMLSliceNode* mrmlSliceNode()const;
93
96 Q_INVOKABLE vtkMRMLSliceCompositeNode* mrmlSliceCompositeNode()const;
97
101 void setSliceViewName(const QString& newSliceViewName);
102
104 QString sliceViewName()const;
105
110 void setSliceViewLabel(const QString& newSliceViewLabel);
111
114 QString sliceViewLabel()const;
115
117 void setSliceViewColor(const QColor& newSliceViewColor);
118
120 QColor sliceViewColor()const;
121
123 Q_INVOKABLE void setSliceOffsetRange(double min, double max);
124
126 void setSliceOffsetResolution(double resolution);
127
129 double sliceOffsetResolution();
130
132 Q_INVOKABLE vtkMRMLSliceLogic* sliceLogic()const;
133
136 Q_INVOKABLE void setSliceLogic(vtkMRMLSliceLogic * newSliceLogic);
137
141 Q_INVOKABLE void setControllerButtonGroup(QButtonGroup* group);
142
146 Q_INVOKABLE void setSliceLogics(vtkCollection* logics);
147
149 Q_INVOKABLE qMRMLSliderWidget* sliceOffsetSlider();
150
152 Q_INVOKABLE QToolButton* fitToWindowToolButton();
153
155 bool showSliceOffsetSlider()const;
156
157public slots:
158
159 void setMRMLScene(vtkMRMLScene* newScene) override;
160
162 void setMRMLSliceNode(vtkMRMLSliceNode* newSliceNode);
163
165 void setImageDataConnection(vtkAlgorithmOutput* newImageDataConnection);
166
168 void setSliceViewSize(const QSize& newSize);
169
172 void fitSliceToBackground();
173
177 void setSliceOrientation(const QString& orientation);
178
180 void setShowSliceOffsetSlider(bool show);
181
183 void setSliceOffsetValue(double offset);
184
186 void trackSliceOffsetValue(double offset);
187
189 void setSliceVisible(bool visible);
190
192 void setSliceEdgeVisibility3D(bool visible);
193
195 void setSliceLink(bool linked);
196
200 void setHotLinked(bool hot);
201
202 // Advanced options
205 void setMoreButtonVisible(bool visible);
208 bool isMoreButtonVisible() const;
209
212 void moveBackgroundComboBox(bool move);
215 void updateSegmentationControlsVisibility();
216
218 void rotateSliceToLowestVolumeAxes();
219
220 void setSegmentationHidden(bool hide);
221 void setLabelMapHidden(bool hide);
222 void setForegroundHidden(bool hide);
223 void setBackgroundHidden(bool hide);
224
226 void setSegmentationOpacity(double opacity);
228 void setLabelMapOpacity(double opacity);
229 void setForegroundOpacity(double opacity);
230 void setBackgroundOpacity(double opacity);
231
233 void toggleSegmentationOutlineFill();
235 void showLabelOutline(bool show);
237 void showReformatWidget(bool show);
238 void lockReformatWidgetToCamera(bool lock);
240 void showSlabReconstructionWidget(bool show);
241 void toggleSlabReconstructionInteractive(bool interactive);
243 void setCompositing(int mode);
244 void setCompositingToAlphaBlend();
245 void setCompositingToReverseAlphaBlend();
246 void setCompositingToAdd();
247 void setCompositingToSubtract();
248 void setClipToBackground(bool enabled);
250 void setSliceSpacingMode(bool automatic);
251 void setSliceSpacing(double spacing);
252 void setSliceFOV(double fov);
253
255 void setSliceModelMode(int mode);
256 void setSliceModelModeVolumes();
257 void setSliceModelMode2D();
258 void setSliceModelMode2D_Volumes();
259 void setSliceModelModeVolumes_2D();
260 void setSliceModelModeCustom();
261
262 void setSliceModelFOV(int index, double fov);
263 void setSliceModelFOVX(double fov);
264 void setSliceModelFOVY(double fov);
265
266 void setSliceModelOrigin(int index, double fov);
267 void setSliceModelOriginX(double fov);
268 void setSliceModelOriginY(double fov);
269
270 void setSliceModelDimension(int index, int dim);
271 void setSliceModelDimensionX(int dim);
272 void setSliceModelDimensionY(int dim);
273
274 // Orientation marker
275 void setOrientationMarkerType(int type);
276 void setOrientationMarkerSize(int size);
277
278 // Ruler
279 void setRulerType(int type);
280 void setRulerColor(int color);
281
282 // Slab Reconstruction
283 void setSlabReconstructionType(int type);
284 void setSlabReconstructionThickness(double thickness);
285
286 // Lightbox
287 void setLightbox(int rows, int columns);
288 void setLightboxTo1x1();
289 void setLightboxTo1x2();
290 void setLightboxTo1x3();
291 void setLightboxTo1x4();
292 void setLightboxTo1x6();
293 void setLightboxTo1x8();
294 void setLightboxTo2x2();
295 void setLightboxTo3x3();
296 void setLightboxTo6x6();
297 // interpolation
298 void setForegroundInterpolation(bool nearestNeighbor);
299 void setBackgroundInterpolation(bool nearestNeighbor);
300
301 void updateWidgetFromMRMLView() override;
302
303signals:
305 void imageDataConnectionChanged(vtkAlgorithmOutput * imageDataConnection);
306
307 void renderRequested();
308
310 void nodeAboutToBeEdited(vtkMRMLNode* node);
311
312protected:
318 qMRMLSliceControllerWidget(qMRMLSliceControllerWidgetPrivate* obj,
319 QWidget* parent);
320
321private:
322 Q_DECLARE_PRIVATE(qMRMLSliceControllerWidget);
323 Q_DISABLE_COPY(qMRMLSliceControllerWidget);
324};
325
326#endif
Extend the ctkSliderWidget to integrate units support.
Abstract Superclass for all specific types of MRML nodes.
A set of MRML Nodes that supports serialization and undo/redo.
MRML node for storing a slice through RAS space.
Slicer logic class for slice manipulation.
MRML node for storing a slice through RAS space.