]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOGimmickView.h
_T
[creaImageIO.git] / src2 / creaImageIOGimmickView.h
index 9230ba38f10fece6a08cb9b70207fc00c46ce5bd..463b12a73baad29fd0b81eb7dc90f2b81224a9fd 100644 (file)
@@ -20,9 +20,8 @@
 #define GIMMICK_4D_IMAGE_SELECTION 4
 
 #define NATIVE 0
-#define _2D 2
-#define _3D 3
-
+#define _2D    2
+#define _3D    3
 
 namespace creaImageIO
 {
@@ -39,7 +38,7 @@ namespace creaImageIO
     {
     public:
       /// Ctor
-      GimmickView(Gimmick*, int number_of_threads = 0 );
+      GimmickView(boost::shared_ptr<Gimmick>, int number_of_threads = 0 );
       /// Virtual destructor
       virtual ~GimmickView();
       /// Initializes the view : 
@@ -60,8 +59,12 @@ namespace creaImageIO
       /// Finalize 
       virtual void Finalize();
 
-         //Returns the maximal priority
-         int GetMaximalPriority(){return mReader.GetMaximalPriority();}
+         ///Returns the maximal priority
+      int GetMaximalPriority(){return mReader.GetMaximalPriority();}
+
+      ///Adds the selected Images to the given vector
+      virtual void GetSelectedImagesInVector(std::vector<vtkImageData*>& s, int dim)
+       { GimmickError("INTERNAL ERROR : GetSelectedImagesInVector not implemented"); }
 
       ///Adds the selected Images to the given vector and validates to see if they comply with the given parameter (4D)
       virtual void GetSelectedImages(std::vector<vtkImageData*>& s, int dim) 
@@ -95,21 +98,29 @@ namespace creaImageIO
          virtual void SaveAs(const std::vector<std::string>& filenames)
          { GimmickError("INTERNAL ERROR : SaveAs not implemented"); }
 
+         /// No selected image
+         bool NoValidateSelected();
 
       ///Validates the dimension compliance of the images with the maximum and minimum given, and between their sizes
       bool ValidateSelected (tree::Node* sel, int min_dim, int max_dim);
-      
+
       ///Reads the vector of images, builds it in the dimension required and returns them in the supplied vector.
          void ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vector<std::string> files, int dim);
-      ///Requests the reading of an image with priority and index in the 
+
+      ///Reads the vector of images, builds it in the dimension required and returns them in the supplied vector.
+         void ReadImagesNotThreadedInVector(std::vector<vtkImageData*>& s,std::vector<std::string> files, int dim);
+
+///Requests the reading of an image with priority and index in the 
       /// current selection (-1 if not in selection)
-      void RequestReading(tree::Node* n, int prio, int selection_index , ImagePointerHolder *p);
-     
-      
+      //void RequestReading(tree::Node* n, int prio, int selection_index , ImagePointerHolder *p);
+         void RequestReading(tree::Node* n, int prio, int selection_index , boost::shared_ptr<ImagePointerHolder> p);
+
       ///Obtains the message of the state
       std::string GetMessage(){return mMess;}
-      ///Obtains the message of the state
+
+     ///Obtains the message of the state
       void SetMessage(std::string mess){mMess=mess;}
+
          ///Resets the data of the extent and begins a new selection
          void ResetExtent();
 
@@ -126,6 +137,7 @@ namespace creaImageIO
       /// Updates the TreeView of given name from level l to bottom
       /// (calls the virtual method TreeView::UpdateLevel(l))
       virtual void UpdateTreeViewLevel(const std::string&, int l);
+
          // Multi-thread image reader callback
          void OnMultiThreadImageReaderEvent(const std::string& filename,
                                       MultiThreadImageReaderUser::EventType t,
@@ -133,7 +145,6 @@ namespace creaImageIO
 
       vtkImageData* GetDefaultImage() { return mReader.GetImage(""); }
 
-
       //=============================================
       typedef boost::signal<void (bool)>  ValidationSignalType;
       typedef ValidationSignalType::slot_function_type ValidationCallbackType;
@@ -150,61 +161,65 @@ namespace creaImageIO
       void ConnectValidationObserver(ValidationCallbackType callback);
      //==================================================================
 
-         
-
        void modifyValidationSignal(bool ivalid);
 
     private:
-       
+
       /// Controller which manages the interaction with the model
-      Gimmick* mGimmick;
+      boost::shared_ptr< Gimmick> mGimmick;
+
       /// The views 
       TreeViewMapType mTreeViewMap;
+
       /// The message that results from the validation
       std::string mMess;
 
       /// Multi-thread image reader
       MultiThreadImageReader mReader;
+
       /// Internal type of image reading event
       /// If the image pointer is non null then the image is available (loaded)
       /// else it has been unloaded
       struct ImageEventType
       {
        ImageEventType( tree::Node* no = 0,   
-                       int sel_index = -1,
-                       ImagePointerHolder* ph= 0)
-         : node(no), index(sel_index),  pointerHolder(ph){}
+                       int sel_index = -1)
+//                     ImagePointerHolder* ph= 0)
+          : node(no), index(sel_index){}//,  pointerHolder(ph){}
         ImageEventType(vtkImageData* im )
          : image(im) {}
         tree::Node* node;
         vtkImageData* image;
                int index;
-               ImagePointerHolder* pointerHolder;
+               boost::shared_ptr<ImagePointerHolder> pointerHolder;
       };
       typedef std::map<std::string,ImageEventType> ImageEventTypeMap;
       /// Map of images' names to ImageEventType
       /// Used to associated a filename to a the data of a request
       ImageEventTypeMap mImageEventMap;
+
       // queue of image event 
       typedef std::deque<ImageEventType> ImageEventQueueType;
+
       //ImageEventQueueType mImageEventQueue;
 
          ///The current image extent
-         ImageExtent* mImageExtent;
+         boost::shared_ptr<ImageExtent> mImageExtent;
+
          ///The validation signal
          ValidationSignalType mValidationSignal;
+
          ///Boolean that determines if the selection is valid
          bool valid;
+
          ///Boolean that determines if the reader has been started
          bool mReaderStarted;
-      
+
        };
   // EO class GimmickView
     //=====================================================================
-  
 
  
 } // EO namespace creaImageIO
 
 // EOF