X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreaImageIOWxAnySimpleDlg.h;fp=src%2FcreaImageIOWxAnySimpleDlg.h;h=08ae0b090316d30ed387777e24d5849eb98d0c48;hb=d9a70eeba314e0295337364bcd88cf97cdf06b51;hp=0000000000000000000000000000000000000000;hpb=f0ea0ed08cb1c62f6cad04fdf405258f96283dc7;p=creaImageIO.git diff --git a/src/creaImageIOWxAnySimpleDlg.h b/src/creaImageIOWxAnySimpleDlg.h new file mode 100644 index 0000000..08ae0b0 --- /dev/null +++ b/src/creaImageIOWxAnySimpleDlg.h @@ -0,0 +1,101 @@ +#include "creaImageIOSimpleView.h" +#include +#include +#include +namespace creaImageIO +{ + /** + * \ingroup View + */ + + /// Simple Wxwidgets interface to select file(s) or directory or from creaImageIO database to display + class __declspec(dllexport) 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); + }; + + +}