+ mCurrentROIActor->SetVisible(visible);
+ mCurrentROIActor->SetContourVisible(cvisible);
+ mCurrentSlicerManager->Render();
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvToolROIManager::SaveState(std::auto_ptr<QXmlStreamWriter> & m_XmlWriter)
+{
+ // Get index of the image
+ int n = mMainWindow->GetSlicerManagers().size();
+ int index=-1;
+ for(int i=0; i<n; i++) {
+ if (mCurrentSlicerManager == mMainWindow->GetSlicerManagers()[i]) index = i;
+ }
+ if (index == -1) {
+ std::cerr << "Error while writing state for ROIManager tool no currentimage founded." << std::endl;
+ return;
+ }
+ m_XmlWriter->writeTextElement("Image_Index", QString::number(index));
+
+
+ // Write ROI
+ for(uint i=0; i<mROIActorsList.size(); i++) {
+ QSharedPointer<vvROIActor> roi = mROIActorsList[i];
+
+ m_XmlWriter->writeStartElement("ROI");
+ m_XmlWriter->writeTextElement("Image", mOpenedBinaryImageFilenames[i]);
+
+ m_XmlWriter->writeStartElement("Overlay");
+ m_XmlWriter->writeAttribute("Red", QString("%1").arg(roi->GetOverlayColor()[0]));
+ m_XmlWriter->writeAttribute("Green",QString("%1").arg(roi->GetOverlayColor()[1]));
+ m_XmlWriter->writeAttribute("Blue", QString("%1").arg(roi->GetOverlayColor()[2]));
+ m_XmlWriter->writeAttribute("Visible", QString("%1").arg(roi->IsVisible()));
+ m_XmlWriter->writeAttribute("Opacity", QString("%1").arg(roi->GetOpacity()));
+ m_XmlWriter->writeAttribute("Depth", QString("%1").arg(roi->GetDepth()));
+ m_XmlWriter->writeEndElement();
+
+ m_XmlWriter->writeStartElement("Contour");
+ m_XmlWriter->writeAttribute("Red", QString("%1").arg(roi->GetContourColor()[0]));
+ m_XmlWriter->writeAttribute("Green",QString("%1").arg(roi->GetContourColor()[1]));
+ m_XmlWriter->writeAttribute("Blue", QString("%1").arg(roi->GetContourColor()[2]));
+ m_XmlWriter->writeAttribute("Visible", QString("%1").arg(roi->IsContourVisible()));
+ m_XmlWriter->writeAttribute("Width", QString("%1").arg(roi->GetContourWidth()));
+ m_XmlWriter->writeEndElement();
+
+ m_XmlWriter->writeEndElement();
+ }
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvToolROIManager::ReadXMLInformation()
+{
+ std::string value="";
+ mInitialImageIndex = -1;
+ while (!(m_XmlReader->isEndElement() && value == GetToolName().toStdString())) {
+ m_XmlReader->readNext();
+ value = m_XmlReader->qualifiedName().toString().toStdString();
+
+ if (value == "Image_Index")
+ mInitialImageIndex = m_XmlReader->readElementText().toInt();
+
+ if (m_XmlReader->isStartElement()) {
+ if (value == "ROI") {
+ ReadXMLInformation_ROI();
+ }
+ }
+ }
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvToolROIManager::ReadXMLInformation_ROI()
+{
+ QString s;
+ std::string value="";
+ QSharedPointer<vvROIActor> param = QSharedPointer<vvROIActor>(new vvROIActor);
+ param->SetVisible(true);
+ clitk::DicomRT_ROI::Pointer roi = clitk::DicomRT_ROI::New();
+ // r->SetDisplayColor(1,1,1);
+ param->SetROI(roi);
+
+ float r=1.0,g=1.0,b=1.0;
+ float cr=1.0,cg=1.0,cb=1.0;
+ float opacity = 0.7;
+ bool visible = true;
+ bool cvisible = true;
+ int width = 1;
+ int depth=1;
+
+ while (!(m_XmlReader->isEndElement() && value == "ROI")) {
+ m_XmlReader->readNext();
+ value = m_XmlReader->qualifiedName().toString().toStdString();
+ if (value == "Image") {
+ s = m_XmlReader->readElementText();
+ }
+
+ if (value == "Overlay" && m_XmlReader->isStartElement()) {
+ QXmlStreamAttributes attributes = m_XmlReader->attributes();
+ if (!m_XmlReader->hasError())
+ r = attributes.value("Red").toString().toFloat();
+ if (!m_XmlReader->hasError())
+ g = attributes.value("Green").toString().toFloat();
+ if (!m_XmlReader->hasError())
+ b = attributes.value("Blue").toString().toFloat();
+ if (!m_XmlReader->hasError())
+ visible = attributes.value("Visible").toString().toInt();
+ if (!m_XmlReader->hasError())
+ opacity = attributes.value("Opacity").toString().toFloat();
+ if (!m_XmlReader->hasError())
+ depth = attributes.value("Depth").toString().toFloat();
+ }
+
+
+ if (value == "Contour" && m_XmlReader->isStartElement()) {
+ QXmlStreamAttributes attributes = m_XmlReader->attributes();
+ if (!m_XmlReader->hasError())
+ cr = attributes.value("Red").toString().toFloat();
+ if (!m_XmlReader->hasError())
+ cg = attributes.value("Green").toString().toFloat();
+ if (!m_XmlReader->hasError())
+ cb = attributes.value("Blue").toString().toFloat();
+ if (!m_XmlReader->hasError())
+ cvisible = attributes.value("Visible").toString().toInt();
+ if (!m_XmlReader->hasError())
+ width = attributes.value("Width").toString().toFloat();
+ }
+ param->SetOverlayColor(r,g,b);
+ param->SetVisible(visible);
+ param->SetOpacity(opacity);
+ param->SetDepth(depth);
+
+ param->SetContourColor(cr,cg,cb);
+ param->SetContourVisible(cvisible);
+ param->SetContourWidth(width);
+ }
+ mROIFilenames.push_back(s);
+ mROIActorsParamList.push_back(param);