00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef _FLU_GL_WINDOW_H
00017 #define _FLU_GL_WINDOW_H
00018
00019 #include <stdio.h>
00020
00021
00022 #include <FL/Fl.H>
00023 #include <FL/Fl_Gl_Window.H>
00024
00025 #include "FLU/Flu_Enumerations.h"
00026
00028 class FLU_EXPORT Flu_GL_Window : public Fl_Gl_Window
00029 {
00030
00031 public:
00032
00034 Flu_GL_Window( int x, int y, int w, int h, const char *label = 0 );
00035
00037 Flu_GL_Window( int w, int h, const char *label = 0 );
00038
00040 virtual ~Flu_GL_Window();
00041
00043 void redraw();
00044
00046
00048 inline bool is_context_valid()
00049 { return( can_do() > 0 ); }
00050
00052
00053 inline void cartesianInput( bool b )
00054 { _cartesian = b; }
00055
00057 inline bool cartesianInput() const
00058 { return _cartesian; }
00059
00064
00065 inline void setInitFunc( void (*cb)(void*), void* cbd = NULL )
00066 { _initCB = cb; _initCBD = cbd; }
00067
00068 inline void setResizeFunc( void (*cb)(int, int, void*), void* cbd = NULL )
00069 { _resizeCB = cb; _resizeCBD = cbd; }
00070
00071 inline void setDrawFunc( void (*cb)(void*), void* cbd = NULL )
00072 { _drawCB = cb; _drawCBD = cbd; }
00073
00074 inline void setMouseWheelFunc( void (*cb)(int, int, int, int, void*), void* cbd = NULL )
00075 { _mouseWheelCB = cb; _mouseWheelCBD = cbd; }
00076
00077 inline void setMouseDownFunc( void (*cb)(int, int, int, void*), void* cbd = NULL )
00078 { _mouseDownCB = cb; _mouseDownCBD = cbd; }
00079
00080 inline void setMouseUpFunc( void (*cb)(int, int, int, void*), void* cbd = NULL )
00081 { _mouseUpCB = cb; _mouseUpCBD = cbd; }
00082
00083 inline void setMouseDragFunc( void (*cb)(int, int, void*), void* cbd = NULL )
00084 { _mouseDragCB = cb; _mouseDragCBD = cbd; }
00085
00086 inline void setMouseMoveFunc( void (*cb)(int, int, void*), void* cbd = NULL )
00087 { _mouseMoveCB = cb; _mouseMoveCBD = cbd; }
00088
00089 inline void setMouseEnterFunc( void (*cb)(void*), void* cbd = NULL )
00090 { _enterCB = cb; _enterCBD = cbd; }
00091
00092 inline void setMouseExitFunc( void (*cb)(void*), void* cbd = NULL )
00093 { _exitCB = cb; _exitCBD = cbd; }
00094
00095 inline void setKeyboardFunc( void (*cb)(int, int, int, void*), void* cbd = NULL )
00096 { _keyboardCB = cb; _keyboardCBD = cbd; }
00097
00099
00101
00103 inline static void setAllInitFunc( void (*cb)(void*), void* cbd = NULL )
00104 { allInitCB = cb; allInitCBD = cbd; }
00105
00106 protected:
00107
00108 void (*_drawCB)(void*);
00109 void* _drawCBD;
00110
00111 void (*_resizeCB)(int, int, void*);
00112 void* _resizeCBD;
00113
00114 void (*_initCB)(void*);
00115 void* _initCBD;
00116
00117 void (*_mouseWheelCB)(int, int, int, int, void*);
00118 void* _mouseWheelCBD;
00119
00120 void (*_mouseDownCB)(int, int, int, void*);
00121 void* _mouseDownCBD;
00122
00123 void (*_mouseUpCB)(int, int, int, void*);
00124 void* _mouseUpCBD;
00125
00126 void (*_mouseDragCB)(int, int, void*);
00127 void* _mouseDragCBD;
00128
00129 void (*_mouseMoveCB)(int, int, void*);
00130 void* _mouseMoveCBD;
00131
00132 void (*_keyboardCB)(int, int, int, void*);
00133 void* _keyboardCBD;
00134
00135 void (*_enterCB)(void*);
00136 void* _enterCBD;
00137
00138 void (*_exitCB)(void*);
00139 void* _exitCBD;
00140
00141 private:
00142
00143 typedef void (*AllInitProto)(void*);
00144
00145 static AllInitProto allInitCB;
00146 static void* allInitCBD;
00147
00148 bool _firstDraw;
00149 bool _cartesian;
00150
00151
00152 int handle( int event );
00153 void draw();
00154
00155 };
00156
00157 #endif