]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOGimmickView.cpp
images size compatible
[creaImageIO.git] / src2 / creaImageIOGimmickView.cpp
index 3e759dd4d5b67382251a843116c95841cf499632..b213cb1e474fc50361bdd1538207eec478b6173a 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.reset();
          }
          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,8 +320,8 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vecto
                        out->SetScalarType(first->GetScalarType());
                        int ext[6];
                        first->GetExtent(ext);
-                       ext[5] = im.size();
-                       out->SetExtent(ext) -1;
+                       ext[5] = im.size()-1;
+                       out->SetExtent(ext);
                        // LG : TODO : Z Spacing  ?
 
                        out->AllocateScalars();
@@ -352,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);
   }