]> Creatis software - creaImageIO.git/blobdiff - src/creaImageIOGimmickView.cpp
bug on spacing
[creaImageIO.git] / src / creaImageIOGimmickView.cpp
index 2fbc2586920fd133520f917c62c7193345900ef1..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
@@ -417,7 +422,7 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s, std::vect
                vtkImageData* first = mReader.GetImage( i_file);
                int dim[3];
                first->GetDimensions(dim);
-               if (dim[3] > 1)
+               if (dim[2] > 1)
                {
                        bres = false;
                }
@@ -462,7 +467,7 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s, std::vect
                // If we want only one output information structure, we set it outside the loop
                if(!i_attr.mult)
                {
-                       getAttributes(im.front(), o_output.front().infos,i_attr);
+                       getAttributes(im.front(), o_output.front().infos, i_attr);
                }
                
        }
@@ -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 
@@ -564,7 +574,7 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s, std::vect
 
        }
 
-               //////////////////////////////////////////////////////////
+       //////////////////////////////////////////////////////////
        // create an output structure with n entries (T size) = T + n output
        //////////////////////////////////////////////////////////
        void GimmickView::readImages4(std::vector<OutStrGimmick>& o_output, std::vector<std::string> im,
@@ -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();
@@ -685,7 +697,6 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s, std::vect
 
 
 
-
 void GimmickView::ReadImagesNotThreadedInVector(std::vector<vtkImageData*>& s, std::vector<std::string> im, int dimension)
 {
        // Create the output data
@@ -701,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)
                {
@@ -927,4 +939,4 @@ void GimmickView::ReadImagesNotThreadedInVector(std::vector<vtkImageData*>& s, s
 //     }
 //}
 //
-} // EO namespace creaImageIO
\ No newline at end of file
+} // EO namespace creaImageIO