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
00066 inline void setInitFunc( void (*cb)(void*), void* cbd = NULL )
00067 { _initCB = cb; _initCBD = cbd; }
00068
00070
00071 inline void setResizeFunc( void (*cb)(int, int, void*), void* cbd = NULL )
00072 { _resizeCB = cb; _resizeCBD = cbd; }
00073
00075 inline void setDrawFunc( void (*cb)(void*), void* cbd = NULL )
00076 { _drawCB = cb; _drawCBD = cbd; }
00077
00079
00081 inline void setMouseWheelFunc( void (*cb)(int, int, int, int, void*), void* cbd = NULL )
00082 { _mouseWheelCB = cb; _mouseWheelCBD = cbd; }
00083
00085
00087 inline void setMouseDownFunc( void (*cb)(int, int, int, void*), void* cbd = NULL )
00088 { _mouseDownCB = cb; _mouseDownCBD = cbd; }
00089
00091
00093 inline void setMouseUpFunc( void (*cb)(int, int, int, void*), void* cbd = NULL )
00094 { _mouseUpCB = cb; _mouseUpCBD = cbd; }
00095
00097
00098 inline void setMouseDragFunc( void (*cb)(int, int, void*), void* cbd = NULL )
00099 { _mouseDragCB = cb; _mouseDragCBD = cbd; }
00100
00102
00103 inline void setMouseMoveFunc( void (*cb)(int, int, void*), void* cbd = NULL )
00104 { _mouseMoveCB = cb; _mouseMoveCBD = cbd; }
00105
00107 inline void setMouseEnterFunc( void (*cb)(void*), void* cbd = NULL )
00108 { _enterCB = cb; _enterCBD = cbd; }
00109
00111 inline void setMouseExitFunc( void (*cb)(void*), void* cbd = NULL )
00112 { _exitCB = cb; _exitCBD = cbd; }
00113
00115
00119 inline void setKeyboardFunc( int (*cb)(int, int, int, void*), void* cbd = NULL )
00120 { _keyboardCB = cb; _keyboardCBD = cbd; }
00121
00123
00125
00127 inline static void setAllInitFunc( void (*cb)(void*), void* cbd = NULL )
00128 { allInitCB = cb; allInitCBD = cbd; }
00129
00130 protected:
00131
00132 void (*_drawCB)(void*);
00133 void* _drawCBD;
00134
00135 void (*_resizeCB)(int, int, void*);
00136 void* _resizeCBD;
00137
00138 void (*_initCB)(void*);
00139 void* _initCBD;
00140
00141 void (*_mouseWheelCB)(int, int, int, int, void*);
00142 void* _mouseWheelCBD;
00143
00144 void (*_mouseDownCB)(int, int, int, void*);
00145 void* _mouseDownCBD;
00146
00147 void (*_mouseUpCB)(int, int, int, void*);
00148 void* _mouseUpCBD;
00149
00150 void (*_mouseDragCB)(int, int, void*);
00151 void* _mouseDragCBD;
00152
00153 void (*_mouseMoveCB)(int, int, void*);
00154 void* _mouseMoveCBD;
00155
00156 int (*_keyboardCB)(int, int, int, void*);
00157 void* _keyboardCBD;
00158
00159 void (*_enterCB)(void*);
00160 void* _enterCBD;
00161
00162 void (*_exitCB)(void*);
00163 void* _exitCBD;
00164
00165 private:
00166
00167 typedef void (*AllInitProto)(void*);
00168
00169 static AllInitProto allInitCB;
00170 static void* allInitCBD;
00171
00172 bool _firstDraw;
00173 bool _cartesian;
00174 void *_lastContext;
00175
00176
00177 int handle( int event );
00178 void draw();
00179
00180 };
00181
00182 #endif