36 #include "vtkCamera.h"
47 #include "boost/bind.hpp"
59 retval.mVolume3D =
true;
60 retval.mSlice3D =
false;
61 retval.mSlice2D =
true;
67 retval.mVolume3D =
true;
68 retval.mSlice3D =
true;
69 retval.mSlice2D =
true;
76 retval.mVolume3D =
true;
77 retval.mSlice3D =
false;
78 retval.mSlice2D =
false;
85 retval.mVolume3D =
false;
86 retval.mSlice3D =
true;
87 retval.mSlice2D =
false;
94 retval.mVolume3D =
false;
95 retval.mSlice3D =
false;
96 retval.mSlice2D =
true;
103 retval.mVolume3D =
true;
104 retval.mSlice3D =
true;
105 retval.mSlice2D =
false;
112 QDomElement elem = dataNode.toElement();
113 elem.setAttribute(
"volume3D", mVolume3D);
114 elem.setAttribute(
"slice3D", mSlice3D);
115 elem.setAttribute(
"slice2D", mSlice2D);
120 QDomElement elem = dataNode.toElement();
121 mVolume3D = elem.attribute(
"volume3D", QString::number(mVolume3D)).toInt();
122 mSlice3D = elem.attribute(
"slice3D", QString::number(mSlice3D)).toInt();
123 mSlice2D = elem.attribute(
"slice2D", QString::number(mSlice2D)).toInt();
128 return !(mVolume3D || mSlice3D || mSlice2D);
134 retval.mSlice2D = mSlice2D || rhs.mSlice2D;
135 retval.mSlice3D = mSlice3D || rhs.mSlice3D;
136 retval.mVolume3D = mVolume3D || rhs.mVolume3D;
143 retval.mSlice2D = mSlice2D && !rhs.mSlice2D;
144 retval.mSlice3D = mSlice3D && !rhs.mSlice3D;
145 retval.mVolume3D = mVolume3D && !rhs.mVolume3D;
151 if (required.mSlice2D && mSlice2D)
return true;
152 if (required.mSlice3D && mSlice3D)
return true;
153 if (required.mVolume3D && mVolume3D)
return true;
170 if (data->getType()==
"mesh")
179 if (image->getModality().toUpper().contains(
"US"))
181 if (image->getImageType().toUpper().contains(
"B-MODE"))
186 else if (image->getModality().toUpper().contains(
"MR"))
191 else if (image->getModality().toUpper().contains(
"CT"))
210 mShowLandmarks(false), mShowPointPickerProbe(false),
211 mPickerGlyph(new
Mesh(
"PickerGlyph"))
221 mVideoSource =
"active";
223 mGlobal2DZoom = mGroup2DZoom;
231 void ViewGroupData::purgeDataNotExistingInPatientModelService()
234 for (
unsigned i = 0; i < mData.size(); )
236 QString uid = mData[i].first;
237 if (!mServices->patientModelService->getData(uid))
239 if (this->contains(uid))
242 mData.erase(std::find_if(mData.begin(), mData.end(), data_equals(uid)));
249 for(
unsigned i = 0; i < purged.size(); ++i)
268 if (this->contains(uid))
272 DataAndViewProperties item(uid, properties);
274 for (
int i=
int(mData.size())-1; i>=0; --i)
278 mData.insert(mData.begin()+i+1, item);
282 if (!this->contains(uid))
283 mData.insert(mData.begin(), item);
289 if (this->contains(uid))
290 return std::find_if(mData.begin(), mData.end(), data_equals(uid))->second;
299 if (properties.
empty())
305 if (!this->contains(uid))
307 DataAndViewProperties item(uid, properties);
308 mData.push_back(item);
312 std::find_if(mData.begin(), mData.end(), data_equals(uid))->second = properties;
318 bool ViewGroupData::contains(QString uid)
const
320 return std::count_if(mData.begin(), mData.end(), data_equals(uid));
325 if (!this->contains(uid))
327 mData.erase(std::find_if(mData.begin(), mData.end(), data_equals(uid)));
334 while (!mData.empty())
338 mGroup2DZoom->set(1.0);
339 mGlobal2DZoom->set(1.0);
344 DataPtr data = mServices->patientModelService->getData(uid);
347 reportError(
"Couldn't find the data: [" + uid +
"] in the datamanager.");
355 if (mVideoSource==uid)
368 return this->getDataOfType<Data>(properties);
371 template<
class DATA_TYPE>
372 std::vector<boost::shared_ptr<DATA_TYPE> > ViewGroupData::getDataOfType(
DataViewProperties requiredProperties)
const
374 typedef boost::shared_ptr<DATA_TYPE> DATA_PTR;
375 std::vector<DATA_PTR> retval;
376 for (
unsigned i = 0; i < mData.size(); ++i)
378 DATA_PTR data = boost::dynamic_pointer_cast<DATA_TYPE>(this->
getData(mData[i].first));
384 retval.push_back(data);
391 return this->getDataOfType<Image>(properties);
396 return this->getDataOfType<Mesh>(properties);
421 return mGlobal2DZoom;
428 for (
unsigned i = 0; i < mData.size(); ++i)
432 mData[i].second.addXml(elem);
447 for (
unsigned i=0; i<dataElems.size(); ++i)
449 QDomElement elem = dataElems[i];
450 QString uid = elem.text();
473 if (mode == rsPATIENT_REGISTRATED)
int getPriority(DataPtr data)
static DataViewProperties createSlice3D()
ptCORONAL
a slice seen from the front of the patient
void reportError(QString msg)
void initializeGlobal2DZoom(SyncedValuePtr val)
CameraDataPtr getCamera3D()
void addXml(QDomNode &dataNode)
static DataViewProperties createDefault()
void dataAddedOrRemoved()
boost::shared_ptr< DataMetric > DataMetricPtr
void parseXml(QDomNode dataNode)
std::vector< QDomElement > getDuplicateElements(QString name)
boost::shared_ptr< class Image > ImagePtr
SyncedValuePtr getGroup2DZoom()
void parseXml(QDomNode dataNode)
SyncedValuePtr getGlobal2DZoom()
DataViewProperties getProperties(QString uid)
ptAXIAL
a slice seen from the top of the patient
void setProperties(QString uid, DataViewProperties properties)
static DataViewProperties createSlice2D()
void addObjectToElement(QString name, T object)
static DataViewProperties create3D()
boost::shared_ptr< class Data > DataPtr
std::vector< MeshPtr > getMeshes(DataViewProperties properties) const
ptSAGITTAL
a slice seen from the side of the patient
static PlaneTypeCollection fromString(QString input, PlaneTypeCollection defVal=PlaneTypeCollection())
void addData(QString uid)
void addDataSorted(QString uid)
add data in a predefined ordering: CT/MR/SC/US/USA/Mesh/Metrics
static SyncedValuePtr create(QVariant val=QVariant())
QDomElement addTextToElement(QString name, QString text)
Options getOptions() const
void addXml(QDomNode &dataNode)
bool containsAnyFlagsIn(DataViewProperties required) const
static DataViewProperties createFull()
std::vector< ImagePtr > getImages(DataViewProperties properties) const
void dataViewPropertiesChanged(QString uid)
static DataViewProperties createVolume3D()
bool dataTypeSort(const DataPtr data1, const DataPtr data2)
bool removeData(QString uid)
QString parseTextFromElement(QString name)
void setVideoSource(QString uid)
boost::shared_ptr< class CoreServices > CoreServicesPtr
DataViewProperties removeFlagsIn(DataViewProperties rhs) const
void parseObjectFromElement(QString name, T object)
DataViewProperties addFlagsIn(DataViewProperties rhs) const
void videoSourceChanged(QString uid)
void add(PLANE_TYPE plane)
boost::shared_ptr< class SyncedValue > SyncedValuePtr
void setRegistrationMode(REGISTRATION_STATUS mode)
ViewGroupData(CoreServicesPtr services)
std::vector< DataPtr > getData(DataViewProperties properties=DataViewProperties::createFull()) const
Base class for all Data Metrics.
bool mShowPointPickerProbe
QString getVideoSource() const
void setOptions(Options options)