mColor.resize(3);
mColor[0] = mColor[1] = mColor[2] = 0;
mMeshIsUpToDate = false;
+ mBackgroundValue = 0;
+ mForegroundValue = 1;
+ mZDelta = 0;
}
//--------------------------------------------------------------------
//--------------------------------------------------------------------
clitk::DicomRT_ROI::~DicomRT_ROI()
{
-
}
//--------------------------------------------------------------------
//--------------------------------------------------------------------
+//--------------------------------------------------------------------
+void clitk::DicomRT_ROI::SetForegroundValueLabelImage(double bg)
+{
+ mForegroundValue = bg;
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+double clitk::DicomRT_ROI::GetForegroundValueLabelImage() const
+{
+ return mForegroundValue;
+}
+//--------------------------------------------------------------------
+
+
//--------------------------------------------------------------------
void clitk::DicomRT_ROI::Read(std::map<int, std::string> & rois, gdcm::SQItem * item)
{
// Read contours [Contour Sequence]
gdcm::SeqEntry * contours=item->GetSeqEntry(0x3006,0x0040);
+ bool contour_processed=false;
+ bool delta_computed=false;
+ double last_z=0;
for(gdcm::SQItem* j=contours->GetFirstSQItem(); j!=0; j=contours->GetNextSQItem()) {
- DicomRT_Contour * c = new DicomRT_Contour;
+ DicomRT_Contour::Pointer c = DicomRT_Contour::New();
bool b = c->Read(j);
- if (b) mListOfContours.push_back(c);
+ if (b) {
+ mListOfContours.push_back(c);
+ if (contour_processed) {
+ double delta=c->GetZ() - last_z;
+ if (delta_computed)
+ assert(mZDelta == delta);
+ else
+ mZDelta = delta;
+ } else
+ contour_processed=true;
+ last_z=c->GetZ();
+ }
}
}
//--------------------------------------------------------------------
return mMesh;
}
//--------------------------------------------------------------------
-
+clitk::DicomRT_Contour * clitk::DicomRT_ROI::GetContour(int n)
+{
+ return mListOfContours[n];
+}
//--------------------------------------------------------------------
void clitk::DicomRT_ROI::ComputeMesh()
{
- vtkAppendPolyData * append = vtkAppendPolyData::New();
+ vtkSmartPointer<vtkAppendPolyData> append = vtkSmartPointer<vtkAppendPolyData>::New();
for(unsigned int i=0; i<mListOfContours.size(); i++) {
append->AddInput(mListOfContours[i]->GetMesh());
}
append->Update();
- mMesh = append->GetOutput();
+
+ mMesh = vtkSmartPointer<vtkPolyData>::New();
+ mMesh->DeepCopy(append->GetOutput());
mMeshIsUpToDate = true;
}
//--------------------------------------------------------------------
//--------------------------------------------------------------------
-void clitk::DicomRT_ROI::SetFromBinaryImage(vvImage::Pointer image, int n,
+void clitk::DicomRT_ROI::SetFromBinaryImage(vvImage * image, int n,
std::string name,
std::vector<double> color,
std::string filename)
//--------------------------------------------------------------------
-const vvImage::Pointer clitk::DicomRT_ROI::GetImage() const
+vvImage * clitk::DicomRT_ROI::GetImage() const
{
return mImage;
}