00001 00015 #ifndef CUI_FRAME_H 00016 #define CUI_FRAME_H 00017 00018 #include <list> 00019 #include <stdio.h> 00020 00021 #include "UI_Lib.h" 00022 #include "UI_types.h" 00023 #include "IUI_Border.h" 00024 #include "IUI_Renderer.h" 00025 #include "IUI_Font.h" 00026 #include "CUI_CoordSys.h" 00027 00028 00030 #define UI_INACTIVE 0x0001 00031 00032 #define UI_DISABLED 0x0002 00033 00034 #define UI_HOVER 0x0004 00035 00036 #define UI_CLICKED 0x0008 00037 00038 #define UI_SELECTED 0x0010 00039 00040 #define UI_VERTICAL 0x0020 00041 00042 #define UI_SQUEEZE 0x0040 00043 00044 #define UI_INVERT 0x0080 00045 00047 class CUI_UI; 00048 00050 00058 class GLGUI_ENTRY CUI_Frame 00059 { 00060 public: 00062 CUI_Frame( CUI_UI *ui = NULL, float x = 0, float y = 0, float x2 = 1, float y2 = 1, 00063 CUI_Frame *parent = NULL, IUI_Shader *shader = NULL, 00064 IUI_Shader *cursor = NULL, CUI_CoordSys *coordsys = NULL ); 00065 00067 virtual ~CUI_Frame(); 00068 00070 virtual bool SetUI( CUI_UI *ui ) 00071 { m_ui = ui; return false; } 00072 00074 00078 virtual bool AddChild( CUI_Frame *frame, bool back = false ); 00079 00081 00082 virtual bool DeleteChild( CUI_Frame *frame ); 00083 00085 00086 virtual bool SetParent( CUI_Frame *frame ); 00087 00089 virtual CUI_Frame *GetParent( void ); 00090 00092 virtual bool SetCursor( IUI_Shader *cursor ); 00093 00095 virtual bool SetShader( IUI_Shader *shader ); 00096 00098 virtual bool SetCoordSys( CUI_CoordSys *coordsys ); 00099 00101 virtual CUI_CoordSys *GetCoordSys( void ) { return m_coordsys; } 00102 00104 virtual bool SetBorder( IUI_Border *border ) { return false; } 00105 00107 virtual IUI_Border *GetBorder( void ) { return NULL; } 00108 00110 virtual bool SetFont( IUI_Font *font ) { return false; } 00111 00113 virtual IUI_Font *GetFont( void ) { return NULL; } 00114 00116 00121 virtual bool Move( float x, float y, float x2, float y2 ); 00122 00124 00127 virtual bool Move( float x, float y ); 00128 00130 00131 virtual void GetRect( v4_f rect ); 00132 00134 00137 virtual bool Convert( float &x, float &y ); 00138 00140 00144 virtual bool ConvertFromGlobal( float &x, float &y ); 00145 00147 virtual bool Save( char *filename ); 00149 virtual bool Save( FILE *file ); 00150 00152 00154 virtual bool SetToRange( IUI_Renderer *renderer ); 00155 00157 virtual bool Render( double dtime, IUI_Renderer *renderer ); 00158 00160 virtual bool RenderStart( double dtime, IUI_Renderer *renderer ); 00161 00163 virtual bool RenderBackground( double dtime, IUI_Renderer *renderer ); 00164 00166 virtual bool RenderChildren( double dtime, IUI_Renderer *renderer ); 00167 00169 00170 virtual bool Animate( double dtime, IUI_Renderer *renderer ); 00171 00173 00174 virtual CUI_Frame* TestHit( float x, float y ); 00175 00177 virtual bool BringToFront( void ); 00178 00180 virtual IUI_Shader* GetShader( void ); 00181 00183 virtual IUI_Shader* GetCursor( void ); 00184 00186 virtual bool SetFrameID( unsigned long id ) 00187 { m_frameID = id; return false; } 00188 00190 virtual unsigned long GetFrameID( void ) 00191 { return m_frameID; } 00192 00194 virtual bool SetFlag( unsigned long flag, bool set ); 00196 virtual bool GetFlag( unsigned long flag ); 00197 00199 virtual bool Activate( bool active = true ); 00201 virtual bool Enable( bool enable = true ); 00202 00204 virtual bool AddClickableToList( void *voidlist ); 00205 00207 virtual bool IsClickable( ) { return false; } 00208 00210 00211 virtual bool Click( int &id, int &numparam, void **param ) { return false; } 00212 00214 virtual bool IsDraggable( ) {return false; } 00215 00217 00218 virtual bool Drag( float x, float y, float dx, float dy, int &id, int &numparam, void **param ) { return false; } 00219 00221 00223 virtual void DeleteParam( void *param ) { assert( 1 ); }; 00224 00226 00229 virtual bool ProcessKey( unsigned long key ) { return false; } 00230 00232 typedef bool (*callbackfunc)(int id, int numparam, void *param); 00233 00235 00239 virtual bool SetFrameCallback( callbackfunc func ) 00240 { m_callbackFunc = func; return false; } 00241 00243 00246 virtual bool CallbackFunc( int id, int numparam, void *param ); 00247 00249 00255 virtual bool IsControl( ) 00256 { return false; } 00257 00259 virtual bool SetText( const char *text ) 00260 { return false; } 00261 00263 virtual bool SetToolTipText( char *text ); 00264 00266 virtual bool SetToolTipFrame( CUI_Frame *frame ) 00267 { m_toolTipFrame = frame; return false; } 00268 00270 00274 virtual CUI_Frame *GetToolTipFrame( ) 00275 { return m_toolTipFrame; } 00276 00278 virtual char *GetToolTipText() 00279 { return m_toolTipText; } 00280 00282 00284 virtual bool ResetCounter( bool count ) 00285 { m_counter = 0; m_count = count; return false; } 00286 00288 virtual double GetCounter( ) 00289 { return m_counter; } 00290 00292 typedef enum animation_t {UI_NONE, UI_FADELINE, UI_FADESIN}; 00293 00295 virtual bool SetAnimation( animation_t anim ) 00296 { m_animation = anim; return false; } 00297 00299 virtual animation_t GetAnimation( ) 00300 { return m_animation; } 00301 00303 00306 virtual void SetOwnedByUI( ) 00307 { m_ownedByUI = true; } 00308 00310 virtual bool IsOwnedByUI( ) 00311 { return m_ownedByUI; } 00312 00313 protected: 00314 00316 CUI_UI *m_ui; 00317 00319 00323 unsigned long m_frameID; 00324 00326 00329 callbackfunc m_callbackFunc; 00330 00332 IUI_Shader *m_cursor; 00334 IUI_Shader *m_shader; 00336 CUI_CoordSys *m_coordsys; 00337 00339 CUI_Frame* m_parent; 00341 std::list<CUI_Frame *> m_frames; 00342 00344 float m_x; 00346 float m_y; 00348 float m_x2; 00350 float m_y2; 00351 00353 unsigned int m_flags; 00354 00356 char *m_toolTipText; 00357 00359 CUI_Frame *m_toolTipFrame; 00360 00362 double m_counter; 00363 00365 bool m_count; 00366 00368 animation_t m_animation; 00369 00371 float m_oldFade; 00372 00374 bool m_ownedByUI; 00375 }; 00376 00377 GLGUI_ENTRY typedef std::list<CUI_Frame*> FRAMELIST; 00378 00379 #endif