00001 00002 // 00003 // Copyright (C) 2006 James M. Lawrence. All rights reserved. 00004 // 00005 // software: esve-1.0.3 00006 // file: esve/viewers/dim4/Canned_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_dim4_Canned_Viewer_hxx 00035 #define esve_viewers_dim4_Canned_Viewer_hxx 00036 00037 #include <esve/viewers/dim4/Inversion.hxx> 00038 #include <esve/viewers/dim3/Canned_Viewer_Base.hxx> 00039 #include <esve/viewers/dimn/Scaling.hxx> 00040 #include <esve/types/quat.hxx> 00041 #include <memory> 00042 00043 namespace esve { namespace engine { namespace dim4 { 00044 00045 class Transform ; 00046 class Geom ; 00047 00048 }}} // namespace esve::engine::dim4 00049 00050 namespace esve { namespace viewers { namespace dim4 { 00051 00059 00060 class Canned_Viewer 00061 : virtual public dimn::Scaling, 00062 virtual public Inversion, 00063 public viewers::dim3::Canned_Viewer_Base 00064 { 00065 private: 00066 typedef viewers::dim3::Canned_Viewer_Base super ; 00067 00068 Canned_Viewer( const Canned_Viewer & ) ; 00069 Canned_Viewer & operator=( const Canned_Viewer & ) ; 00070 00071 class Private ; 00072 const std::auto_ptr<Private> m ; 00073 00074 public: 00076 Canned_Viewer( int argc, char** argv ) ; 00077 00085 virtual void add_geom( engine::dim4::Geom & ) ; 00086 00094 virtual void remove_geom( engine::dim4::Geom & ) ; 00096 00097 using super::add_geom ; 00098 using super::remove_geom ; 00099 00102 void scaling( types::real ) ; 00103 types::real scaling() const ; 00105 00108 void inversion( types::real ) ; 00109 types::real inversion() const ; 00111 00114 virtual const engine::dim4::Transform & rotation() const ; 00115 virtual void rotation( const types::quat & upper_left, 00116 const types::quat & lower_right ) ; 00118 00121 virtual const engine::dim4::Transform & home_transform() const ; 00122 virtual void home_transform( const engine::dim4::Transform & ) ; 00124 00126 virtual void stop_motion() ; 00127 00130 virtual bool slide() const ; 00131 virtual void slide( bool ) ; 00133 00134 ~Canned_Viewer() ; 00135 } ; 00136 00137 }}} // namespace esve::viewers::dim4 00138 00139 #endif
1.3.4