FLTK 1.3.9
Loading...
Searching...
No Matches
Fl_Gl_Window.H
1//
2// "$Id$"
3//
4// OpenGL header file for the Fast Light Tool Kit (FLTK).
5//
6// Copyright 1998-2015 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
31typedef void* GLContext; // actually a GLXContext or HGLDC
32#endif
33
34class Fl_Gl_Choice; // structure to hold result of glXChooseVisual
35
56class 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
75public:
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);}
131 static int can_do(const int *m) {return can_do(0, m);}
133 int can_do() {return can_do(mode_,alist);}
137 Fl_Mode mode() const {return (Fl_Mode)mode_;}
178 int mode(int a) {return mode(a,0);}
190 int mode(const int *a) {return mode(0, a);}
193 void* context() const {return context_;}
194 void context(void*, int destroy_flag = 0);
195 void make_current();
196 void swap_buffers();
197 void ortho();
198
204 int can_do_overlay();
211 void redraw_overlay();
212 void hide_overlay();
220 void make_overlay_current();
221
222 // Note: Doxygen docs in Fl_Widget.H to avoid redundancy.
223 virtual Fl_Gl_Window* as_gl_window() {return this;}
224
234#ifdef __APPLE__
235 float pixels_per_unit();
236#else
237 float pixels_per_unit() { return 1; }
238#endif
246 int pixel_w() { return int(pixels_per_unit() * w() + 0.5); }
254 int pixel_h() { return int(pixels_per_unit() * h() + 0.5); }
255
261 Fl_Gl_Window(int W, int H, const char *l=0) : Fl_Window(W,H,l) {init();}
268 Fl_Gl_Window(int X, int Y, int W, int H, const char *l=0)
269 : Fl_Window(X,Y,W,H,l) {init();}
270
271protected:
277 virtual void draw();
278};
279
280#endif
281
282//
283// End of "$Id$".
284//
Fl_Mode
visual types and Fl_Gl_Window::mode() (values match Glut)
Definition Enumerations.H:1082
Fl_Window widget .
Definition Fl_Gl_Choice.H:73
The Fl_Gl_Window widget sets things up so OpenGL works.
Definition Fl_Gl_Window.H:56
char context_valid() const
Will only be set if the OpenGL context is created or recreated.
Definition Fl_Gl_Window.H:121
int pixel_h()
Gives the window height in OpenGL pixels.
Definition Fl_Gl_Window.H:254
float pixels_per_unit()
The number of pixels per FLTK unit of length for the window.
Definition Fl_Gl_Window.H:237
int can_do()
Returns non-zero if the hardware supports the current OpenGL mode.
Definition Fl_Gl_Window.H:133
static int can_do(int m)
Returns non-zero if the hardware supports the given OpenGL mode.
Definition Fl_Gl_Window.H:128
int mode(const int *a)
Set the OpenGL capabilites of the window using platform-specific data.
Definition Fl_Gl_Window.H:190
virtual Fl_Gl_Window * as_gl_window()
Returns an Fl_Gl_Window pointer if this widget is an Fl_Gl_Window.
Definition Fl_Gl_Window.H:223
void * context() const
Returns a pointer to the GLContext that this window is using.
Definition Fl_Gl_Window.H:193
Fl_Gl_Window(int X, int Y, int W, int H, const char *l=0)
Creates a new Fl_Gl_Window widget using the given position, size, and label string.
Definition Fl_Gl_Window.H:268
int pixel_w()
Gives the window width in OpenGL pixels.
Definition Fl_Gl_Window.H:246
static int can_do(const int *m)
Returns non-zero if the hardware supports the given OpenGL mode.
Definition Fl_Gl_Window.H:131
void context_valid(char v)
See char Fl_Gl_Window::context_valid() const.
Definition Fl_Gl_Window.H:125
Fl_Gl_Window(int W, int H, const char *l=0)
Creates a new Fl_Gl_Window widget using the given size, and label string.
Definition Fl_Gl_Window.H:261
char valid() const
Is turned off when FLTK creates a new context for this window or when the window resizes,...
Definition Fl_Gl_Window.H:108
int mode(int a)
Set or change the OpenGL capabilites of the window.
Definition Fl_Gl_Window.H:178
void valid(char v)
See char Fl_Gl_Window::valid() const.
Definition Fl_Gl_Window.H:112
Fl_Mode mode() const
Returns the current OpenGL capabilites of the window.
Definition Fl_Gl_Window.H:137
int h() const
Gets the widget height.
Definition Fl_Widget.H:299
int w() const
Gets the widget width.
Definition Fl_Widget.H:294
This widget produces an actual window.
Definition Fl_Window.H:57
virtual void draw()
Draws the widget.
Definition Fl_Window_shape.cxx:340
virtual void flush()
Forces the window to be drawn, this window is also made current and calls draw().
Definition Fl.cxx:1920
void make_current()
Sets things up so that the drawing functions in <FL/fl_draw.H> will go into this window.
virtual void show()
Puts the window on the screen.
virtual int handle(int)
Handles the specified event.
Definition Fl.cxx:1688
virtual void hide()
Removes the window from the screen.
Definition Fl.cxx:1550
virtual void resize(int X, int Y, int W, int H)
Changes the size and position of the window.