X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOGimmickView.cpp;h=46ab5643d04fd73baae7da439846cef77cd3dbbd;hb=6ce1377c642f91e9b173b8a5440543eb5320fcd5;hp=e8fdb5595eb5da4c9bc245842dba254b34a0dd89;hpb=a67d921cdc10d438852b48c2985f14d91320e016;p=creaImageIO.git diff --git a/src2/creaImageIOGimmickView.cpp b/src2/creaImageIOGimmickView.cpp index e8fdb55..46ab564 100644 --- a/src2/creaImageIOGimmickView.cpp +++ b/src2/creaImageIOGimmickView.cpp @@ -57,7 +57,7 @@ namespace creaImageIO //====================================================================== // CTor - GimmickView::GimmickView(Gimmick* gimmick, int threads) + GimmickView::GimmickView(boost::shared_ptr gimmick, int threads) : mGimmick(gimmick), mReader(threads) { @@ -85,7 +85,6 @@ namespace creaImageIO /// void GimmickView::Initialize() { - mImageExtent=0; mReaderStarted=false; } //====================================================================== @@ -142,7 +141,7 @@ namespace creaImageIO { if(mImageExtent!=0) { - mImageExtent=0; + mImageExtent.reset(); } valid=true; } @@ -176,6 +175,19 @@ namespace creaImageIO } } + //====================================================================== + /// No selected image + bool GimmickView::NoValidateSelected () + { + GimmickDebugMessage(2,"Validating selected"< ie=boost::shared_ptr(new ImageExtent((*sel).GetAttribute("D0028_0010"), (*sel).GetAttribute("D0028_0011"), (*sel).GetAttribute("D0028_0012"), - ""); + "")); if(mImageExtent==0) { mImageExtent=ie; @@ -247,17 +259,15 @@ namespace creaImageIO out << mImageExtent->GetDimension() << "D image " << mImageExtent->Get(0) << "x"<< mImageExtent->Get(1) << "x"<< mImageExtent->Get(2) <<" selected"; mMessage = out.str(); } - } else { mMessage="The selected images are not compatible."; valid=false; } - } + } } - modifyValidationSignal(valid); SetMessage(mMessage); return valid; @@ -269,12 +279,10 @@ namespace creaImageIO mValidationSignal(ivalid); } - //====================================================================== ///Reads Images (Non Threaded) -void GimmickView::ReadImagesNotThreaded(std::vector& s,std::vector im, int dimension) +void GimmickView::ReadImagesNotThreaded(std::vector& s, std::vector im, int dimension) { - // Create the output data if (im.size()==1) { @@ -286,13 +294,13 @@ void GimmickView::ReadImagesNotThreaded(std::vector& s,std::vecto out->ShallowCopy(mReader.GetImage(im.front())); s.push_back( out ); } - else if (im.size()>1) + else if (im.size()>1) // Test inutile ? JPR { vtkImageData* first = mReader.GetImage( im.front()); if (dimension == 2) { // n3D - std::vector::iterator it; + std::vector::iterator it; for (it=im.begin(); it!=im.end(); ++it) { vtkImageData* out = vtkImageData::New(); @@ -308,7 +316,14 @@ void GimmickView::ReadImagesNotThreaded(std::vector& s,std::vecto out->SetScalarType(first->GetScalarType()); int ext[6]; first->GetExtent(ext); - ext[5] = im.size()-1; + if(ext[5] == 0) + { + ext[5] = im.size()-1; + } + else + { + ext[5] = ext[5] * im.size()-1; // to deal with multiframes - JPR + } out->SetExtent(ext); // LG : TODO : Z Spacing ? @@ -319,7 +334,10 @@ void GimmickView::ReadImagesNotThreaded(std::vector& s,std::vecto int dim[3]; first->GetDimensions(dim); - unsigned long imsize = dim[0] * dim[1];/* + unsigned long imsize = dim[0] * dim[1]; + imsize = imsize * dim[2] ; // deal with multiframes// JPR + + /* ( (unsigned long)first->GetScalarPointer(0,1,0) - (unsigned long)first->GetScalarPointer(0,0,0)) *dim[1];*/ @@ -327,24 +345,61 @@ void GimmickView::ReadImagesNotThreaded(std::vector& s,std::vecto int slice = 0; std::vector::iterator it; for (it=im.begin(); it!=im.end(); ++it) - { - //std::cout << "copying slice "<GetScalarPointer(0,0,0); - void* dst = out->GetScalarPointer(0,0,slice); - // std::cout << "src="<ShallowCopy(mReader.GetImage(im.front())); + s.push_back( out ); + } + else if (im.size()>1) // Test inutile ? JPR + { + vtkImageData* first = mReader.GetImage( im.front()); + if (dimension == 2) + { + // n3D + std::vector::iterator it; + for (it=im.begin(); it!=im.end(); ++it) + { + vtkImageData* out = vtkImageData::New(); + out->ShallowCopy(mReader.GetImage(*it)); + s.push_back(out); + } + } + else + { + // n2D to 3D // NO! + // n *2D + T in a vector : + + std::vector::iterator it; + for (it=im.begin(); it!=im.end(); ++it) + { + vtkImageData* out = mReader.GetImage( (*it)); + s.push_back(out); + } + } + } } //====================================================================== @@ -379,10 +434,10 @@ void GimmickView::ReadImagesNotThreaded(std::vector& s,std::vecto { //What to do in this case? /* - GimmickDebugMessage(5, + GimmickDebugMessage(5, "Pushing unknown image in queue" <& s,std::vecto if (i!=mImageEventMap.end()) { GimmickDebugMessage(5, - "Putting image of file '"<second); ie.image = image; ie.pointerHolder->Set(ie.image); @@ -433,7 +488,6 @@ void GimmickView::ReadImagesNotThreaded(std::vector& s,std::vecto ie.pointerHolder->Set(GetDefaultImage()); //mImageEventMap.erase(i); } - } } @@ -443,9 +497,7 @@ void GimmickView::ReadImagesNotThreaded(std::vector& s,std::vecto void GimmickView::ConnectValidationObserver(ValidationCallbackType callback) { mValidationSignal.connect(callback); - } - + } } // EO namespace creaImageIO -