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_components_dim3_Clipping_Plane_hxx
00035 #define esve_components_dim3_Clipping_Plane_hxx
00036
00037 #include <esve/engine/dim3/Rendering_Error.hxx>
00038 #include <esve/engine/dim3/Frame_Stowed.hxx>
00039 #include <esve/message/impl/Draw_Node.hxx>
00040 #include <memory>
00041
00042 namespace esve { namespace components { namespace dim3 {
00043
00053
00054 class Clipping_Plane
00055 : public engine::dim3::Frame_Stowed,
00056 public message::impl::Draw_Node
00057 {
00058 private:
00059 typedef message::impl::Draw_Node super ;
00060
00061 Clipping_Plane( const Clipping_Plane & ) ;
00062 Clipping_Plane & operator=( const Clipping_Plane & ) ;
00063
00064 class Private ;
00065 const std::auto_ptr<Private> m ;
00066
00067 public:
00068 struct Too_Many_Clipping_Planes_Error
00069 : public engine::dim3::Rendering_Error
00070 {
00071 int max_clip_planes ;
00072
00073 Too_Many_Clipping_Planes_Error( int ) ;
00074 ~Too_Many_Clipping_Planes_Error() throw() ;
00075 } ;
00076
00077 Clipping_Plane() ;
00078
00080 const engine::dim3::Frame & peek_frame() const ;
00081 engine::dim3::Frame & peek_frame() ;
00083
00084 ~Clipping_Plane() ;
00085
00086 protected:
00087
00088 void send_draw() ;
00089 } ;
00090
00091 }}}
00092
00093 #endif
00094
00095