blob: 20ab25b306046066d90ba52b43526edf9ee99ed2 [file] [log] [blame]
DRC2ff39b82011-07-28 08:38:59 +00001//
2// "$Id: Fl_Double_Window.H 7903 2010-11-28 21:06:39Z matt $"
3//
4// Double-buffered window 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; you can redistribute it and/or
9// modify it under the terms of the GNU Library General Public
10// License as published by the Free Software Foundation; either
11// version 2 of the License, or (at your option) any later version.
12//
13// This library is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16// Library General Public License for more details.
17//
18// You should have received a copy of the GNU Library General Public
19// License along with this library; if not, write to the Free Software
20// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
21// USA.
22//
23// Please report all bugs and problems on the following page:
24//
25// http://www.fltk.org/str.php
26//
27
28/* \file
29 Fl_Double_Window widget . */
30
31#ifndef Fl_Double_Window_H
32#define Fl_Double_Window_H
33
34#include "Fl_Window.H"
35
36/**
37 The Fl_Double_Window provides a double-buffered window.
38 If possible this will use the X double buffering extension (Xdbe). If
39 not, it will draw the window data into an off-screen pixmap, and then
40 copy it to the on-screen window.
41 <P>It is highly recommended that you put the following code before the
42 first show() of <I>any</I> window in your program: </P>
43 \code
44 Fl::visual(FL_DOUBLE|FL_INDEX)
45 \endcode
46 This makes sure you can use Xdbe on servers where double buffering
47 does not exist for every visual.
48*/
49class FL_EXPORT Fl_Double_Window : public Fl_Window {
50protected:
51 void flush(int eraseoverlay);
52 /**
53 Force double buffering, even if the OS already buffers windows
54 (overlays need that on MacOS and Windows2000)
55 */
56 char force_doublebuffering_;
57public:
58 void show();
59 void show(int a, char **b) {Fl_Window::show(a,b);}
60 void flush();
61 void resize(int,int,int,int);
62 void hide();
63 ~Fl_Double_Window();
64 /**
65 Creates a new Fl_Double_Window widget using the given
66 position, size, and label (title) string.
67 */
68 Fl_Double_Window(int W, int H, const char *l = 0)
69 : Fl_Window(W,H,l), force_doublebuffering_(0) { type(FL_DOUBLE_WINDOW); }
70 /**
71 See Fl_Double_Window::Fl_Double_Window(int w, int h, const char *label = 0)
72 */
73 Fl_Double_Window(int X, int Y, int W, int H, const char *l = 0)
74 : Fl_Window(X,Y,W,H,l), force_doublebuffering_(0) { type(FL_DOUBLE_WINDOW); }
75};
76
77#endif
78
79//
80// End of "$Id: Fl_Double_Window.H 7903 2010-11-28 21:06:39Z matt $".
81//