Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members

Surface_Viewer.hxx

00001 
00002 // 
00003 // Copyright (C) 2006 James M. Lawrence.  All rights reserved.
00004 // 
00005 // software: esve-1.0.3
00006 // file: esve/viewers/dimn/Surface_Viewer.hxx
00007 // 
00008 // Redistribution and use in source and binary forms, with or without
00009 // modification, are permitted provided that the following conditions
00010 // are met:
00011 // 
00012 // 1. Redistributions of source code must retain the above copyright
00013 //    notice, this list of conditions and the following disclaimer.
00014 // 
00015 // 2. The origin of this software must not be misrepresented; you must
00016 //    not claim that you wrote the original software.  If you use this
00017 //    software in a product, an acknowledgment in the product 
00018 //    documentation would be appreciated but is not required.
00019 // 
00020 // 3. Altered source versions must be plainly marked as such, and must
00021 //    not be misrepresented as being the original software.
00022 // 
00023 // 4. The name of the author may not be used to endorse or promote
00024 //    products derived from this software without specific prior written
00025 //    permission.
00026 // 
00027 // THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY,
00028 // AND WITH NO CLAIM AS TO ITS SUITABILITY FOR ANY PURPOSE.  IN NO EVENT
00029 // SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM WHATSOEVER MADE IN CONNECTION
00030 // TO THIS SOFTWARE.
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       // i.e., Simple_Viewer
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     // in case the user doesn't want to create the resolution valuator
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 }}} // namespace esve::viewers::dimn
00212 
00213 #include <esve/viewers/dimn/Surface_Viewer.template.cxx>
00214 
00215 #endif
00216 

Generated on Tue May 30 11:40:53 2006 for esve by doxygen 1.3.4