69 connect(
mSlicePlaneClipper.get(), SIGNAL(slicePlaneChanged()),
this, SLOT(changedSlot()));
70 connect(
this, SIGNAL(
changed()),
this, SLOT(changedSlot()));
71 connect(
mServices->tracking().get(), SIGNAL(activeToolChanged(
const QString&)),
this, SLOT(activeToolChangedSlot()));
73 this->activeToolChangedSlot();
79 QDomElement elem = dataNode.toElement();
81 QString plane = enum2string<PLANE_TYPE>(this->
getSlicePlane());
83 elem.setAttribute(
"plane", plane);
85 elem.setAttribute(
"uids", this->getDataUids());
90 QDomElement elem = dataNode.toElement();
92 QString existingPlane = enum2string<PLANE_TYPE>(this->
getSlicePlane());
93 PLANE_TYPE newPlane = string2enum<PLANE_TYPE>(elem.attribute(
"plane", existingPlane));
96 this->
invertPlane(elem.attribute(
"invert", QString::number(this->getInvertPlane())).toInt());
97 this->setDataUids(elem.attribute(
"uids", this->getDataUids()));
100 QString InteractiveClipper::getDataUids()
102 QStringList dataUids;
103 std::map<QString, DataPtr>::iterator iter =
mDatas.begin();
104 for (; iter !=
mDatas.end(); ++iter)
106 dataUids << iter->first;
108 return dataUids.join(
" ");
111 void InteractiveClipper::setDataUids(QString uids)
113 QStringList dataUids = uids.split(
" ");
114 for(
int i = 0; i < dataUids.size(); ++i)
144 mData->clearPersistentClipPlanes();
197 mDatas[data->getUid()] = data;
205 std::map<QString, DataPtr>::iterator iter =
mDatas.find(data->getUid());
218 return mDatas.count(data->getUid());
238 std::map<QString, DataPtr>::iterator iter =
mDatas.begin();
239 for(; iter !=
mDatas.end(); ++iter)
245 std::map<QString, DataPtr>::iterator iter =
mDatas.begin();
246 for(; iter !=
mDatas.end(); ++iter)
250 void InteractiveClipper::changedSlot()
261 if (!std::count(planes.begin(), planes.end(), currentPlane))
265 currentPlane = ptCOUNT;
269 currentPlane = planes.front();
286 std::vector<PLANE_TYPE> retval;
288 for (SlicePlanesProxy::DataMap::iterator iter = data.begin(); iter != data.end(); ++iter)
290 retval.push_back(iter->first);
295 void InteractiveClipper::activeToolChangedSlot()
306 for (SlicePlanesProxy::DataMap::iterator iter = data.begin(); iter != data.end(); ++iter)
308 iter->second.mSliceProxy->setTool(tool);
void removeData(DataPtr data)
ptCORONAL
a slice seen from the front of the patient
void useActiveTool(bool on)
SlicePlaneClipperPtr mSlicePlaneClipper
boost::shared_ptr< class SlicePlanesProxy > SlicePlanesProxyPtr
std::vector< PLANE_TYPE > getAvailableSlicePlanes() const
InteractiveClipper(CoreServicesPtr services)
bool getUseClipper() const
std::map< PLANE_TYPE, DataType > DataMap
void setTool(ToolPtr tool)
ptAXIAL
a slice seen from the top of the patient
void removeAllInterActiveClipPlanes()
std::map< QString, DataPtr > getDatas()
boost::shared_ptr< class Data > DataPtr
PLANE_TYPE getPlaneType()
void saveClipPlaneToVolume()
save the current clip to image
void setData(DataPtr data)
ptSAGITTAL
a slice seen from the side of the patient
void invertPlane(bool on)
ptTOOLSIDEPLANE
z-rotated 90* relative to anyplane like side plane, but always kept oriented like the plane defined b...
boost::shared_ptr< class PatientModelService > PatientModelServicePtr
void parseXml(QDomNode dataNode)
bool getInvertPlane() const
std::map< QString, DataPtr > mDatas
void addAllInteractiveClipPlanes()
Helper class for managing a set of slice planes.
SlicePlanesProxyPtr mSlicePlanesProxy
ptRADIALPLANE
y-rotated 90* relative to anyplane (bird's view)
static SlicePlaneClipperPtr New()
CoreServicesPtr mServices
void updateClipPlanesInData()
boost::shared_ptr< class CoreServices > CoreServicesPtr
void setSlicePlane(PLANE_TYPE plane)
ptANYPLANE
a plane aligned with the tool base plane
vtkSmartPointer< class vtkPlane > vtkPlanePtr
PLANE_TYPE getSlicePlane()
bool exists(DataPtr data)
void addData(DataPtr data)
void clearClipPlanesInVolume()
clear all saved clips in the image.
ptSIDEPLANE
z-rotated 90* relative to anyplane (dual anyplane)
void addXml(QDomNode &dataNode)
Namespace for all CustusX production code.
boost::shared_ptr< class Tool > ToolPtr