DRC | 2ff39b8 | 2011-07-28 08:38:59 +0000 | [diff] [blame] | 1 | // |
| 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 | */ |
| 49 | class FL_EXPORT Fl_Double_Window : public Fl_Window { |
| 50 | protected: |
| 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_; |
| 57 | public: |
| 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 | // |