/* # --------------------------------------------------------------------- # # 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;} // 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()); im->Update(); 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__