X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkDicomRT_ROI.cxx;h=0219b4aea9763c32cf05891630a2162fad38c2ef;hb=b1f5d6c99d0263700df2ddb2c6d1bf348709cd92;hp=119b63890323c4dc2fdf6f50c6eba546a2547d39;hpb=1e034c70105f0926939acaaa27ddb46e904ae8bf;p=clitk.git diff --git a/common/clitkDicomRT_ROI.cxx b/common/clitkDicomRT_ROI.cxx index 119b638..0219b4a 100644 --- a/common/clitkDicomRT_ROI.cxx +++ b/common/clitkDicomRT_ROI.cxx @@ -29,6 +29,9 @@ clitk::DicomRT_ROI::DicomRT_ROI() mColor.resize(3); mColor[0] = mColor[1] = mColor[2] = 0; mMeshIsUpToDate = false; + mBackgroundValue = 0; + mForegroundValue = 1; + mZDelta = 0; } //-------------------------------------------------------------------- @@ -36,7 +39,6 @@ clitk::DicomRT_ROI::DicomRT_ROI() //-------------------------------------------------------------------- clitk::DicomRT_ROI::~DicomRT_ROI() { - } //-------------------------------------------------------------------- @@ -68,6 +70,14 @@ const std::string & clitk::DicomRT_ROI::GetName() const //-------------------------------------------------------------------- +//-------------------------------------------------------------------- +const std::string & clitk::DicomRT_ROI::GetFilename() const +{ + return mFilename; +} +//-------------------------------------------------------------------- + + //-------------------------------------------------------------------- const std::vector & clitk::DicomRT_ROI::GetDisplayColor() const { @@ -102,6 +112,22 @@ double clitk::DicomRT_ROI::GetBackgroundValueLabelImage() const //-------------------------------------------------------------------- +//-------------------------------------------------------------------- +void clitk::DicomRT_ROI::SetForegroundValueLabelImage(double bg) +{ + mForegroundValue = bg; +} +//-------------------------------------------------------------------- + + +//-------------------------------------------------------------------- +double clitk::DicomRT_ROI::GetForegroundValueLabelImage() const +{ + return mForegroundValue; +} +//-------------------------------------------------------------------- + + //-------------------------------------------------------------------- void clitk::DicomRT_ROI::Read(std::map & rois, gdcm::SQItem * item) { @@ -121,15 +147,37 @@ void clitk::DicomRT_ROI::Read(std::map & rois, gdcm::SQItem * // 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(); + } } } //-------------------------------------------------------------------- +//-------------------------------------------------------------------- +void clitk::DicomRT_ROI::SetImage(vvImage * image) +{ + mImage = image; +} +//-------------------------------------------------------------------- + + //-------------------------------------------------------------------- vtkPolyData * clitk::DicomRT_ROI::GetMesh() { @@ -139,26 +187,32 @@ vtkPolyData * clitk::DicomRT_ROI::GetMesh() return mMesh; } //-------------------------------------------------------------------- - +clitk::DicomRT_Contour * clitk::DicomRT_ROI::GetContour(int n) +{ + return mListOfContours[n]; +} //-------------------------------------------------------------------- void clitk::DicomRT_ROI::ComputeMesh() { - vtkAppendPolyData * append = vtkAppendPolyData::New(); + vtkSmartPointer append = vtkSmartPointer::New(); for(unsigned int i=0; iAddInput(mListOfContours[i]->GetMesh()); } append->Update(); - mMesh = append->GetOutput(); + + mMesh = vtkSmartPointer::New(); + mMesh->DeepCopy(append->GetOutput()); mMeshIsUpToDate = true; } //-------------------------------------------------------------------- //-------------------------------------------------------------------- -void clitk::DicomRT_ROI::SetFromBinaryImage(vvImage::Pointer image, int n, - std::string name, - std::vector color) +void clitk::DicomRT_ROI::SetFromBinaryImage(vvImage * image, int n, + std::string name, + std::vector color, + std::string filename) { // ROI number [Referenced ROI Number] @@ -166,6 +220,7 @@ void clitk::DicomRT_ROI::SetFromBinaryImage(vvImage::Pointer image, int n, // ROI Name mName = name; + mFilename = filename; // ROI Color [ROI Display Color] mColor = color; @@ -180,7 +235,7 @@ void clitk::DicomRT_ROI::SetFromBinaryImage(vvImage::Pointer image, int n, //-------------------------------------------------------------------- -const vvImage::Pointer clitk::DicomRT_ROI::GetImage() const +vvImage * clitk::DicomRT_ROI::GetImage() const { return mImage; }