]> Creatis software - creaImageIO.git/blobdiff - src/creaImageIOGimmickView.cpp
bug on spacing
[creaImageIO.git] / src / creaImageIOGimmickView.cpp
index 3e1224b66c44f786abf094b46a218eb2db91f47b..76342d64da63897103dbdf17b01575d587b4341a 100644 (file)
@@ -28,20 +28,20 @@ namespace creaImageIO
   public:
     ImageExtent(const std::string& x, const std::string& y, const std::string& z, const std::string& t)
        {
-                sscanf(x.c_str(),"%d",&mExtent[0]);
-                sscanf(y.c_str(),"%d",&mExtent[1]);
-                sscanf(z.c_str(),"%d",&mExtent[2]);
-                sscanf(t.c_str(),"%d",&mExtent[3]);
-                if(x==""){mExtent[0]=1;}
-            if(y==""){mExtent[1]=1;}
-            if(z==""){mExtent[2]=1;}
-                if(t==""){mExtent[3]=1;}
-
-                if (mExtent[3]>1) mDim=4;
-                else if (mExtent[2]>1) mDim=3;
-            else if (mExtent[1]>1) mDim=2;
-            else if (mExtent[0]>1) mDim=1;
-                else mDim=0;
+               sscanf(x.c_str(),"%d",&mExtent[0]);
+               sscanf(y.c_str(),"%d",&mExtent[1]);
+               sscanf(z.c_str(),"%d",&mExtent[2]);
+               sscanf(t.c_str(),"%d",&mExtent[3]);
+               if(x==""){mExtent[0]=1;}
+               if(y==""){mExtent[1]=1;}
+               if(z==""){mExtent[2]=1;}
+               if(t==""){mExtent[3]=1;}
+
+               if (mExtent[3]>1) mDim=4;
+               else if (mExtent[2]>1) mDim=3;
+               else if (mExtent[1]>1) mDim=2;
+               else if (mExtent[0]>1) mDim=1;
+               else mDim=0;
        }
        
 
@@ -296,11 +296,16 @@ namespace creaImageIO
          mValidationSignal(ivalid);
   }
 
+  void GimmickView::stopReader()
+  {
+         mReader.Stop();
+  }
+
    //======================================================================
   ///Reads Images (Non Threaded)
 void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s, std::vector<std::string> im, int dimension)
 {
-       mReader.Stop();
+       stopReader();
 /* remember!
 
 #define GIMMICK_NO_IMAGE_SELECTION 0
@@ -490,7 +495,10 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s, std::vect
                }
                out.img->SetExtent(ext);
                int dim[3];
+               double spac[3];
                first->GetDimensions(dim);
+               first->GetSpacing(spac);
+               out.img->SetSpacing(spac);
                out.img->SetDimensions(dim[0], dim[1], im.size() );
                out.img->AllocateScalars();
                out.img->Update();
@@ -523,7 +531,9 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s, std::vect
        {
                vtkImageData* first = mReader.GetImage( im.front());
                int dim[3];
+               double spac[3];
                first->GetDimensions(dim);
+               first->GetSpacing(spac);
                // differents formats char , short, etc...
                // differents components 1..3  ex. jpg ->RGB 3
                unsigned long imsize = dim[0] * dim[1];
@@ -541,7 +551,7 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s, std::vect
                                OutStrGimmick out;
                                out.img = vtkImageData::New();
                                out.img->SetScalarType(first->GetScalarType());
-
+                               out.img->SetSpacing(spac);
                                out.img->SetNumberOfScalarComponents(first->GetNumberOfScalarComponents());
                                int ext[6];
                                first->GetWholeExtent(ext);  // send also 0,0 in Z 
@@ -584,10 +594,12 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s, std::vect
                        out.img->SetNumberOfScalarComponents(first->GetNumberOfScalarComponents());
                        
                        int ext[6];
+                       double spac[6];
                        first->GetWholeExtent(ext);  // send also 0,0 in Z 
                        ext[5] = 0;
                        out.img->SetExtent(ext);
-                       
+                       first->GetSpacing(spac);
+                       out.img->SetSpacing(spac);
                        out.img->SetDimensions(dim[0], dim[1], im.size() );
                        out.img->AllocateScalars();
                        out.img->Update();
@@ -700,6 +712,7 @@ void GimmickView::ReadImagesNotThreadedInVector(std::vector<vtkImageData*>& s, s
        }
        else if (im.size()>1) // Test inutile ? JPR
        {
+               /// \TODO fix unused variable 'first'
                vtkImageData* first = mReader.GetImage( im.front());
                if (dimension == 2)
                {