X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOGimmickView.cpp;h=29d22e3c9b8393e2f6d523fd54cddafd3ad91a99;hb=3a22e19184c369b130d4caa992a8e98e50c7a0ee;hp=30ca0d5d094b9bd430e6e1824da392bb64057bf7;hpb=a13b9d55cc9b8ca9b886e99a73946dd8eccefe65;p=creaImageIO.git diff --git a/src2/creaImageIOGimmickView.cpp b/src2/creaImageIOGimmickView.cpp index 30ca0d5..29d22e3 100644 --- a/src2/creaImageIOGimmickView.cpp +++ b/src2/creaImageIOGimmickView.cpp @@ -2,13 +2,18 @@ #include #include "boost/filesystem.hpp" -#include // JPR -#include // JPR -#include // JPR -#include +#if defined(USE_GDCM) +#include +#include +#include +#endif + +#if defined(USE_GDCM2) +#include +#endif -namespace fs = boost::filesystem; +namespace fs = boost::filesystem; namespace creaImageIO { @@ -18,21 +23,22 @@ namespace creaImageIO public: ImageExtent(const std::string& x, const std::string& y, const std::string& z, const std::string& t) { - sscanf(x.c_str(),"%d",&mExtent[0]); - sscanf(y.c_str(),"%d",&mExtent[1]); - sscanf(z.c_str(),"%d",&mExtent[2]); - sscanf(t.c_str(),"%d",&mExtent[3]); - if(x==""){mExtent[0]=1;} - if(y==""){mExtent[1]=1;} - if(z==""){mExtent[2]=1;} - if(t==""){mExtent[3]=1;} - - if (mExtent[3]>1) mDim=4; - else if (mExtent[2]>1) mDim=3; - else if (mExtent[1]>1) mDim=2; - else if (mExtent[0]>1) mDim=1; - else mDim=0; + sscanf(x.c_str(),"%d",&mExtent[0]); + sscanf(y.c_str(),"%d",&mExtent[1]); + sscanf(z.c_str(),"%d",&mExtent[2]); + sscanf(t.c_str(),"%d",&mExtent[3]); + if(x==""){mExtent[0]=1;} + if(y==""){mExtent[1]=1;} + if(z==""){mExtent[2]=1;} + if(t==""){mExtent[3]=1;} + + if (mExtent[3]>1) mDim=4; + else if (mExtent[2]>1) mDim=3; + else if (mExtent[1]>1) mDim=2; + else if (mExtent[0]>1) mDim=1; + else mDim=0; } + ///Clears the extent void Clear() { mExtent[0] = mExtent[1] = mExtent[2] = mExtent[3] = 1; } @@ -70,6 +76,7 @@ namespace creaImageIO // Anciently started the threads ... // Threads now automatically start at first image request //mReader.Start(); + } //====================================================================== @@ -121,6 +128,7 @@ namespace creaImageIO } + //====================================================================== //====================================================================== @@ -285,7 +293,7 @@ namespace creaImageIO ///Reads Images (Non Threaded) void GimmickView::ReadImagesNotThreaded(std::vector& s, std::vector im, int dimension) { - + mReader.Stop(); /* remember! #define GIMMICK_NO_IMAGE_SELECTION 0 @@ -301,13 +309,13 @@ void GimmickView::ReadImagesNotThreaded(std::vector& s, std::vect // Create the output data if (im.size()==1) { - // O0. + vtkImageData * out=vtkImageData::New(); + out->ShallowCopy(mReader.GetImage(im.front())); + s.push_back(out); } else if (im.size()>1) // Test inutile ? JPR { - // Read the FIRST image to get info ... about all the other ones. ?!? // JPR vtkImageData* first = mReader.GetImage( im.front()); - if (dimension == 2) { // n3D @@ -319,19 +327,16 @@ void GimmickView::ReadImagesNotThreaded(std::vector& s, std::vect s.push_back(out); } } - else if (dimension == 3) + else { - // n*2D to 3D :: --> NON ! Ca va tres bien pour du 2D+T (le ZSpacing, on s'en tape) - // // ne convient pas pour du n*2D a  lire comme un 3D - // // Il faut un gdcmSerieHelper ! + // n*2D to 3D vtkImageData* out = vtkImageData::New(); - out->CopyStructure(first); +// out->CopyStructure(first); out->SetScalarType(first->GetScalarType()); out->SetNumberOfScalarComponents(first->GetNumberOfScalarComponents()); int ext[6]; - //first->GetExtent(ext); // JPR + //first->GetExtent(ext); // JPR first->GetWholeExtent(ext); // renvoie egalement 0,0 en Z // JPR - // Normal : if(ext[5] == 0) { @@ -343,7 +348,7 @@ void GimmickView::ReadImagesNotThreaded(std::vector& s, std::vect } out->SetExtent(ext); - // LG : TODO : Z Spacing ? // Voir + loin // JPR + // LG : TODO : Z Spacing ? int dim[3]; first->GetDimensions(dim); @@ -365,9 +370,11 @@ void GimmickView::ReadImagesNotThreaded(std::vector& s, std::vect // Order the file name vector double spc[3]; - out->GetSpacing(spc); + first->GetSpacing(spc); spc[2]=OrderTheFileNameVector(im); + out->SetSpacing(spc); + int slice = 0; std::vector::iterator it; @@ -386,8 +393,8 @@ void GimmickView::ReadImagesNotThreaded(std::vector& s, std::vect } //====================================================================== - -double GimmickView::OrderTheFileNameVector(std::vector &im) +#if defined(USE_GDCM) + double GimmickView::OrderTheFileNameVector(std::vector &im) { double spacing=1; typedef std::vector FileList; @@ -433,6 +440,15 @@ double GimmickView::OrderTheFileNameVector(std::vector &im) } +#endif + +#if defined(USE_GDCM2) + // TO DO + double GimmickView::OrderTheFileNameVector(std::vector &im) + { + return 1; + } +#endif //====================================================================== @@ -455,10 +471,9 @@ void GimmickView::ReadImagesNotThreadedInVector(std::vector& s, s if (dimension == 2) { // n3D - std::vector::iterator it; + std::vector::iterator it; for (it=im.begin(); it!=im.end(); ++it) { - std::cout << "----------------------------------------n3D" << std::endl; vtkImageData* out = vtkImageData::New(); out->ShallowCopy(mReader.GetImage(*it)); s.push_back(out); @@ -468,15 +483,11 @@ void GimmickView::ReadImagesNotThreadedInVector(std::vector& s, s { // n2D to 3D // NO! // n *2D + T in a vector : - std::cout << "---------------------------------------- n *2D + T" << std::endl; + std::vector::iterator it; for (it=im.begin(); it!=im.end(); ++it) { - std::cout << "---------------------------------------- [" << *it << "]" << std::endl; - //vtkImageData* out = mReader.GetImage( (*it)); - //s.push_back(out); - vtkImageData* out = vtkImageData::New(); - out->ShallowCopy(mReader.GetImage(*it)); + vtkImageData* out = mReader.GetImage( (*it)); s.push_back(out); } } @@ -489,15 +500,15 @@ void GimmickView::ReadImagesNotThreadedInVector(std::vector& s, s void GimmickView::RequestReading(tree::Node* n, int prio, int selection_index, boost::shared_ptr p) { - if(!mReaderStarted) - { - mReader.Start(); - mReaderStarted=true; - } - ImageEventType t(n,selection_index); - t.pointerHolder = p; - mImageEventMap[n->GetAttribute("FullFileName")] = t; - mReader.Request(this,n->GetAttribute("FullFileName"),prio); + if(!mReaderStarted) + { + mReader.Start(); + mReaderStarted=true; + } + ImageEventType t(n,selection_index); + t.pointerHolder = p; + mImageEventMap[n->GetAttribute("FullFileName")] = t; + mReader.Request(this,n->GetAttribute("FullFileName"),prio); } //======================================================================