]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOGimmickView.cpp
Fixed Bugs with filter. Added Layer Diagram to documentation.
[creaImageIO.git] / src2 / creaImageIOGimmickView.cpp
index a587a8d2b825e1fc45c0bea1abbf95114657be42..a1c29cea8c6fc223e86d69bb716c5b9f70a2cc1a 100644 (file)
@@ -269,8 +269,17 @@ namespace creaImageIO
       }
        
   }
+  //======================================================================
 
-
+  //======================================================================
+  ///Requests the reading of an image
+  void GimmickView::RequestReading(tree::Node* n, 
+                                  int prio, int selection_index)
+  {
+    ImageEventType t(n,0,selection_index);
+    mImageEventMap[n->GetAttribute("FullFileName")] = t;    
+    mReader.Request(this,n->GetAttribute("FullFileName"),prio);
+  }
   //======================================================================
 
   //======================================================================
@@ -279,8 +288,10 @@ namespace creaImageIO
                                MultiThreadImageReaderUser::EventType e,
                                vtkImageData* image)
   {
-    GimmickDebugMessage(5,
+    GimmickDebugMessage(7,
                        "MultiThreadImageReader event : "<<e<<std::endl);
+       if (e==ImageLoaded)
+       {
     if (filename.size()==0)
       {
        GimmickDebugMessage(5,
@@ -289,15 +300,34 @@ namespace creaImageIO
        mImageEventQueue.push_back(ImageEventType(image));
        return;
       }
-    std::map<std::string,tree::Node*>::iterator i;
-    i = mImageFileNameToNode.find(filename);
-    if (i!=mImageFileNameToNode.end())
+    ImageEventTypeMap::iterator i;
+    i = mImageEventMap.find(filename);
+    if (i!=mImageEventMap.end())
       {
        GimmickDebugMessage(5,
-                           "Pushing image of file '"<<i->second<<"' in queue"
+                           "Pushing image of file '"<<filename<<"' in queue"
                            <<std::endl);
-       mImageEventQueue.push_back(ImageEventType(i->second,image));
+       ImageEventType e(i->second);
+       e.image = image;
+       mImageEventQueue.push_back(e);
+       mImageEventMap.erase(i);
       }
+       }
+       else if (e==Error)
+       {
+               std::string mess="ERROR: MultiThreadImageReader: Cannot read image in file ";
+               mess+=filename;
+               mess+="\n";
+               GimmickMessage(1,mess);
+       }
+
+       else if (e==ImageUnloaded)
+       {
+               std::string mess="Unloaded image in file ";
+               mess+=filename;
+               mess+="\n";
+               GimmickMessage(1,mess);
+       }
   }
 
   //====================================================================