can_do_overlay was missing from WIN32 version

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.0@1417 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Bill Spitzak 2001-03-20 18:02:52 +00:00
parent 3a9d945d07
commit 339b9cd8a0
3 changed files with 50 additions and 40 deletions

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_Gl_Overlay.cxx,v 1.5.2.16 2001/03/15 22:39:56 easysw Exp $" // "$Id: Fl_Gl_Overlay.cxx,v 1.5.2.17 2001/03/20 18:02:52 spitzak Exp $"
// //
// OpenGL overlay code for the Fast Light Tool Kit (FLTK). // OpenGL overlay code for the Fast Light Tool Kit (FLTK).
// //
@ -126,13 +126,6 @@ void Fl_Gl_Window::make_overlay() {
//static COLORREF *palette; //static COLORREF *palette;
extern int fl_overlay_depth; extern int fl_overlay_depth;
int Fl_Gl_Window::can_do_overlay() {
HDC hdc = Fl_X::i(this)->private_dc;
LAYERPLANEDESCRIPTOR pfd;
return (wglDescribeLayerPlane(hdc, g->pixelformat, 1, sizeof(pfd), &pfd));
}
void Fl_Gl_Window::make_overlay() { void Fl_Gl_Window::make_overlay() {
if (overlay) return; if (overlay) return;
@ -168,6 +161,14 @@ void Fl_Gl_Window::make_overlay() {
return; return;
} }
int Fl_Gl_Window::can_do_overlay() {
if (!g) {
g = Fl_Gl_Choice::find(mode_,alist);
if (!g) return 0;
}
return (g->pfd.bReserved & 15) != 0;
}
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
#endif #endif
@ -213,5 +214,5 @@ void Fl_Gl_Window::hide_overlay() {
#endif #endif
// //
// End of "$Id: Fl_Gl_Overlay.cxx,v 1.5.2.16 2001/03/15 22:39:56 easysw Exp $". // End of "$Id: Fl_Gl_Overlay.cxx,v 1.5.2.17 2001/03/20 18:02:52 spitzak Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_arg.cxx,v 1.5.2.7 2001/01/22 15:13:40 easysw Exp $" // "$Id: Fl_arg.cxx,v 1.5.2.8 2001/03/20 18:02:52 spitzak Exp $"
// //
// Optional argument initialization code for the Fast Light Tool Kit (FLTK). // Optional argument initialization code for the Fast Light Tool Kit (FLTK).
// //
@ -147,8 +147,6 @@ void Fl_Window::show(int argc, char **argv) {
// set colors first, so background_pixel is correct: // set colors first, so background_pixel is correct:
static char beenhere; static char beenhere;
if (!beenhere) { if (!beenhere) {
beenhere = 1;
Fl::get_system_colors(); // opens display! May call Fl::fatal()
if (geometry) { if (geometry) {
int flags = 0, gx = x(), gy = y(); unsigned int gw = w(), gh = h(); int flags = 0, gx = x(), gy = y(); unsigned int gw = w(), gh = h();
flags = XParseGeometry(geometry, &gx, &gy, &gw, &gh); flags = XParseGeometry(geometry, &gx, &gy, &gw, &gh);
@ -168,12 +166,19 @@ void Fl_Window::show(int argc, char **argv) {
} }
} }
// set the class, which is used by X version of get_system_colors:
if (name) {xclass(name); name = 0;} if (name) {xclass(name); name = 0;}
else if (!xclass()) xclass(filename_name(argv[0])); else if (!xclass()) xclass(filename_name(argv[0]));
if (title) {label(title); title = 0;} if (title) {label(title); title = 0;}
else if (!label()) label(xclass()); else if (!label()) label(xclass());
show(); show();
if (!beenhere) {
beenhere = 1;
Fl::get_system_colors(); // opens display! May call Fl::fatal()
}
#ifndef WIN32 #ifndef WIN32
// set the command string, used by state-saving window managers: // set the command string, used by state-saving window managers:
int j; int j;
@ -352,5 +357,5 @@ int XParseGeometry(const char* string, int* x, int* y,
#endif // ifdef WIN32 #endif // ifdef WIN32
// //
// End of "$Id: Fl_arg.cxx,v 1.5.2.7 2001/01/22 15:13:40 easysw Exp $". // End of "$Id: Fl_arg.cxx,v 1.5.2.8 2001/03/20 18:02:52 spitzak Exp $".
// //

View File

@ -1,5 +1,5 @@
// //
// "$Id: Fl_get_system_colors.cxx,v 1.6.2.6 2001/01/22 15:13:40 easysw Exp $" // "$Id: Fl_get_system_colors.cxx,v 1.6.2.7 2001/03/20 18:02:52 spitzak Exp $"
// //
// System color support for the Fast Light Tool Kit (FLTK). // System color support for the Fast Light Tool Kit (FLTK).
// //
@ -58,6 +58,10 @@ const char *fl_fg;
const char *fl_bg; const char *fl_bg;
const char *fl_bg2; const char *fl_bg2;
static void set_selection_color(uchar r, uchar g, uchar b) {
Fl::set_color(FL_SELECTION_COLOR,r,g,b);
}
#ifdef WIN32 #ifdef WIN32
#include <stdio.h> #include <stdio.h>
@ -103,48 +107,48 @@ void Fl::get_system_colors() {
getsyscolor(COLOR_WINDOW, fl_bg2,Fl::background2); getsyscolor(COLOR_WINDOW, fl_bg2,Fl::background2);
getsyscolor(COLOR_WINDOWTEXT, fl_fg, Fl::foreground); getsyscolor(COLOR_WINDOWTEXT, fl_fg, Fl::foreground);
getsyscolor(COLOR_BTNFACE, fl_bg, Fl::background); getsyscolor(COLOR_BTNFACE, fl_bg, Fl::background);
getsyscolor(COLOR_HIGHLIGHT, 0, set_selection_color);
} }
#else #else
// For X we should do something. KDE and Gnome store these colors in // Read colors that KDE writes to the xrdb database.
// some standard places, where?
// XGetDefault does not do the expected thing: it does not like
// periods in either word. Therefore it cannot match class.Text.background.
// However *.Text.background is matched by pretending the program is "Text".
// But this will also match *.background if there is no *.Text.background
// entry, requiring users to put in both (unless they want the text fields
// the same color as the windows).
static void static void
getsyscolor(const char *arg, void (*func)(uchar,uchar,uchar)) { getsyscolor(const char *key1, const char* key2, const char *arg, void (*func)(uchar,uchar,uchar))
if (arg) {
XColor x;
if (!XParseColor(fl_display, fl_colormap, arg, &x))
Fl::error("Unknown color: %s", arg);
else
func(x.red>>8, x.green>>8, x.blue>>8);
}
}
static const char *
xdefaultcolor (const char *flcol, const char *key1, const char *key2)
{ {
if (!flcol) if (!arg) {
return XGetDefault (fl_display, key1, key2); arg = XGetDefault (fl_display, key1, key2);
if (!arg) return;
}
XColor x;
if (!XParseColor(fl_display, fl_colormap, arg, &x))
Fl::error("Unknown color: %s", arg);
else else
return flcol; func(x.red>>8, x.green>>8, x.blue>>8);
}
static void set_selection_color(uchar r, uchar g, uchar b) {
Fl::set_color(FL_SELECTION_COLOR,r,g,b);
} }
void Fl::get_system_colors() void Fl::get_system_colors()
{ {
fl_open_display(); fl_open_display();
getsyscolor(xdefaultcolor(fl_bg2, "Entry", "background"), Fl::background2); const char* key1 = 0;
getsyscolor(xdefaultcolor(fl_bg, "*", "background"), Fl::background); if (Fl::first_window()) key1 = Fl::first_window()->xclass();
getsyscolor(xdefaultcolor(fl_fg, "*", "foreground"), Fl::foreground); if (!key1) key1 = "fltk";
getsyscolor(xdefaultcolor(0,"Text","selectBackground"), set_selection_color); getsyscolor(key1, "background", fl_bg, Fl::background);
getsyscolor(key1, "foreground", fl_fg, Fl::foreground);
getsyscolor("Text","background", fl_bg2, Fl::background2);
getsyscolor(key1, "selectBackground",0, set_selection_color);
} }
#endif #endif
// //
// End of "$Id: Fl_get_system_colors.cxx,v 1.6.2.6 2001/01/22 15:13:40 easysw Exp $". // End of "$Id: Fl_get_system_colors.cxx,v 1.6.2.7 2001/03/20 18:02:52 spitzak Exp $".
// //