37 #include "boost/bind.hpp" 38 #include "boost/function.hpp" 43 #include <vtkRenderWindow.h> 44 #include <vtkRenderer.h> 45 #include <vtkImageData.h> 111 #ifndef CX_VTK_OPENGL2 121 view->getRenderer()->GetActiveCamera()->SetClippingRange(0.1, 2000);
122 if (!view->getRenderWindow()->GetStereoCapableWindow())
123 view->getRenderWindow()->StereoCapableWindowOn();
128 QString index = QString::number(startIndex);
129 QColor background =
settings()->
value(
"backgroundColor").value<QColor>();
130 mView->setBackgroundColor(background);
132 view->getRenderer()->GetActiveCamera()->SetParallelProjection(
false);
135 this->initializeMultiVolume3DRepProducer();
138 mLandmarkRep->setGraphicsSize(
settings()->value(
"View3D/sphereRadius").toDouble());
139 mLandmarkRep->setLabelSize(
settings()->value(
"View3D/labelSize").toDouble());
143 connect(mPickerRep.get(), SIGNAL(pointPicked(
Vector3D)),
this, SLOT(pickerRepPointPickedSlot(
Vector3D)));
145 mPickerRep->setSphereRadius(
settings()->value(
"View3D/sphereRadius").toDouble());
146 mPickerRep->setEnabled(
false);
147 mView->addRep(mPickerRep);
148 connect(
mServices->tracking().get(), SIGNAL(activeToolChanged(
const QString&)),
this, SLOT(activeToolChangedSlot()));
149 this->activeToolChangedSlot();
154 this->updateMetricNamesRep();
158 this->toolsAvailableSlot();
163 mView->addRep(mAnnotationMarker);
170 this->setStereoEyeAngle(
settings()->value(
"View3D/eyeAngle").toDouble());
173 if(
settings()->value(
"View3D/depthPeeling").toBool())
174 this->setTranslucentRenderingToDepthPeeling(
settings()->value(
"View3D/depthPeeling").toBool());
184 mMultiVolume3DRepProducer->removeRepsFromView();
188 void ViewWrapper3D::initializeMultiVolume3DRepProducer()
191 reportError(
"Missing View in initializeMultiVolume3DRepProducer");
193 if (!mMultiVolume3DRepProducer)
196 connect(mMultiVolume3DRepProducer.get(), SIGNAL(imagesChanged()),
this, SLOT(updateView()));
197 mMultiVolume3DRepProducer->setView(mView);
200 mMultiVolume3DRepProducer->setMaxRenderSize(
settings()->value(
"View3D/maxRenderSize").toInt());
201 mMultiVolume3DRepProducer->setVisualizerType(
settings()->value(
"View3D/ImageRender3DVisualizer").
toString());
208 if (key ==
"View3D/stereoType")
212 if (key ==
"View3D/eyeAngle")
214 this->setStereoEyeAngle(
settings()->value(
"View3D/eyeAngle").toDouble());
216 if (key ==
"backgroundColor")
218 QColor background =
settings()->
value(
"backgroundColor").value<QColor>();
219 mView->setBackgroundColor(background);
221 if (( key==
"View3D/ImageRender3DVisualizer" )||( key==
"View3D/maxRenderSize" ))
223 this->initializeMultiVolume3DRepProducer();
225 if ((key ==
"View/showDataText")
226 || (key ==
"View/showOrientationAnnotation"))
230 if ((key ==
"View3D/annotationModelSize" )||( key ==
"View3D/annotationModel"))
232 QString annotationFile =
settings()->
value(
"View3D/annotationModel").toString();
234 mAnnotationMarker->setSize(
settings()->value(
"View3D/annotationModelSize").toDouble());
236 if (key ==
"View3D/showManualTool")
238 this->toolsAvailableSlot();
240 if ((key ==
"View3D/sphereRadius" )
241 ||( key ==
"View3D/labelSize" )
242 ||( key ==
"View/showLabels")
243 ||( key ==
"View/showMetricNamesInCorner"))
245 for (RepMap::iterator iter = mDataReps.begin(); iter != mDataReps.end(); ++iter)
247 this->readDataRepSettings(iter->second);
250 this->updateMetricNamesRep();
252 this->toolsAvailableSlot();
253 mLandmarkRep->setGraphicsSize(
settings()->value(
"View3D/sphereRadius").toDouble());
254 mLandmarkRep->setLabelSize(
settings()->value(
"View3D/labelSize").toDouble());
256 if (key ==
"View3D/depthPeeling")
257 this->setTranslucentRenderingToDepthPeeling(
settings()->value(
"View3D/depthPeeling").toBool());
260 void ViewWrapper3D::updateMetricNamesRep()
262 bool enabled =
settings()->
value(
"View/showMetricNamesInCorner").value<
bool>();
269 mView->addRep(mMetricNames);
277 mView->removeRep(mMetricNames);
278 mMetricNames.reset();
282 void ViewWrapper3D::pickerRepPointPickedSlot(
Vector3D p_r)
288 void ViewWrapper3D::pickerRepDataPickedSlot(QString uid)
293 void ViewWrapper3D::appendToContextMenu(QMenu& contextMenu)
295 QAction* slicePlanesAction = NULL;
296 QAction* fillSlicePlanesAction = NULL;
297 if (mSlicePlanes3DRep)
299 slicePlanesAction =
new QAction(
"Show Slice Planes", &contextMenu);
300 slicePlanesAction->setCheckable(
true);
301 slicePlanesAction->setChecked(mSlicePlanes3DRep->getProxy()->getVisible());
302 connect(slicePlanesAction, SIGNAL(triggered(
bool)),
this, SLOT(showSlicePlanesActionSlot(
bool)));
304 fillSlicePlanesAction =
new QAction(
"Fill Slice Planes", &contextMenu);
305 fillSlicePlanesAction->setCheckable(
true);
306 fillSlicePlanesAction->setEnabled(mSlicePlanes3DRep->getProxy()->getVisible());
307 fillSlicePlanesAction->setChecked(mSlicePlanes3DRep->getProxy()->getDrawPlanes());
308 connect(fillSlicePlanesAction, SIGNAL(triggered(
bool)),
this, SLOT(fillSlicePlanesActionSlot(
bool)));
311 QAction* resetCameraAction =
new QAction(
"Reset Camera (r)", &contextMenu);
312 connect(resetCameraAction, SIGNAL(triggered()),
this, SLOT(resetCameraActionSlot()));
314 QAction* centerImageAction =
new QAction(
"Center to image", &contextMenu);
315 connect(centerImageAction, SIGNAL(triggered()),
this, SLOT(centerImageActionSlot()));
317 QAction* centerToolAction =
new QAction(
"Center to tool", &contextMenu);
318 connect(centerToolAction, SIGNAL(triggered()),
this, SLOT(centerToolActionSlot()));
320 QAction* showAxesAction =
new QAction(
"Show Coordinate Axes", &contextMenu);
321 showAxesAction->setCheckable(
true);
322 showAxesAction->setChecked(mShowAxes);
323 connect(showAxesAction, SIGNAL(triggered(
bool)),
this, SLOT(showAxesActionSlot(
bool)));
325 QAction* showManualTool =
new QAction(
"Show Manual Tool 3D", &contextMenu);
326 showManualTool->setCheckable(
true);
327 showManualTool->setChecked(
settings()->value(
"View3D/showManualTool").toBool());
328 connect(showManualTool, SIGNAL(triggered(
bool)),
this, SLOT(showManualToolSlot(
bool)));
330 QAction* showOrientation =
new QAction(
"Show Orientation", &contextMenu);
331 showOrientation->setCheckable(
true);
332 showOrientation->setChecked(mAnnotationMarker->getVisible());
333 connect(showOrientation, SIGNAL(triggered(
bool)),
this, SLOT(showOrientationSlot(
bool)));
335 QAction* showToolPath =
new QAction(
"Show Tool Path", &contextMenu);
336 showToolPath->setCheckable(
true);
337 showToolPath->setChecked(
settings()->value(
"showToolPath").toBool());
338 connect(showToolPath, SIGNAL(triggered(
bool)),
this, SLOT(showToolPathSlot(
bool)));
340 QMenu* show3DSlicesMenu =
new QMenu(
"Show 3D slices");
343 QMenu* showSlicesMenu =
new QMenu(
"Slice Type", &contextMenu);
344 this->createSlicesActions(showSlicesMenu);
346 QAction* showRefTool =
new QAction(
"Show Reference Tool", &contextMenu);
347 showRefTool->setDisabled(
true);
348 showRefTool->setCheckable(
true);
352 showRefTool->setText(
"Show " + refTool->getName());
353 showRefTool->setEnabled(
true);
354 showRefTool->setChecked(
RepContainer(mView->getReps()).findFirst<ToolRep3D>(refTool) ?
true :
false);
355 connect(showRefTool, SIGNAL(toggled(
bool)),
this, SLOT(showRefToolSlot(
bool)));
358 contextMenu.addSeparator();
359 contextMenu.addMenu(show3DSlicesMenu);
360 contextMenu.addMenu(showSlicesMenu);
361 contextMenu.addSeparator();
362 contextMenu.addAction(resetCameraAction);
363 contextMenu.addAction(centerImageAction);
364 contextMenu.addAction(centerToolAction);
365 contextMenu.addAction(showAxesAction);
366 contextMenu.addAction(showOrientation);
367 contextMenu.addSeparator();
368 contextMenu.addAction(showManualTool);
369 contextMenu.addAction(showRefTool);
371 contextMenu.addAction(showToolPath);
372 contextMenu.addSeparator();
373 if (slicePlanesAction)
374 contextMenu.addAction(slicePlanesAction);
375 if (fillSlicePlanesAction)
376 contextMenu.addAction(fillSlicePlanesAction);
379 void ViewWrapper3D::createSlicesActions(QWidget* parent)
394 QString active =
mGroupData->getSliceDefinitions().toString();
396 QAction* action =
new QAction(title, parent);
397 connect(action, SIGNAL(triggered()),
this, SLOT(showSlices()));
398 action->setData(title);
399 action->setCheckable(
true);
400 action->setChecked(active == title);
402 parent->addAction(action);
406 void ViewWrapper3D::showSlices()
408 QAction* action =
dynamic_cast<QAction*
>(sender());
414 if (!action->isChecked())
426 mView->getRenderer()->SetActiveCamera(
mGroupData->getCamera3D()->getCamera());
429 this->setStereoEyeAngle(
settings()->value(
"View3D/eyeAngle").toDouble());
430 this->optionChangedSlot();
434 void ViewWrapper3D::showToolPathSlot(
bool checked)
442 activeRep3D->getTracer()->start();
446 activeRep3D->getTracer()->stop();
447 activeRep3D->getTracer()->clear();
454 void ViewWrapper3D::showAxesActionSlot(
bool checked)
456 if (mShowAxes == checked)
462 for (
unsigned i=0; i<mAxis.size(); ++i)
463 mView->removeRep(mAxis[i]->mRep);
473 axis->mRep->setAxisLength(0.12);
474 axis->mRep->setShowAxesLabels(
true);
475 axis->mRep->setCaption(
"ref",
Vector3D(1, 0, 0));
476 axis->mRep->setFontSize(0.03);
477 mAxis.push_back(axis);
480 std::vector<DataPtr> data =
mGroupData->getData();
481 for (
unsigned i = 0; i < data.size(); ++i)
484 axis->mRep->setAxisLength(0.08);
485 axis->mRep->setShowAxesLabels(
false);
486 axis->mRep->setCaption(data[i]->getName(),
Vector3D(1, 0, 0));
487 axis->mRep->setFontSize(0.03);
488 mAxis.push_back(axis);
493 TrackingService::ToolMap::iterator iter;
494 for (iter = tools.begin(); iter != tools.end(); ++iter)
499 axis->mRep->setAxisLength(0.08);
500 axis->mRep->setShowAxesLabels(
false);
501 axis->mRep->setCaption(
"t",
Vector3D(0.7, 1, 0.7));
502 axis->mRep->setFontSize(0.03);
503 axis->connectTo(tool);
506 mAxis.push_back(axis);
509 axis->mRep->setAxisLength(0.05);
510 axis->mRep->setShowAxesLabels(
false);
511 axis->mRep->setCaption(
"s",
Vector3D(1, 1, 0));
512 axis->mRep->setFontSize(0.03);
513 axis->connectTo(tool);
514 axis->mergeWith(mToolListener);
515 mAxis.push_back(axis);
518 for (
unsigned i=0; i<mAxis.size(); ++i)
519 mView->addRep(mAxis[i]->mRep);
523 void ViewWrapper3D::showManualToolSlot(
bool visible)
528 void ViewWrapper3D::showOrientationSlot(
bool visible)
534 void ViewWrapper3D::resetCameraActionSlot()
536 mView->getRenderer()->ResetCamera();
538 this->setStereoEyeAngle(
settings()->value(
"View3D/eyeAngle").toDouble());
544 camera3D->setView(mView);
549 void ViewWrapper3D::centerImageActionSlot()
555 void ViewWrapper3D::centerToolActionSlot()
558 nav->centerToTooltip();
561 void ViewWrapper3D::showSlicePlanesActionSlot(
bool checked)
563 if (!mSlicePlanes3DRep)
565 mSlicePlanes3DRep->getProxy()->setVisible(checked);
569 void ViewWrapper3D::fillSlicePlanesActionSlot(
bool checked)
571 if (!mSlicePlanes3DRep)
573 mSlicePlanes3DRep->getProxy()->setDrawPlanes(checked);
582 this->addVolumeDataRep(data);
584 this->removeVolumeDataRep(uid);
586 this->updateSlices();
591 void ViewWrapper3D::addVolumeDataRep(
DataPtr data)
598 mMultiVolume3DRepProducer->addImage(image);
602 if (!mDataReps.count(data->getUid()))
604 RepPtr rep = this->createDataRep3D(data);
607 mDataReps[data->getUid()] = rep;
614 void ViewWrapper3D::removeVolumeDataRep(QString uid)
616 mMultiVolume3DRepProducer->removeImage(uid);
617 if (mDataReps.count(uid))
619 mView->removeRep(mDataReps[uid]);
620 mDataReps.erase(uid);
629 if (boost::dynamic_pointer_cast<Mesh>(data))
632 rep->setMesh(boost::dynamic_pointer_cast<Mesh>(data));
635 else if (boost::dynamic_pointer_cast<TrackedStream>(data))
638 return this->createTrackedStreamRep(trackedStream);
652 if(!trackedStream->hasVideo())
659 if(trackedStream->is3D())
662 rep->setTrackedStream(trackedStream);
665 else if (trackedStream->is2D())
668 rep->setTrackedStream(trackedStream);
673 reportWarning(
"ViewWrapper3D::createDataRep3D. TrackedStream is not 2D or 3D");
682 if (boost::dynamic_pointer_cast<PointMetric>(data))
684 else if (boost::dynamic_pointer_cast<FrameMetric>(data))
686 else if (boost::dynamic_pointer_cast<ToolMetric>(data))
688 else if (boost::dynamic_pointer_cast<DistanceMetric>(data))
690 else if (boost::dynamic_pointer_cast<AngleMetric>(data))
692 else if (boost::dynamic_pointer_cast<PlaneMetric>(data))
694 else if (boost::dynamic_pointer_cast<DonutMetric>(data))
696 else if (boost::dynamic_pointer_cast<CustomMetric>(data))
698 else if (boost::dynamic_pointer_cast<SphereMetric>(data))
700 else if (boost::dynamic_pointer_cast<RegionOfInterestMetric>(data))
705 this->readDataRepSettings(rep);
706 rep->setDataMetric(boost::dynamic_pointer_cast<DataMetric>(data));
714 void ViewWrapper3D::readDataRepSettings(
RepPtr rep)
721 val->setShowLabel(
settings()->value(
"View/showLabels").toBool());
722 val->setLabelSize(
settings()->value(
"View3D/labelSize").toDouble());
723 val->setShowAnnotation(!
settings()->value(
"View/showMetricNamesInCorner").toBool());
736 void ViewWrapper3D::updateView()
743 this->updateMetricNamesRep();
745 mAnnotationMarker->setVisible(
settings()->value(
"View/showOrientationAnnotation").value<bool>());
750 manualToolRep->setTooltipPointColor(
settings()->value(
"View/toolTipPointColor").value<QColor>());
751 manualToolRep->setToolOffsetPointColor(
settings()->value(
"View/toolOffsetPointColor").value<QColor>());
752 manualToolRep->setToolOffsetLineColor(
settings()->value(
"View/toolOffsetLineColor").value<QColor>());
756 void ViewWrapper3D::activeImageChangedSlot(QString uid)
764 if (!std::count(images.begin(), images.end(), image))
768 void ViewWrapper3D::showRefToolSlot(
bool checked)
777 refRep->setTool(refTool);
781 mView->addRep(refRep);
784 mView->removeRep(refRep);
788 void ViewWrapper3D::updateSlices()
790 #ifndef CX_VTK_OPENGL2 792 mView->removeRep(mSlices3DRep);
803 std::vector<PLANE_TYPE> planes =
mGroupData->getSliceDefinitions().get();
806 #ifndef CX_VTK_OPENGL2 808 for (
unsigned i=0; i<planes.size(); ++i)
809 mSlices3DRep->addPlane(planes[i],
mServices->patient());
811 mSlices3DRep->setImages(images);
812 mSlices3DRep->setTool(
mServices->tracking()->getActiveTool());
813 mView->addRep(mSlices3DRep);
822 void ViewWrapper3D::activeToolChangedSlot()
825 mPickerRep->setTool(activeTool);
826 #ifndef CX_VTK_OPENGL2 828 mSlices3DRep->setTool(activeTool);
832 void ViewWrapper3D::toolsAvailableSlot()
834 std::vector<ToolRep3DPtr> reps = RepContainer::findReps<ToolRep3D>(mView->getReps());
837 TrackingService::ToolMap::iterator iter;
838 for (iter = tools.begin(); iter != tools.end(); ++iter)
846 std::vector<ToolRep3DPtr>::iterator oldRep = std::find(reps.begin(), reps.end(), toolRep);
847 if (oldRep!=reps.end())
853 mView->removeRep(toolRep);
861 toolRep->getTracer()->start();
864 toolRep->setSphereRadius(
settings()->value(
"View3D/sphereRadius").toDouble());
865 toolRep->setSphereRadiusInNormalizedViewport(
true);
867 toolRep->setTool(tool);
868 toolRep->setOffsetPointVisibleAtZeroOffset(
true);
869 mView->addRep(toolRep);
873 for (
unsigned i=0; i<reps.size(); ++i)
875 mView->removeRep(reps[i]);
879 void ViewWrapper3D::optionChangedSlot()
887 this->updateSlices();
890 void ViewWrapper3D::showLandmarks(
bool on)
892 if (mLandmarkRep->isConnectedToView(mView) == on)
897 mView->addRep(mLandmarkRep);
901 mView->removeRep(mLandmarkRep);
905 void ViewWrapper3D::showPointPickerProbe(
bool on)
907 mPickerRep->setEnabled(on);
913 mSlicePlanes3DRep->setProxy(proxy);
914 mSlicePlanes3DRep->setDynamicLabelSize(
true);
916 mSlicePlanes3DRep->getProxy()->setVisible(show);
918 mView->addRep(mSlicePlanes3DRep);
927 mView->getRenderWindow()->SetStereoTypeToCrystalEyes();
930 mView->getRenderWindow()->SetStereoTypeToInterlaced();
933 mView->getRenderWindow()->SetStereoTypeToDresden();
936 mView->getRenderWindow()->SetStereoTypeToRedBlue();
941 void ViewWrapper3D::setStereoEyeAngle(
double angle)
943 mView->getRenderer()->GetActiveCamera()->SetEyeAngle(angle);
946 void ViewWrapper3D::setTranslucentRenderingToDepthPeeling(
bool setDepthPeeling)
950 bool isDPSupported =
true;
956 reportWarning(
"GPU do not support depth peeling. Rendering of translucent surfaces is not supported");
957 isDPSupported =
false;
963 report(
"Set GPU depth peeling");
967 reportWarning(
"Error setting depth peeling. The GPU or operating system might not support it.");
bool SetupEnvironmentForDepthPeeling(vtkSmartPointer< vtkRenderWindow > renderWindow, vtkSmartPointer< vtkRenderer > renderer, int maxNoOfPeels, double occlusionRatio)
virtual QString getDataDescription()
static DataViewProperties createSlice3D()
static LandmarkRepPtr New(PatientModelServicePtr dataManager, const QString &uid="")
virtual void dataViewPropertiesChangedSlot(QString uid)
boost::shared_ptr< class ViewGroupData > ViewGroupDataPtr
ptCORONAL
a slice seen from the front of the patient
void reportError(QString msg)
static DonutMetricRepPtr New(const QString &uid="")
static RepManager * getInstance()
get the only instance of this class
boost::shared_ptr< class SlicePlanesProxy > SlicePlanesProxyPtr
boost::shared_ptr< class Stream2DRep3D > Stream2DRep3DPtr
boost::shared_ptr< class CameraControl > CameraControlPtr
boost::shared_ptr< class TrackedStream > TrackedStreamPtr
boost::shared_ptr< class VisServices > VisServicesPtr
virtual ViewPtr getView()
std::string toString(T const &value)
converts any type to a string
csSENSOR
a tools sensor space (s)
void setStereoType(int type)
static SlicePlanes3DRepPtr New(const QString &uid="")
boost::shared_ptr< class Image > ImagePtr
Superclass for ViewWrappers.
boost::shared_ptr< REP > getCachedRep(QString uid="")
virtual void setSlicePlanesProxy(SlicePlanesProxyPtr proxy)
csREF
the data reference space (r) using LPS (left-posterior-superior) coordinates.
QVariant value(const QString &key, const QVariant &defaultValue=QVariant()) const
static PlaneMetricRepPtr New(const QString &uid="")
boost::shared_ptr< class StreamRep3D > StreamRep3DPtr
ptAXIAL
a slice seen from the top of the patient
Base class for all Data Metric reps.
static AngleMetricRepPtr New(const QString &uid="")
boost::shared_ptr< class DataMetricRep > DataMetricRepPtr
Class for display of an orientation annotation cube in 3D.
virtual void settingsChangedSlot(QString key)
A data set for video streams (2D/3D).
boost::shared_ptr< class View > ViewPtr
static DataViewProperties create3D()
static Stream2DRep3DPtr New(SpaceProviderPtr spaceProvider, const QString &uid="")
void setValue(const QString &key, const QVariant &value)
virtual void setViewGroup(ViewGroupDataPtr group)
boost::shared_ptr< class Data > DataPtr
static MetricNamesRepPtr New(const QString &uid="")
static QString findConfigFolder(QString pathRelativeToConfigRoot, QString alternativeAbsolutePath="")
void streamChanged(QString uid)
void settingsChangedSlot(QString key)
ptSAGITTAL
a slice seen from the side of the patient
static PlaneTypeCollection fromString(QString input, PlaneTypeCollection defVal=PlaneTypeCollection())
void reportWarning(QString msg)
static FrameMetricRepPtr New(const QString &uid="")
ptTOOLSIDEPLANE
z-rotated 90* relative to anyplane like side plane, but always kept oriented like the plane defined b...
ViewGroupDataPtr mGroupData
Identification of a Coordinate system.
static QString findConfigFilePath(QString fileName, QString pathRelativeToConfigRoot, QString alternativeAbsolutePath="")
virtual QString getViewDescription()
static GeometricRepPtr New(const QString &uid="")
virtual void setViewGroup(ViewGroupDataPtr group)
Settings * settings()
Shortcut for accessing the settings instance.
static Slices3DRepPtr New(SharedOpenGLContextPtr context, const QString &uid)
static RegionOfInterestMetricRepPtr New(const QString &uid="")
std::map< QString, ToolPtr > ToolMap
Eigen::Vector3d Vector3D
Vector3D is a representation of a point or vector in 3D.
boost::shared_ptr< class AxisConnector > AxisConnectorPtr
ptRADIALPLANE
y-rotated 90* relative to anyplane (bird's view)
bool TurnOffDepthPeeling(vtkSmartPointer< vtkRenderWindow > renderWindow, vtkSmartPointer< vtkRenderer > renderer)
Turn off depth peeling.
QStringList getAllDataNames(DataViewProperties properties) const
static PointMetricRepPtr New(const QString &uid="")
boost::shared_ptr< class SpaceListener > SpaceListenerPtr
virtual void updateView()
static StreamRep3DPtr New(SpaceProviderPtr spaceProvider, PatientModelServicePtr patientModelService, const QString &uid="")
static PickerRepPtr New(PatientModelServicePtr dataManager, const QString &uid="")
for creating new instances
DataViewPropertiesInteractorPtr mShow3DSlicesInteractor
boost::shared_ptr< class ToolRep3D > ToolRep3DPtr
ptANYPLANE
a plane aligned with the tool base plane
ViewWrapper3D(int startIndex, ViewPtr view, VisServicesPtr services)
boost::shared_ptr< class Navigation > NavigationPtr
bool IsDepthPeelingSupported(vtkSmartPointer< vtkRenderWindow > renderWindow, vtkSmartPointer< vtkRenderer > renderer, bool doItOffScreen)
void connectContextMenu(ViewPtr view)
bool mShowPointPickerProbe
boost::shared_ptr< class Rep > RepPtr
static DistanceMetricRepPtr New(const QString &uid="")
static SphereMetricRepPtr New(const QString &uid="")
void setGraphicsSize(double size)
ptSIDEPLANE
z-rotated 90* relative to anyplane (dual anyplane)
static CustomMetricRepPtr New(const QString &uid="")
void activeImageChanged(const QString &uId)
boost::shared_ptr< class GeometricRep > GeometricRepPtr
Namespace for all CustusX production code.
boost::shared_ptr< class Tool > ToolPtr