]> Creatis software - clitk.git/blobdiff - common/vvImage.cxx
Debug RTStruct conversion with empty struc
[clitk.git] / common / vvImage.cxx
index 6ba06c5a17b4b0de30d07af5eb887e13c68dce05..f75d3212267441b0ee75e2a0ffe221d00ad9066a 100644 (file)
@@ -49,6 +49,8 @@ void vvImage::Init()
   mTimeSpacing = 1;
   mTimeOrigin = 0;
   mImageDimension = 0;
+  mrange[0] = std::numeric_limits<int>::max();;//min
+  mrange[1] = std::numeric_limits<int>::min();;//max
 }
 //--------------------------------------------------------------------
 
@@ -80,7 +82,6 @@ void vvImage::AddVtkImage(vtkImageData* input)
 #else
   int* extent = input->GetInformation()->Get(vtkDataObject::DATA_EXTENT());
 #endif
-  
   if (extent[4] != extent[5])
     mImageDimension = 3;
   else if (extent[3] != extent[4])
@@ -116,15 +117,8 @@ int vvImage::GetNumberOfDimensions() const
 //--------------------------------------------------------------------
 void vvImage::GetScalarRange(double* range)
 {
-  assert(mVtkImages.size());
-  double * temp = mVtkImages[0]->GetScalarRange();
-  range[0]=temp[0];
-  range[1]=temp[1];
-  for (unsigned int i=1; i<mVtkImages.size(); i++) {
-    temp = mVtkImages[i]->GetScalarRange();
-    if (temp[0] < range[0]) range[0]=temp[0];
-    if (temp[1] > range[1]) range[1]=temp[1];
-  }
+  range[0]=mrange[0];
+  range[1]=mrange[1];
 }
 //--------------------------------------------------------------------
 
@@ -202,7 +196,7 @@ unsigned long vvImage::GetActualMemorySize()
 {
   unsigned long size = 0;
   for (unsigned int i = 0; i < mVtkImages.size(); i++) {
-    size += mVtkImages[i]->GetActualMemorySize();
+    size += mVtkImages[i]->GetActualMemorySize()*1024;
   }
   return size;
 }
@@ -267,6 +261,47 @@ const std::vector< vtkSmartPointer<vtkTransform> >& vvImage::GetTransform()
 //--------------------------------------------------------------------
 
 
+//--------------------------------------------------------------------
+void vvImage::InitializeTransform()
+{
+  for (int i = 0; i < mTransform.size(); i++)
+    mTransform[i]->Identity();
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+std::vector< std::vector<double> > vvImage::GetDirection()
+{
+  int dim = this->GetNumberOfDimensions();
+  vtkSmartPointer<vtkTransform> transform = vtkSmartPointer<vtkTransform>::New();
+  transform->Identity();
+  for (int i = 0; i < mTransform.size(); i++)
+    transform->Concatenate(this->mTransform[i]);
+
+  vtkSmartPointer<vtkMatrix4x4> matrix = transform->GetMatrix();
+  matrix->Invert();
+  std::vector<std::vector<double> > direction0;
+  for (int i = 0; i < dim; i++) {
+    if (i != 3) {
+      std::vector<double> direction1;
+      for (int j = 0; j < dim; j++) {
+        if (j != 3)
+#if VTK_MAJOR_VERSION <= 6
+          direction1.push_back((*matrix)[i][j]);
+#else
+          direction1.push_back((*matrix).GetElement(i,j));
+#endif
+      }
+      direction0.push_back(direction1);
+    }
+  }
+  return direction0;
+}
+//--------------------------------------------------------------------
+
+
+
 //--------------------------------------------------------------------
 bool vvImage::HaveSameSizeAndSpacingThan(vvImage * other)
 {