]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOGimmickView.cpp
set vectors of pointers (with many memory leak) as vectors of shared_ptr
[creaImageIO.git] / src2 / creaImageIOGimmickView.cpp
index b0d9041e6c634c07dddcd73a808034aa172b77c3..c8064d5f4312a8b946bef33e2182936e7456a288 100644 (file)
@@ -1,6 +1,5 @@
 #include <creaImageIOGimmickView.h>
 #include <creaImageIOSystem.h>
-
 #include "boost/filesystem.hpp"
 
 namespace fs = boost::filesystem;
@@ -58,7 +57,7 @@ namespace creaImageIO
 
   //======================================================================
   // CTor
-  GimmickView::GimmickView(Gimmick* gimmick, int threads)
+  GimmickView::GimmickView(boost::shared_ptr<Gimmick> gimmick, int threads)
     : mGimmick(gimmick),
          mReader(threads)
   {
@@ -86,7 +85,6 @@ namespace creaImageIO
   /// 
   void GimmickView::Initialize()
   {
-       mImageExtent=0;
        mReaderStarted=false;
   }
   //======================================================================
@@ -143,7 +141,7 @@ namespace creaImageIO
   {
          if(mImageExtent!=0)
          {
-         mImageExtent=0;
+       //  mImageExtent=0;
          }
          valid=true;
   }
@@ -177,6 +175,19 @@ namespace creaImageIO
          }
   }
 
+  //======================================================================
+  /// No selected image
+  bool GimmickView::NoValidateSelected ()
+  {
+       GimmickDebugMessage(2,"Validating selected"<<std::endl);
+       std::string mMessage;
+       mMessage="Cannot have 0 images selected!";
+       valid=false;
+       modifyValidationSignal(valid);
+       SetMessage(mMessage);
+       return valid;
+  }
+
   //======================================================================
   ///Validates the dimension compliance of the images with the maximum and 
   ///minimum given, and between their sizes
@@ -192,10 +203,10 @@ namespace creaImageIO
        }
        else
        {
-       ImageExtent* ie=new ImageExtent((*sel).GetAttribute("D0028_0010"),
+               boost::shared_ptr<ImageExtent> ie=boost::shared_ptr<ImageExtent>(new ImageExtent((*sel).GetAttribute("D0028_0010"),
                                                 (*sel).GetAttribute("D0028_0011"),
                                                                         (*sel).GetAttribute("D0028_0012"), 
-                                                                        "");
+                                                                        ""));
        if(mImageExtent==0)
        {
                mImageExtent=ie;
@@ -309,7 +320,7 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vecto
                        out->SetScalarType(first->GetScalarType());
                        int ext[6];
                        first->GetExtent(ext);
-                       ext[5] = im.size();
+                       ext[5] = im.size()-1;
                        out->SetExtent(ext);
                        // LG : TODO : Z Spacing  ?
 
@@ -320,10 +331,10 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vecto
 
                        int dim[3];
                        first->GetDimensions(dim);
-                       unsigned long imsize = 
+                       unsigned long imsize = dim[0] * dim[1];/*
                                ( (unsigned long)first->GetScalarPointer(0,1,0)
                        - (unsigned long)first->GetScalarPointer(0,0,0))
-                               *dim[1];
+                               *dim[1];*/
 
                        int slice = 0;
                        std::vector<std::string>::iterator it;
@@ -337,12 +348,13 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vecto
                        //              std::cout << "src="<<src<<std::endl;
                        //              std::cout << "dst="<<dst<<std::endl;
                        //              std::cout << "siz="<<imsize<<std::endl;
+                       std::cout << slice;
                        memcpy(dst,src,imsize);
 
                        slice++;
-                               }
+                               }       
                        s.push_back(out);
-
+                               
                }
        }       
 }
@@ -351,14 +363,15 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vecto
   //======================================================================
   ///Requests the reading of an image
   void GimmickView::RequestReading(tree::Node* n, 
-                                  int prio, int selection_index, ImagePointerHolder *p)
+         int prio, int selection_index, boost::shared_ptr<ImagePointerHolder> p)
   {
          if(!mReaderStarted)
          {
                mReader.Start();
                mReaderStarted=true;
          }
-    ImageEventType t(n,selection_index, p);
+    ImageEventType t(n,selection_index);
+       t.pointerHolder = p;
     mImageEventMap[n->GetAttribute("FullFileName")] = t;    
     mReader.Request(this,n->GetAttribute("FullFileName"),prio);
   }