00001 00002 00003 #ifndef _VU_STANDARD_FVR_H_ 00004 #define _VU_STANDARD_FVR_H_ 00005 00006 #include "../../vuBasicUtility.h" 00007 #include "Volume/Fourier/Unimodal/3d/StandardFVR/StandardFVR.h" 00008 00009 template<int SIZE> 00010 class vuStandardFVR : public vuBasicUtility 00011 { 00012 protected: 00013 00014 enum 00015 { 00016 idFILTER, 00017 idRENDERMETHOD, 00018 idIMAGESCALE, 00019 idFITSCALE, 00020 idCHANNELS 00021 }; 00022 00023 public: 00025 vuStandardFVR(); 00026 00028 ~vuStandardFVR(); 00029 00030 virtual const char *_titleString(); 00031 00035 virtual bool init(const char* DataFile); 00036 00037 // These functions are needed by the keyframer. But since the keyframer 00038 // should work directly on the render objects and not on the GUI, these 00039 // functions should be replaced by an additional renderer-API. -ms- 00040 virtual vuCamera* getCamera(); 00041 virtual vuImage* getCurrentImage(); 00042 virtual void DrawFromImage(); 00043 virtual void DrawAgain(); 00044 00046 wxString helpText(); 00047 00048 public: 00049 //The following methods are overridden to add controls to the window. 00051 virtual void addRight(wxSizer *sizer); 00052 virtual void addBottom(wxSizer *sizer); 00053 00054 protected: 00059 bool glInit(); 00060 00064 void glRender(); 00065 00067 00068 void glResize(); 00069 00071 void onKeyboard(wxKeyEvent &event); 00072 00073 void OnChoiceRenderMethod(wxCommandEvent& event); 00074 void OnChoiceFilter(wxCommandEvent& event); 00075 void OnButtonFitScale(wxCommandEvent& event); 00076 void OnSliderImageScale(wxScrollEvent& event); 00077 void OnCheckboxChannels(wxCommandEvent& event); 00078 00079 vu1* getVolume(); 00080 00081 void _addChannelControls(wxFlexGridSizer *sizer); 00082 00083 protected: 00085 vu1712_1<SIZE> *m_Data; 00086 00087 // UI interface 00088 wxChoice *m_CHOICEfilter; 00089 wxChoice *m_CHOICErenderMethod; 00090 wxButton *m_BUTTONfitScale; 00091 wxSlider *m_SLIDERimageScale; 00092 wxCheckBox **m_CHECKBOXchannels; 00093 }; 00094 00095 template class vuStandardFVR<1>; 00096 template class vuStandardFVR<2>; 00097 template class vuStandardFVR<3>; 00098 00099 #endif /* _VU_STANDARD_FVR_H_ */