X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=src2%2FcreaImageIOWxGimmickView.cpp;h=a21617c744a831daa3727994dcbd2338e9e60a93;hb=6cac83c30fb8c3cd89c41685078eccff6e952a50;hp=5e851a398639fdffe765dd053ec163539d45e1f9;hpb=384558d116ebb2ca264900f837c4a921d695515a;p=creaImageIO.git diff --git a/src2/creaImageIOWxGimmickView.cpp b/src2/creaImageIOWxGimmickView.cpp index 5e851a3..a21617c 100644 --- a/src2/creaImageIOWxGimmickView.cpp +++ b/src2/creaImageIOWxGimmickView.cpp @@ -98,7 +98,9 @@ namespace creaImageIO //Gimmick mGimmick=gimmick; + mViewer=new WxViewer(this, wxID_ANY, wxT("Gimmick! Viewer"),wxDefaultPosition, wxDefaultSize ); + mSelectionMaxDimension= max_dim; mSelectionMinDimension= min_dim; @@ -359,12 +361,132 @@ namespace creaImageIO std::vector sel=* (std::vector *) s; bool valid=ValidateSelected(sel,mSelectionMinDimension,mSelectionMaxDimension ); mText->SetLabel(_T("Status: ")+GetMessage()); + if(valid) + { + ReadImageThreaded(sel); + } + else + { + mViewer->Hide(); + } return valid; } - //================================================= - //================================================= + //================================================== + + //================================================== + ///Reads Images (Threaded) + void WxGimmickView::ReadImageThreaded(std::vector sel) + { + int maxprio = GetMaximalPriority(); + int prio = maxprio + 2000; + + //First load the selected images + mCurImageItemToShow = sel.front(); + std::vector::iterator selected; + for(selected=sel.begin();selected!=sel.end();++selected) + { + GimmickDebugMessage(5, + "Requesting image from selected " + <<(*selected)->GetAttribute("FullFileName") + < up; + GetTreeViewMap()["Local database"]->GetNodes(up,true); + std::vector::iterator iterUp; + for(iterUp=up.begin();iterUp!=up.end();++iterUp) + { + GimmickDebugMessage(5, + "Requesting image from neighbors up " + <<(*iterUp)->GetAttribute("FullFileName") + < down; + GetTreeViewMap()["Local database"]->GetNodes(down,false); + std::vector::iterator iterDown; + for(iterDown=down.begin();iterDown!=down.end();++iterDown) + { + GimmickDebugMessage(5, + "Requesting image from neighbors down " + <<(*iterDown)->GetAttribute("FullFileName") + <GetNumberOfLevels(); + std::vector sel=GetTreeViewMap()["Local database"]->GetSelected(level+1); + GimmickDebugMessage(5, + "Processing Images. Lock Started" + <ClearImages(); + while (!IsQueueEmpty()) + { + vtkImageData* image=GetNextImageQueued(); + tree::Node* node=GetNextNodeQueued(); + if( image!=0 ) + { + bool found=false; + std::vector::iterator i; + for(i=sel.begin();i!=sel.end()&&!found;++i) + { + if((*i)==node) + { + mViewer->AddImage(image); + found=true; + } + } + UnqueueNext(); + } + } + if(!(mViewer->ImagesEmpty())) + { + mViewer->ShowImages(); + mViewer->Show(); + } + ClearQueue(); + + + MultiThreadImageReaderEventUnlock(); + GimmickDebugMessage(5, + "Processing Images. Lock Ended" + <