1 #include "creaImageIOSimpleView.h"
3 #include <itkImageFileReader.h>
4 #include <boost/any.hpp>
11 /// Simple Wxwidgets interface to select file(s) or directory or from creaImageIO database to display
12 class __declspec(dllexport) WxAnySimpleDlg : public wxDialog
16 WxAnySimpleDlg( wxWindow *parent,
17 wxString i_title =_T(""),
18 const std::string i_namedescp = "localdatabase_Descriptor.dscp",
19 const std::string i_namedb = "Local Database"
24 void setExts(std::vector<std::string>);
25 /// Callback to read file(s)
26 void OnReadFile(wxCommandEvent& event);
28 /// Callback to read directory, no recursive
29 void OnReadDirectory(wxCommandEvent &event);
31 /// Callback to select from creaImageIO database
32 void OnReadGimmick(wxCommandEvent &event);
34 /// return a vtkImageData vector of selected images, if available
35 std::vector<vtkImageData*> getVtkImagesSelected() {return m_Vresults;}
37 wxString getInfoImage();
40 void set(bool i_dicom){m_dicom= i_dicom;}
41 std::vector <boost::any>& getImagesSelected(){ return m_AnyImages;}
43 // return the size of readed images
44 std::vector<const size_t> getDims(){ return m_AnyDims;}
46 // return the type of readed images
47 std::vector<const std::type_info *> getTypes(){ return m_AnyType;}
49 // get an Image on wanted type
50 template <typename TImage>
51 typename TImage::Pointer getImage(boost::any i_AnyImage)
53 typedef itk::Image<TImage> ImageOut;
54 ImageOut::Pointer img = ImageOut::New();
55 img = boost::any_cast< ImageOut::Pointer>(i_AnyImage);
59 // get the images on itk type defined by user
60 template <typename TImage>
61 std::vector<typename TImage::Pointer> getTemplatedImagesSelected()
63 std::vector<typename TImage::Pointer> imgs;
64 std::vector<boost::any>::iterator it = m_AnyImages.begin();
65 for(; it != m_AnyImages.end(); it++)
67 imgs.push_back(boost::any_cast<TImage*> (*it));
75 std::vector<const size_t> m_AnyDims;
76 std::vector<const std::type_info *> m_AnyType;
77 std::vector<boost::any> m_AnyImages;
78 std::vector<std::string> m_exts;
79 std::string namedescp;
83 template <class TImage>
84 void split3Din3Dvtk(TImage* i_Img);
86 template <typename TImage>
87 void split4Din3Dvtk(TImage* i_Img);
90 /// interface to read data
92 void readImg(const std::string &i_name);
93 void readDicomImg(const std::vector<std::string> &i_names);
94 std::vector <vtkImageData*> m_Vresults;
96 const size_t getNumberOfDimensions(const std::string &i_name);
97 const std::type_info & getType(const std::string &i_name);