00001 00002 // 00003 // Copyright (C) 2006 James M. Lawrence. All rights reserved. 00004 // 00005 // software: esve-1.0.3 00006 // file: esve/engine/dim3/impl/Camera.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 #ifndef esve_engine_dim3_impl_Camera_hxx 00034 #define esve_engine_dim3_impl_Camera_hxx 00035 00036 #include <esve/engine/dim3/Camera.hxx> 00037 #include <esve/ui/base/impl/Display.hxx> 00038 #include <memory> 00039 #include <string> 00040 00041 namespace esve { namespace engine { namespace dim3 { namespace impl { 00042 00047 00048 class Camera 00049 : virtual public dim3::Camera, 00050 public ui::base::impl::Display 00051 { 00052 private: 00053 typedef ui::base::impl::Display super ; 00054 00055 Camera( const Camera & ) ; 00056 Camera & operator=( const Camera & ) ; 00057 00058 class Private ; 00059 const std::auto_ptr<Private> m ; 00060 00061 public: 00063 Camera( const std::string & label, const Rectangle & ) ; 00064 00065 message::Compute_Sender & peek_compute_sender() ; 00066 00067 message::Draw_Sender & peek_draw_sender() ; 00068 00070 const ui::base::Display_Details & 00071 peek_display_details() const ; 00072 ui::base::Display_Details & 00073 peek_display_details() ; 00075 00077 const engine::dim3::Camera_Details & 00078 peek_camera_details() const ; 00079 engine::dim3::Camera_Details & 00080 peek_camera_details() ; 00082 00084 const engine::dim3::Frame & peek_frame() const ; 00085 engine::dim3::Frame & peek_frame() ; 00087 00088 ~Camera() ; 00089 00090 protected: 00091 void update() ; 00092 void update( double dt ) ; 00093 } ; 00094 00095 }}}} // namespace esve::engine::dim3::impl 00096 00097 #endif 00098
1.3.4