#include <vtkImageClip.h>
#include <vtkMarchingSquares.h>
#include <vtkPolyDataWriter.h>
+#include <vtkVersion.h>
-#if GDCM_MAJOR_VERSION == 2
+#if GDCM_MAJOR_VERSION >= 2
#include "gdcmAttribute.h"
#include "gdcmItem.h"
#endif
//--------------------------------------------------------------------
+//--------------------------------------------------------------------
+void clitk::DicomRT_ROI::SetROINumber(int number)
+{
+ mNumber = number;
+}
+//--------------------------------------------------------------------
+
+
//--------------------------------------------------------------------
const std::string & clitk::DicomRT_ROI::GetName() const
{
//--------------------------------------------------------------------
-#if GDCM_MAJOR_VERSION == 2
+#if GDCM_MAJOR_VERSION >= 2
bool clitk::DicomRT_ROI::Read(gdcm::Item * itemInfo, gdcm::Item * itemContour)
{
- FATAL("Error : compile vv with itk4 + external gdcm");
+ //FATAL("Error : compile vv with itk4 + external gdcm");
// Keep dicom item
mItemInfo = itemInfo;
mItemContour = itemContour;
{
gdcm::Item & j = sqi2->GetItem(i+1); // Item start at #1
DicomRT_Contour::Pointer c = DicomRT_Contour::New();
+ c->SetTransformMatrix(mTransformMatrix);
bool b = c->Read(&j);
if (b) {
mListOfContours.push_back(c);
int i=0;
for(gdcm::SQItem* j=contours->GetFirstSQItem(); j!=0; j=contours->GetNextSQItem()) {
DicomRT_Contour::Pointer c = DicomRT_Contour::New();
+ c->SetTransformMatrix(mTransformMatrix);
bool b = c->Read(j);
if (b) {
mListOfContours.push_back(c);
{
vtkSmartPointer<vtkAppendPolyData> append = vtkSmartPointer<vtkAppendPolyData>::New();
for(unsigned int i=0; i<mListOfContours.size(); i++) {
- append->AddInput(mListOfContours[i]->GetMesh());
+#if VTK_MAJOR_VERSION <= 5
+ append->AddInput(mListOfContours[i]->GetMesh());
+#else
+ append->AddInputData(mListOfContours[i]->GetMesh());
+#endif
}
append->Update();
//--------------------------------------------------------------------
-#if GDCM_MAJOR_VERSION == 2
+#if GDCM_MAJOR_VERSION >= 2
//--------------------------------------------------------------------
void clitk::DicomRT_ROI::UpdateDicomItem()
{
std::vector<double> color,
std::string filename)
{
-
// ROI number [Referenced ROI Number]
mNumber = n;
//--------------------------------------------------------------------
+//--------------------------------------------------------------------
+void clitk::DicomRT_ROI::SetTransformMatrix(vtkMatrix4x4* matrix)
+{
+ mTransformMatrix = matrix;
+}
+//--------------------------------------------------------------------
+
+
//--------------------------------------------------------------------
void clitk::DicomRT_ROI::ComputeContoursFromImage()
{
// Get initial extend for the clipping
vtkSmartPointer<vtkImageClip> clipper = vtkSmartPointer<vtkImageClip>::New();
+#if VTK_MAJOR_VERSION <= 5
clipper->SetInput(image);
+#else
+ clipper->SetInputData(image);
+#endif
+
int* extent = image->GetExtent();
DDV(extent, 6);
// std::vector<int> extend;
vtkSmartPointer<vtkMarchingSquares> squares = vtkSmartPointer<vtkMarchingSquares>::New();
+#if VTK_MAJOR_VERSION <= 5
squares->SetInput(image);
+#else
+ squares->SetInputData(image);
+#endif
squares->SetImageRange(extent[0], extent[1], extent[2], extent[3], i, i);
squares->SetValue(1, 1.0);
squares->Update();
vtkSmartPointer<vtkAppendPolyData> append = vtkSmartPointer<vtkAppendPolyData>::New();
for(unsigned int i=0; i<n; i++) {
+#if VTK_MAJOR_VERSION <= 5
append->AddInput(contours[i]);
+#else
+ append->AddInputData(contours[i]);
+#endif
}
append->Update();
// Write vtk
vtkPolyDataWriter * w = vtkPolyDataWriter::New();
+#if VTK_MAJOR_VERSION <= 5
w->SetInput(mMesh);
+#else
+ w->SetInputData(mMesh);
+#endif
w->SetFileName("toto.vtk");
w->Write();
// Get the contour
mMesh = reader->GetOutput(roiindex);
DicomRT_Contour::Pointer c = DicomRT_Contour::New();
+ c->SetTransformMatrix(mTransformMatrix);
c->SetMesh(mMesh); // FIXME no GetZ, not GetPoints
mMeshIsUpToDate = true;
mListOfContours.push_back(c);