X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOGimmickView.h;h=9aa507231597bc5a8460ac71274ab939e23e1291;hb=6cac83c30fb8c3cd89c41685078eccff6e952a50;hp=62dc2d12ee8df2328fecbf6aa964a306c01dc0b9;hpb=384558d116ebb2ca264900f837c4a921d695515a;p=creaImageIO.git diff --git a/src2/creaImageIOGimmickView.h b/src2/creaImageIOGimmickView.h index 62dc2d1..9aa5072 100644 --- a/src2/creaImageIOGimmickView.h +++ b/src2/creaImageIOGimmickView.h @@ -35,8 +35,6 @@ namespace creaImageIO GimmickView(Gimmick*, int number_of_threads = 0 ); /// Virtual destructor virtual ~GimmickView(); - - /// Initializes the view : /// Creates the TreeViews for all the TreeHandler of the Controller /// @@ -55,6 +53,9 @@ namespace creaImageIO /// Finalize virtual void Finalize(); + //Returns the maximal priority + int GetMaximalPriority(){return mReader.GetMaximalPriority();} + ///Returns the selected Images and validates to see if they comply with the given parameter(<4D) vtkImageData* GetSelectedImage(int dim); ///Adds the selected Images to the given vector and validates to see if they comply with the given parameter (4D) @@ -69,6 +70,21 @@ namespace creaImageIO ///Reads the vector of nodes, builds images in the dimension required and returns them in the supplied vector. void ReadImagesNotThreaded(std::vector& s,std::vector im, int dim); + ///Requests the reading of an image + void RequestReading(tree::Node* n, int prio){mReader.Request(this,n->GetAttribute("FullFileName"),prio);} + ///Adds an entry to the filename to node map + void AddEntryToMap(tree::Node* node){mImageFileNameToNode[node->GetAttribute("FullFileName")] = node;} + ///Returns true if the ImageEventQueue is empty + bool IsQueueEmpty(){return mImageEventQueue.empty();} + ///Clears the queue + void ClearQueue(){mImageEventQueue.clear();} + ///Returns the next in line EventType's image + vtkImageData* GetNextImageQueued(){return mImageEventQueue.front().image;} + ///Returns the next in line EventType's node + tree::Node* GetNextNodeQueued(){return mImageEventQueue.front().node;} + ///Unqueus the next in line EventType + void UnqueueNext(){mImageEventQueue.pop_front();} + ///Obtains the message of the state std::string GetMessage(){return mMess;} @@ -85,6 +101,10 @@ 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, + vtkImageData* image); private: /// Controller which manages the interaction with the model @@ -95,7 +115,23 @@ namespace creaImageIO std::string mMess; /// Multi-thread image reader MultiThreadImageReader mReader; - + /// Map of images' names to nodes + std::map mImageFileNameToNode; + /// type of image 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, vtkImageData* im ) + : node(no), image(im) {} + ImageEventType(vtkImageData* im ) + : image(im) {} + tree::Node* node; + vtkImageData* image; + }; + // queue of image event + typedef std::deque ImageEventQueueType; + ImageEventQueueType mImageEventQueue; }; // EO class GimmickView