00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00033
00034 #ifndef esve_viewers_dimn_Surface_Viewer_hxx
00035 #define esve_viewers_dimn_Surface_Viewer_hxx
00036
00037 #include <esve/viewers/dimn/Surface_Tie.hxx>
00038 #include <esve/types/quat.hxx>
00039 #include <esve/types/pure.hxx>
00040 #include <esve/types/complex.hxx>
00041 #include <string>
00042
00043 namespace esve { namespace viewers { namespace dimn {
00044
00053
00054 template< typename T_Spec >
00055 class Surface_Viewer
00056
00057 : public T_Spec::Viewer
00058 {
00059 private:
00060 typedef typename T_Spec::Viewer super ;
00061 typedef T_Spec m_Spec ;
00062 typedef typename m_Spec::Surface_Spec m_Surface_Spec ;
00063 typedef typename m_Spec::Surface m_Surface ;
00064
00065 typedef
00066 Surface_Tie<m_Surface>
00067 m_Tie ;
00068
00069 typedef typename super::Toggle m_Toggle ;
00070 typedef typename m_Surface::Facets_size_type m_size_type ;
00071
00072 Surface_Viewer( const Surface_Viewer & ) ;
00073 Surface_Viewer & operator=( const Surface_Viewer & ) ;
00074
00075 m_Surface_Spec m_surface_spec ;
00076 m_Surface m_surface ;
00077 m_Tie m_tie ;
00078 m_Toggle* m_hide_back ;
00079 components::dimn::Valuator<types::complex>* m_res_valuator ;
00080
00081 public:
00082 Surface_Viewer( int argc,
00083 char** argv,
00084 const std::string & name = "surface viewer" ) ;
00085
00086 protected:
00087 typedef m_Spec Spec ;
00088 typedef m_Surface_Spec Surface_Spec ;
00089 typedef m_Toggle Toggle ;
00090 typedef m_size_type size_type ;
00091
00092 typedef typename m_Tie::Real_Member Real_Member ;
00093 typedef typename m_Tie::Real_Reader Real_Reader ;
00094 typedef typename m_Tie::Real_Writer Real_Writer ;
00095
00096 typedef typename m_Tie::Complex_Member Complex_Member ;
00097 typedef typename m_Tie::Complex_Reader Complex_Reader ;
00098 typedef typename m_Tie::Complex_Writer Complex_Writer ;
00099
00100 typedef typename m_Tie::Pure_Member Pure_Member ;
00101 typedef typename m_Tie::Pure_Reader Pure_Reader ;
00102 typedef typename m_Tie::Pure_Writer Pure_Writer ;
00103
00104 typedef typename m_Tie::Quat_Member Quat_Member ;
00105 typedef typename m_Tie::Quat_Reader Quat_Reader ;
00106 typedef typename m_Tie::Quat_Writer Quat_Writer ;
00107
00108 static const Valuator_Effect CHANGES_DOMAIN =
00109 valuator_effect::CHANGES_DOMAIN ;
00110
00111 static const Valuator_Effect CHANGES_DOMAIN_CLIP =
00112 valuator_effect::CHANGES_DOMAIN_CLIP ;
00113
00114 static const Valuator_Effect CHANGES_SURFACE =
00115 valuator_effect::CHANGES_SURFACE ;
00116
00117 static const Valuator_Effect CHANGES_SURFACE_CLIP =
00118 valuator_effect::CHANGES_SURFACE_CLIP ;
00119
00120 static const Valuator_Effect CHANGES_COLOR =
00121 valuator_effect::CHANGES_COLOR ;
00122
00123 components::dimn::Valuator<types::real> &
00124 create_valuator( Real_Member member,
00125 Valuator_Effect effect,
00126 const std::string & name = "" )
00127 {
00128 return m_tie.create_valuator(member, effect, name) ;
00129 }
00130
00131 components::dimn::Valuator<types::real> &
00132 create_valuator( Real_Reader reader,
00133 Real_Writer writer,
00134 Valuator_Effect effect,
00135 const std::string & name = "" )
00136 {
00137 return m_tie.create_valuator(reader, writer, effect, name) ;
00138 }
00139
00140 components::dimn::Valuator<types::complex> &
00141 create_valuator( Complex_Member member,
00142 Valuator_Effect effect,
00143 const std::string & name = "" )
00144 {
00145 return m_tie.create_valuator(member, effect, name) ;
00146 }
00147
00148 components::dimn::Valuator<types::complex> &
00149 create_valuator( Complex_Reader reader,
00150 Complex_Writer writer,
00151 Valuator_Effect effect,
00152 const std::string & name = "" )
00153 {
00154 return m_tie.create_valuator(reader, writer, effect, name) ;
00155 }
00156
00157 components::dimn::Valuator<types::pure> &
00158 create_valuator( Pure_Member member,
00159 Valuator_Effect effect,
00160 const std::string & name = "" )
00161 {
00162 return m_tie.create_valuator(member, effect, name) ;
00163 }
00164
00165 components::dimn::Valuator<types::pure> &
00166 create_valuator( Pure_Reader reader,
00167 Pure_Writer writer,
00168 Valuator_Effect effect,
00169 const std::string & name = "" )
00170 {
00171 return m_tie.create_valuator(reader, writer, effect, name) ;
00172 }
00173
00174 components::dimn::Valuator<types::quat> &
00175 create_valuator( Quat_Member member,
00176 Valuator_Effect effect,
00177 const std::string & name = "" )
00178 {
00179 return m_tie.create_valuator(member, effect, name) ;
00180 }
00181
00182 components::dimn::Valuator<types::quat> &
00183 create_valuator( Quat_Reader reader,
00184 Quat_Writer writer,
00185 Valuator_Effect effect,
00186 const std::string & name = "" )
00187 {
00188 return m_tie.create_valuator(reader, writer, effect, name) ;
00189 }
00190
00191 using super::create_valuator ;
00192
00193 components::dimn::Valuator<types::complex> &
00194 create_resolution_valuator( const std::string & name = "resolution" ) ;
00195
00196
00197 void resolution( size_type width, size_type height ) ;
00198
00199 Toggle &
00200 create_hide_back_toggle( const std::string & name = "hide back" ) ;
00201
00202 bool handle_toggle( const Toggle & ) ;
00203
00204 bool handle_valuator(
00205 const components::dimn::Valuator<types::complex> & ) ;
00206 using super::handle_valuator ;
00207
00208 ~Surface_Viewer() ;
00209 } ;
00210
00211 }}}
00212
00213 #include <esve/viewers/dimn/Surface_Viewer.template.cxx>
00214
00215 #endif
00216