FLTK 1.3.3
Fl_Gl_Window.H
1 //
2 // "$Id: Fl_Gl_Window.H 10063 2014-01-16 15:38:06Z manolo $"
3 //
4 // OpenGL header file for the Fast Light Tool Kit (FLTK).
5 //
6 // Copyright 1998-2010 by Bill Spitzak and others.
7 //
8 // This library is free software. Distribution and use rights are outlined in
9 // the file "COPYING" which should have been included with this file. If this
10 // file is missing or damaged, see the license at:
11 //
12 // http://www.fltk.org/COPYING.php
13 //
14 // Please report all bugs and problems on the following page:
15 //
16 // http://www.fltk.org/str.php
17 //
18 
19 /* \file
20  Fl_Gl_Window widget . */
21 
22 #ifndef Fl_Gl_Window_H
23 #define Fl_Gl_Window_H
24 
25 #include "Fl_Window.H"
26 
27 #ifndef GLContext
28 
31 typedef void* GLContext; // actually a GLXContext or HGLDC
32 #endif
33 
34 class Fl_Gl_Choice; // structure to hold result of glXChooseVisual
35 
56 class FL_EXPORT Fl_Gl_Window : public Fl_Window {
57 
58  int mode_;
59  const int *alist;
60  Fl_Gl_Choice *g;
61  GLContext context_;
62  char valid_f_;
63  char damage1_; // damage() of back buffer
64  virtual void draw_overlay();
65  void init();
66 
67  void *overlay;
68  void make_overlay();
69  friend class _Fl_Gl_Overlay;
70 
71  static int can_do(int, const int *);
72  int mode(int, const int *);
73  static int gl_plugin_linkage();
74 
75 public:
76 
77  void show();
78  void show(int a, char **b) {Fl_Window::show(a,b);}
79  void flush();
80  void hide();
81  void resize(int,int,int,int);
82  int handle(int);
83 
108  char valid() const {return valid_f_ & 1;}
112  void valid(char v) {if (v) valid_f_ |= 1; else valid_f_ &= 0xfe;}
113  void invalidate();
114 
121  char context_valid() const {return valid_f_ & 2;}
125  void context_valid(char v) {if (v) valid_f_ |= 2; else valid_f_ &= 0xfd;}
126 
128  static int can_do(int m) {return can_do(m,0);}
130  static int can_do(const int *m) {return can_do(0, m);}
132  int can_do() {return can_do(mode_,alist);}
166  Fl_Mode mode() const {return (Fl_Mode)mode_;}
168  int mode(int a) {return mode(a,0);}
170  int mode(const int *a) {return mode(0, a);}
172  void* context() const {return context_;}
173  void context(void*, int destroy_flag = 0);
174  void make_current();
175  void swap_buffers();
176  void ortho();
177 
183  int can_do_overlay();
190  void redraw_overlay();
191  void hide_overlay();
199  void make_overlay_current();
200 
201  // Note: Doxygen docs in Fl_Widget.H to avoid redundancy.
202  virtual Fl_Gl_Window* as_gl_window() {return this;}
203 
204  ~Fl_Gl_Window();
209  Fl_Gl_Window(int W, int H, const char *l=0) : Fl_Window(W,H,l) {init();}
216  Fl_Gl_Window(int X, int Y, int W, int H, const char *l=0)
217  : Fl_Window(X,Y,W,H,l) {init();}
218 
219 protected:
225  virtual void draw();
226 };
227 
228 #endif
229 
230 //
231 // End of "$Id: Fl_Gl_Window.H 10063 2014-01-16 15:38:06Z manolo $".
232 //