Put a default implementation of parse_color() in Fl_Screen_Driver and only Fl_X11_Screen_Driver reimplements it.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12628 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
9f0e9ff813
commit
3b437dae8c
@ -92,7 +92,8 @@ public:
|
||||
virtual int ready() = 0;
|
||||
virtual void grab(Fl_Window* win) = 0;
|
||||
// --- global colors
|
||||
virtual int parse_color(const char* p, uchar& r, uchar& g, uchar& b) = 0;
|
||||
/* the default implementation of parse_color() may be enough */
|
||||
virtual int parse_color(const char* p, uchar& r, uchar& g, uchar& b);
|
||||
virtual void get_system_colors() = 0;
|
||||
virtual const char *get_system_scheme();
|
||||
// --- global timers
|
||||
|
||||
@ -495,6 +495,31 @@ void Fl_Screen_Driver::open_display()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// simulation of XParseColor:
|
||||
int Fl_Screen_Driver::parse_color(const char* p, uchar& r, uchar& g, uchar& b)
|
||||
{
|
||||
if (*p == '#') p++;
|
||||
size_t n = strlen(p);
|
||||
size_t m = n/3;
|
||||
const char *pattern = 0;
|
||||
switch(m) {
|
||||
case 1: pattern = "%1x%1x%1x"; break;
|
||||
case 2: pattern = "%2x%2x%2x"; break;
|
||||
case 3: pattern = "%3x%3x%3x"; break;
|
||||
case 4: pattern = "%4x%4x%4x"; break;
|
||||
default: return 0;
|
||||
}
|
||||
int R,G,B; if (sscanf(p,pattern,&R,&G,&B) != 3) return 0;
|
||||
switch(m) {
|
||||
case 1: R *= 0x11; G *= 0x11; B *= 0x11; break;
|
||||
case 3: R >>= 4; G >>= 4; B >>= 4; break;
|
||||
case 4: R >>= 8; G >>= 8; B >>= 8; break;
|
||||
}
|
||||
r = (uchar)R; g = (uchar)G; b = (uchar)B;
|
||||
return 1;
|
||||
}
|
||||
|
||||
//
|
||||
// End of "$Id$".
|
||||
//
|
||||
|
||||
@ -74,7 +74,6 @@ public:
|
||||
virtual int ready();
|
||||
virtual void grab(Fl_Window* win);
|
||||
// --- global colors
|
||||
virtual int parse_color(const char* p, uchar& r, uchar& g, uchar& b);
|
||||
virtual void get_system_colors();
|
||||
virtual const char *get_system_scheme();
|
||||
// --- global timers
|
||||
|
||||
@ -167,31 +167,6 @@ void Fl_Cocoa_Screen_Driver::grab(Fl_Window* win)
|
||||
}
|
||||
|
||||
|
||||
// simulation of XParseColor:
|
||||
int Fl_Cocoa_Screen_Driver::parse_color(const char* p, uchar& r, uchar& g, uchar& b)
|
||||
{
|
||||
if (*p == '#') p++;
|
||||
size_t n = strlen(p);
|
||||
size_t m = n/3;
|
||||
const char *pattern = 0;
|
||||
switch(m) {
|
||||
case 1: pattern = "%1x%1x%1x"; break;
|
||||
case 2: pattern = "%2x%2x%2x"; break;
|
||||
case 3: pattern = "%3x%3x%3x"; break;
|
||||
case 4: pattern = "%4x%4x%4x"; break;
|
||||
default: return 0;
|
||||
}
|
||||
int R,G,B; if (sscanf(p,pattern,&R,&G,&B) != 3) return 0;
|
||||
switch(m) {
|
||||
case 1: R *= 0x11; G *= 0x11; B *= 0x11; break;
|
||||
case 3: R >>= 4; G >>= 4; B >>= 4; break;
|
||||
case 4: R >>= 8; G >>= 8; B >>= 8; break;
|
||||
}
|
||||
r = (uchar)R; g = (uchar)G; b = (uchar)B;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static void set_selection_color(uchar r, uchar g, uchar b)
|
||||
{
|
||||
Fl::set_color(FL_SELECTION_COLOR,r,g,b);
|
||||
|
||||
@ -48,7 +48,6 @@ public:
|
||||
virtual int ready();
|
||||
virtual void grab(Fl_Window* win);
|
||||
// --- global colors
|
||||
virtual int parse_color(const char* p, uchar& r, uchar& g, uchar& b);
|
||||
virtual void get_system_colors();
|
||||
// --- global timers
|
||||
virtual void add_timeout(double time, Fl_Timeout_Handler cb, void *argp);
|
||||
|
||||
@ -108,12 +108,6 @@ void Fl_Pico_Screen_Driver::grab(Fl_Window* win)
|
||||
}
|
||||
|
||||
|
||||
int Fl_Pico_Screen_Driver::parse_color(const char* p, uchar& r, uchar& g, uchar& b)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void Fl_Pico_Screen_Driver::get_system_colors()
|
||||
{
|
||||
}
|
||||
@ -142,4 +136,4 @@ void Fl_Pico_Screen_Driver::remove_timeout(Fl_Timeout_Handler cb, void *argp)
|
||||
|
||||
//
|
||||
// End of "$Id$".
|
||||
//
|
||||
//
|
||||
|
||||
@ -70,7 +70,6 @@ public:
|
||||
virtual int ready();
|
||||
virtual void grab(Fl_Window* win);
|
||||
// --- global colors
|
||||
virtual int parse_color(const char* p, uchar& r, uchar& g, uchar& b);
|
||||
virtual void get_system_colors();
|
||||
virtual const char *get_system_scheme();
|
||||
// --- global timers
|
||||
|
||||
@ -299,31 +299,6 @@ void Fl_WinAPI_Screen_Driver::grab(Fl_Window* win)
|
||||
}
|
||||
|
||||
|
||||
// simulation of XParseColor:
|
||||
int Fl_WinAPI_Screen_Driver::parse_color(const char* p, uchar& r, uchar& g, uchar& b)
|
||||
{
|
||||
if (*p == '#') p++;
|
||||
size_t n = strlen(p);
|
||||
size_t m = n/3;
|
||||
const char *pattern = 0;
|
||||
switch(m) {
|
||||
case 1: pattern = "%1x%1x%1x"; break;
|
||||
case 2: pattern = "%2x%2x%2x"; break;
|
||||
case 3: pattern = "%3x%3x%3x"; break;
|
||||
case 4: pattern = "%4x%4x%4x"; break;
|
||||
default: return 0;
|
||||
}
|
||||
int R,G,B; if (sscanf(p,pattern,&R,&G,&B) != 3) return 0;
|
||||
switch(m) {
|
||||
case 1: R *= 0x11; G *= 0x11; B *= 0x11; break;
|
||||
case 3: R >>= 4; G >>= 4; B >>= 4; break;
|
||||
case 4: R >>= 8; G >>= 8; B >>= 8; break;
|
||||
}
|
||||
r = (uchar)R; g = (uchar)G; b = (uchar)B;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static void set_selection_color(uchar r, uchar g, uchar b)
|
||||
{
|
||||
Fl::set_color(FL_SELECTION_COLOR,r,g,b);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user