X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOGimmickView.h;h=463b12a73baad29fd0b81eb7dc90f2b81224a9fd;hb=da80530068246081505e9649523d10e8da8e6acd;hp=9230ba38f10fece6a08cb9b70207fc00c46ce5bd;hpb=96ca5a0d7b7ccd6b4291160c19afd48e3207db2a;p=creaImageIO.git diff --git a/src2/creaImageIOGimmickView.h b/src2/creaImageIOGimmickView.h index 9230ba3..463b12a 100644 --- a/src2/creaImageIOGimmickView.h +++ b/src2/creaImageIOGimmickView.h @@ -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, 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& 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& s, int dim) @@ -95,21 +98,29 @@ namespace creaImageIO virtual void SaveAs(const std::vector& 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& s,std::vector 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& s,std::vector 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 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 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 pointerHolder; }; typedef std::map 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 ImageEventQueueType; + //ImageEventQueueType mImageEventQueue; ///The current image extent - ImageExtent* mImageExtent; + boost::shared_ptr 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