00001 // This is core/vgui/vgui_clear_tableau.h 00002 #ifndef vgui_clear_tableau_h_ 00003 #define vgui_clear_tableau_h_ 00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE 00005 #pragma interface 00006 #endif 00007 //: 00008 // \file 00009 // \brief Tableau performing OpenGL clearing. 00010 // \author Philip C. Pritchett, Robotics Research Group, University of Oxford 00011 // \date 11 Nov 99 00012 // 00013 // Contains classes vgui_clear tableau vgui_clear_tableau_new 00014 // 00015 // \verbatim 00016 // Modifications 00017 // 11-NOV-1999 P.Pritchett - Initial version. 00018 // 26-APR-2002 K.Y.McGaul - Added some doxygen style comments. 00019 // \endverbatim 00020 00021 #include "vgui_clear_tableau_sptr.h" 00022 #include <vgui/vgui_gl.h> 00023 #include <vgui/vgui_tableau.h> 00024 class vgui_menu; 00025 00026 //: Tableau performing OpenGL clearing. 00027 // 00028 // vgui_clear_tableau is a tableau that performs OpenGL clearing upon 00029 // receipt of a vgui_DRAW event. It has no child tableau. 00030 // 00031 // This is provided by default if you use a vgui_shell_tableau. 00032 class vgui_clear_tableau : public vgui_tableau 00033 { 00034 public: 00035 //: Constructor - don't use this, use vgui_clear_tableau_new. 00036 // A vgui_clear_tableau does not have any children. 00037 vgui_clear_tableau(); 00038 00039 //: Returns the type of this tableau ('vgui_clear_tableau'). 00040 vcl_string type_name() const { return "vgui_clear_tableau"; } 00041 00042 //: Set colour of clear_tableau to the given red, green, blue values. 00043 void set_colour(float r, float g, float b, float a=1); 00044 00045 //: Set the given GLbitfield as the mask. 00046 void set_mask(GLbitfield m) { mask = m; } 00047 00048 //: Toggle clearing on and off. 00049 void toggle_clearing(); 00050 00051 //: Make the given menu the default pop-up menu. 00052 void add_popup(vgui_menu &menu); 00053 00054 //: Display a dialog box to get data (colour, etc) for the clear tableau. 00055 void config_dialog(); 00056 00057 protected: 00058 //: Destructor - called by vgui_clear_tableau_sptr. 00059 virtual ~vgui_clear_tableau() {} 00060 00061 //: Handle events sent to this tableau - use draw to perform OpenGL clearing. 00062 virtual bool handle(const vgui_event&); 00063 00064 private: 00065 GLbitfield mask; 00066 00067 float colour[4]; // rgba 00068 float accum[4]; // rgba 00069 GLclampd depth; 00070 GLint stencil; 00071 00072 bool clearing_; 00073 }; 00074 00075 //: Create a smart-pointer to a vgui_clear_tableau. 00076 struct vgui_clear_tableau_new : public vgui_clear_tableau_sptr 00077 { 00078 typedef vgui_clear_tableau_sptr base; 00079 00080 //: Create a smart-pointer to a vgui_clear_tableau. 00081 vgui_clear_tableau_new() : base(new vgui_clear_tableau()) {} 00082 }; 00083 00084 #endif // vgui_clear_tableau_h_