X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreaImageIOWxAnySimpleDlg.h;h=df248194e422405edfd7a69d4515ae6bfd69194a;hb=refs%2Fheads%2Fvtk7itk4;hp=174b6cdae4c782b2f3a7c20f783f74cd9f091de2;hpb=171a2c89c01cb4c41b8f61d700ce522039cadf4c;p=creaImageIO.git diff --git a/src/creaImageIOWxAnySimpleDlg.h b/src/creaImageIOWxAnySimpleDlg.h index 174b6cd..df24819 100644 --- a/src/creaImageIOWxAnySimpleDlg.h +++ b/src/creaImageIOWxAnySimpleDlg.h @@ -1,103 +1,162 @@ +/* +# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Santé) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# This software is governed by the CeCILL-B license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL-B +# license as circulated by CEA, CNRS and INRIA at the following URL +# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +# or in the file LICENSE.txt. +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL-B license and that you accept its terms. +# ------------------------------------------------------------------------ +*/ + + +#ifndef __creaImageWxAnySimpleDlg_h_INCLUDED__ +#define __creaImageWxAnySimpleDlg_h_INCLUDED__ #include "creaImageIOSimpleView.h" #include #include #include +#include +#include "itkImageToVTKImageFilter.h" + namespace creaImageIO { /** - * \ingroup View - */ - - /// Simple Wxwidgets interface to select file(s) or directory or from creaImageIO database to display -//EED class __declspec(dllexport) WxAnySimpleDlg : public wxDialog - class CREAIMAGEIO_EXPORT WxAnySimpleDlg : public wxDialog - { - public: - /// Ctor - WxAnySimpleDlg( wxWindow *parent, - wxString i_title =_T(""), - const std::string i_namedescp = "localdatabase_Descriptor.dscp", - const std::string i_namedb = "Local Database" - ); - - ~WxAnySimpleDlg(){}; - - void setExts(std::vector); - /// Callback to read file(s) - void OnReadFile(wxCommandEvent& event); - - /// Callback to read directory, no recursive - void OnReadDirectory(wxCommandEvent &event); - - /// Callback to select from creaImageIO database - void OnReadGimmick(wxCommandEvent &event); - - /// return a vtkImageData vector of selected images, if available - std::vector getVtkImagesSelected() {return m_Vresults;} - - wxString getInfoImage(); - - - void set(bool i_dicom){m_dicom= i_dicom;} - std::vector & getImagesSelected(){ return m_AnyImages;} - - // return the size of readed images - std::vector getDims(){ return m_AnyDims;} - - // return the type of readed images - std::vector getTypes(){ return m_AnyType;} - - // get an Image on wanted type - template - typename TImage::Pointer getImage(boost::any i_AnyImage) - { - typedef itk::Image ImageOut; - ImageOut::Pointer img = ImageOut::New(); - img = boost::any_cast< ImageOut::Pointer>(i_AnyImage); - return img; - } - - // get the images on itk type defined by user - template - std::vector getTemplatedImagesSelected() - { - std::vector imgs; - std::vector::iterator it = m_AnyImages.begin(); - for(; it != m_AnyImages.end(); it++) - { - imgs.push_back(boost::any_cast (*it)); - } - return imgs; - } - bool AllSameType(); - private: - - - std::vector m_AnyDims; - std::vector m_AnyType; - std::vector m_AnyImages; - std::vector m_exts; - std::string namedescp; - std::string namedb; - wxString infoimage; - std::string m_dir; - template - void split3Din3Dvtk(TImage* i_Img); - - template - void split4Din3Dvtk(TImage* i_Img); - - bool m_dicom; - /// interface to read data - SimpleView m_view; - void readImg(const std::string &i_name); - void readDicomImg(const std::vector &i_names); - std::vector m_Vresults; - - const size_t getNumberOfDimensions(const std::string &i_name); - const std::type_info & getType(const std::string &i_name); - }; - - -} + * \ingroup View + */ + + /// Simple Wxwidgets interface to select file(s) or directory or from creaImageIO database to display +//EED class __declspec(dllexport) WxAnySimpleDlg : public wxDialog + class CREAIMAGEIO_EXPORT WxAnySimpleDlg : public wxDialog + { + public: + /// Ctor + WxAnySimpleDlg( wxWindow *parent, + wxString i_title =_T(""), + const std::string i_namedescp = "localdatabase_Descriptor.dscp", + const std::string i_namedb = "Local Database" + ); + + ~WxAnySimpleDlg(){}; + + void setExts(std::vector); + /// Callback to read file(s) + void OnReadFile(wxCommandEvent& event); + + /// Callback to read directory, no recursive + void OnReadDirectory(wxCommandEvent &event); + + /// Callback to select from creaImageIO database + void OnReadGimmick(wxCommandEvent &event); + + /// return a vtkImageData vector of selected images, if available + std::vector getVtkImagesSelected() {return m_Vresults;} + + wxString getInfoImage(); + + void set(bool i_dicom){m_dicom= i_dicom;} + std::vector & getImagesSelected(){ return m_AnyImages;} + + // return the size of readed images + std::vector getDims(){ return m_AnyDims;} // comment out const // JPR + + // return the type of readed images + std::vector getTypes(){ return m_AnyType;} // comment out const // JPR + + // get an Image on wanted type + /* + // strange compile error, commented out on Fred's advice // JPR + template + typename TImage::Pointer getImage(boost::any i_AnyImage) + { + typedef itk::Image ImageOut; + typename ImageOut::Pointer img = ImageOut::New(); + img = boost::any_cast< ImageOut::Pointer>(i_AnyImage); + return img; + } + */ + + // get the images on itk type defined by user + template + std::vector getTemplatedImagesSelected() + { + std::vector imgs; + std::vector::iterator it = m_AnyImages.begin(); + for(; it != m_AnyImages.end(); it++) + { + imgs.push_back(boost::any_cast (*it)); + } + return imgs; + } + bool AllSameType(); + template + void split3Din3Dvtk(TImage* i_Img) + { + typedef itk::ImageToVTKImageFilter< TImage > ConnectorType; + typename ConnectorType::Pointer connector = ConnectorType::New(); + connector->SetInput(i_Img); + connector->GetImporter()->SetDataScalarTypeToUnsignedChar(); + connector->Update(); + vtkImageData *im = vtkImageData::New(); + im->ShallowCopy(connector->GetOutput()); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + im->Update(); +#else + im->Modified(); +#endif + + + m_Vresults.push_back(im); + } + + + template + void split4Din3Dvtk(TImage* i_Img); + + + private: + + // strange compile error with gcc 4.5.1-4 //JPR + std::vector m_AnyDims; //comment out const JPR + std::vector m_AnyType; //comment out const JPR + std::vector m_AnyImages; //comment out const JPR + std::vector m_exts; + std::string namedescp; + std::string namedb; + wxString infoimage; + std::string m_dir; + + + bool m_dicom; + /// interface to read data + SimpleView m_view; + void readImg(const std::string &i_name); + void readDicomImg(const std::vector &i_names); + std::vector m_Vresults; + + const size_t getNumberOfDimensions(const std::string &i_name); + const std::type_info & getType(const std::string &i_name); + }; + + +}// namespace creaImageIO +#endif //__creaImageWxAnySimpleDlg_h_INCLUDED__