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 #ifndef Fl_Gl_Window_H
00032 #define Fl_Gl_Window_H
00033
00034 #include "Fl_Window.H"
00035
00036 #ifndef GLContext
00037
00040 typedef void* GLContext;
00041 #endif
00042
00043 class Fl_Gl_Choice;
00044
00065 class FL_EXPORT Fl_Gl_Window : public Fl_Window {
00066
00067 int mode_;
00068 const int *alist;
00069 Fl_Gl_Choice *g;
00070 GLContext context_;
00071 char valid_f_;
00072 char damage1_;
00073 virtual void draw_overlay();
00074 void init();
00075
00076 void *overlay;
00077 void make_overlay();
00078 friend class _Fl_Gl_Overlay;
00079
00080 static int can_do(int, const int *);
00081 int mode(int, const int *);
00082
00083 public:
00084
00085 void show();
00086 void show(int a, char **b) {Fl_Window::show(a,b);}
00087 void flush();
00088 void hide();
00089 void resize(int,int,int,int);
00090 int handle(int);
00091
00116 char valid() const {return valid_f_ & 1;}
00120 void valid(char v) {if (v) valid_f_ |= 1; else valid_f_ &= 0xfe;}
00121 void invalidate();
00122
00129 char context_valid() const {return valid_f_ & 2;}
00133 void context_valid(char v) {if (v) valid_f_ |= 2; else valid_f_ &= 0xfd;}
00134
00136 static int can_do(int m) {return can_do(m,0);}
00138 static int can_do(const int *m) {return can_do(0, m);}
00140 int can_do() {return can_do(mode_,alist);}
00174 Fl_Mode mode() const {return (Fl_Mode)mode_;}
00176 int mode(int a) {return mode(a,0);}
00178 int mode(const int *a) {return mode(0, a);}
00180 void* context() const {return context_;}
00181 void context(void*, int destroy_flag = 0);
00182 void make_current();
00183 void swap_buffers();
00184 void ortho();
00185
00191 int can_do_overlay();
00198 void redraw_overlay();
00199 void hide_overlay();
00207 void make_overlay_current();
00208
00214 virtual Fl_Gl_Window* as_gl_window() {return this;}
00215
00216 ~Fl_Gl_Window();
00221 Fl_Gl_Window(int W, int H, const char *l=0) : Fl_Window(W,H,l) {init();}
00228 Fl_Gl_Window(int X, int Y, int W, int H, const char *l=0)
00229 : Fl_Window(X,Y,W,H,l) {init();}
00230
00231 protected:
00237 virtual void draw();
00238 };
00239
00240 #endif
00241
00242
00243
00244