summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2011-02-06 12:32:23 +0000
committerManolo Gouy <Manolo>2011-02-06 12:32:23 +0000
commit6a5feafe23e6e37009312aa40b63d19ad9cff886 (patch)
treea5d1d7b429cec1ae3f21647e9777a5bc66c0b8c3
parent5e7232e776d3325ecc1a336453a3f846a1872ff1 (diff)
Replaced global variable fl_color_ by a private member of the Fl_Graphics_Driver class,
and a public getter to it: Fl_Graphics_Driver::color(). git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8384 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--FL/Fl_Device.H7
-rw-r--r--FL/fl_draw.H4
-rw-r--r--src/Fl_PostScript.cxx2
-rw-r--r--src/Fl_cocoa.mm3
-rw-r--r--src/fl_color.cxx7
-rw-r--r--src/fl_color_mac.cxx6
-rw-r--r--src/fl_color_win32.cxx6
-rw-r--r--src/fl_font_xft.cxx8
8 files changed, 18 insertions, 25 deletions
diff --git a/FL/Fl_Device.H b/FL/Fl_Device.H
index 42b386e9c..705d17be1 100644
--- a/FL/Fl_Device.H
+++ b/FL/Fl_Device.H
@@ -114,6 +114,7 @@ public:
class FL_EXPORT Fl_Graphics_Driver : public Fl_Device {
Fl_Font font_; // current font
Fl_Fontsize size_; // current font size
+ Fl_Color color_; // current color
enum {LINE, LOOP, POLYGON, POINT_};
int sptr;
matrix stack[MATRIX_STACK_SIZE];
@@ -236,7 +237,7 @@ protected:
/** \brief see fl_rtl_draw(const char *str, int n, int x, int y). */
virtual void rtl_draw(const char *str, int n, int x, int y) = 0;
/** \brief see fl_color(Fl_Color c). */
- virtual void color(Fl_Color c) = 0;
+ virtual void color(Fl_Color c) {color_ = c;}
/** \brief see fl_color(uchar r, uchar g, uchar b). */
virtual void color(uchar r, uchar g, uchar b) = 0;
/** \brief see fl_point(int x, int y). */
@@ -350,10 +351,12 @@ public:
static const char *class_id;
/** \brief see fl_font(Fl_Font face, Fl_Fontsize size). */
virtual void font(Fl_Font face, Fl_Fontsize size) {font_ = face; size_ = size;}
- /** \brief see fl_font(). */
+ /** \brief see fl_font(void). */
Fl_Font font() {return font_; }
/** \brief see fl_size(). */
Fl_Fontsize size() {return size_; }
+ /** \brief see fl_color(void). */
+ Fl_Color color() {return color_;}
/** \brief The destructor */
virtual ~Fl_Graphics_Driver() {};
};
diff --git a/FL/fl_draw.H b/FL/fl_draw.H
index 5d197e403..a9651846d 100644
--- a/FL/fl_draw.H
+++ b/FL/fl_draw.H
@@ -72,13 +72,11 @@ inline void fl_color(int c) {fl_color((Fl_Color)c);}
\param[in] r,g,b color components
*/
inline void fl_color(uchar r, uchar g, uchar b) {fl_graphics_driver->color(r,g,b); } // select actual color
-/** \brief The current color */
-extern FL_EXPORT Fl_Color fl_color_;
/**
Returns the last fl_color() that was set.
This can be used for state save/restore.
*/
-inline Fl_Color fl_color() {return fl_color_;}
+inline Fl_Color fl_color() {return fl_graphics_driver->color();}
/** @} */
/** \addtogroup fl_drawings
diff --git a/src/Fl_PostScript.cxx b/src/Fl_PostScript.cxx
index 178d2b479..6aea75ba7 100644
--- a/src/Fl_PostScript.cxx
+++ b/src/Fl_PostScript.cxx
@@ -940,7 +940,7 @@ void Fl_PostScript_Graphics_Driver::color(Fl_Color c) {
}
void Fl_PostScript_Graphics_Driver::color(unsigned char r, unsigned char g, unsigned char b) {
- fl_color_ = fl_rgb_color(r, g, b);
+ Fl_Graphics_Driver::color( fl_rgb_color(r, g, b) );
cr_ = r; cg_ = g; cb_ = b;
if (r == g && g == b) {
double gray = r/255.0;
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm
index ae328930a..2783f7673 100644
--- a/src/Fl_cocoa.mm
+++ b/src/Fl_cocoa.mm
@@ -2238,7 +2238,6 @@ void Fl_Window::make_current()
}
// helper function to manage the current CGContext fl_gc
-extern Fl_Color fl_color_;
extern class Fl_Font_Descriptor *fl_fontsize;
extern void fl_font(class Fl_Font_Descriptor*);
extern void fl_quartz_restore_line_style_();
@@ -2253,7 +2252,7 @@ void Fl_X::q_fill_context() {
CGContextScaleCTM(fl_gc, 1.0f, -1.0f); // now 0,0 is top-left point of the context
}
fl_font(fl_fontsize);
- fl_color(fl_color_);
+ fl_color(fl_graphics_driver->color());
fl_quartz_restore_line_style_();
}
diff --git a/src/fl_color.cxx b/src/fl_color.cxx
index bac31d189..04a56f0a4 100644
--- a/src/fl_color.cxx
+++ b/src/fl_color.cxx
@@ -124,22 +124,19 @@ Fl_XColor fl_xmap[1][256];
# define fl_overlay 0
# endif
-/** Current color for drawing operations */
-Fl_Color fl_color_;
-
void Fl_Xlib_Graphics_Driver::color(Fl_Color i) {
if (i & 0xffffff00) {
unsigned rgb = (unsigned)i;
fl_color((uchar)(rgb >> 24), (uchar)(rgb >> 16), (uchar)(rgb >> 8));
} else {
- fl_color_ = i;
+ Fl_Graphics_Driver::color(i);
if(!fl_gc) return; // don't get a default gc if current window is not yet created/valid
XSetForeground(fl_display, fl_gc, fl_xpixel(i));
}
}
void Fl_Xlib_Graphics_Driver::color(uchar r,uchar g,uchar b) {
- fl_color_ = fl_rgb_color(r, g, b);
+ Fl_Graphics_Driver::color( fl_rgb_color(r, g, b) );
if(!fl_gc) return; // don't get a default gc if current window is not yet created/valid
XSetForeground(fl_display, fl_gc, fl_xpixel(r,g,b));
}
diff --git a/src/fl_color_mac.cxx b/src/fl_color_mac.cxx
index 77d7daabe..b01bc6f25 100644
--- a/src/fl_color_mac.cxx
+++ b/src/fl_color_mac.cxx
@@ -47,10 +47,8 @@ Fl_XMap fl_xmap[256];
Fl_XMap* fl_current_xmap;
-Fl_Color fl_color_;
-
void Fl_Quartz_Graphics_Driver::color(Fl_Color i) {
- fl_color_ = i;
+ Fl_Graphics_Driver::color(i);
int index;
uchar r, g, b;
if (i & 0xFFFFFF00) {
@@ -75,7 +73,7 @@ void Fl_Quartz_Graphics_Driver::color(Fl_Color i) {
}
void Fl_Quartz_Graphics_Driver::color(uchar r, uchar g, uchar b) {
- fl_color_ = fl_rgb_color(r, g, b);
+ Fl_Graphics_Driver::color( fl_rgb_color(r, g, b) );
float fr = r/255.0f;
float fg = g/255.0f;
float fb = b/255.0f;
diff --git a/src/fl_color_win32.cxx b/src/fl_color_win32.cxx
index 945466ce7..badb00a4c 100644
--- a/src/fl_color_win32.cxx
+++ b/src/fl_color_win32.cxx
@@ -92,14 +92,12 @@ static void set_xmap(Fl_XMap& xmap, COLORREF c) {
xmap.brush = -1;
}
-Fl_Color fl_color_;
-
void Fl_GDI_Graphics_Driver::color(Fl_Color i) {
if (i & 0xffffff00) {
unsigned rgb = (unsigned)i;
fl_color((uchar)(rgb >> 24), (uchar)(rgb >> 16), (uchar)(rgb >> 8));
} else {
- fl_color_ = i;
+ Fl_Graphics_Driver::color(i);
Fl_XMap &xmap = fl_xmap[i];
if (!xmap.pen) {
#if USE_COLORMAP
@@ -121,7 +119,7 @@ void Fl_GDI_Graphics_Driver::color(Fl_Color i) {
void Fl_GDI_Graphics_Driver::color(uchar r, uchar g, uchar b) {
static Fl_XMap xmap;
COLORREF c = RGB(r,g,b);
- fl_color_ = fl_rgb_color(r, g, b);
+ Fl_Graphics_Driver::color( fl_rgb_color(r, g, b) );
if (!xmap.pen || c != xmap.rgb) {
clear_xmap(xmap);
set_xmap(xmap, c);
diff --git a/src/fl_font_xft.cxx b/src/fl_font_xft.cxx
index e6036f9a5..d1411ffc5 100644
--- a/src/fl_font_xft.cxx
+++ b/src/fl_font_xft.cxx
@@ -614,8 +614,8 @@ void Fl_Xlib_Graphics_Driver::draw(const char *str, int n, int x, int y) {
// Use fltk's color allocator, copy the results to match what
// XftCollorAllocValue returns:
XftColor color;
- color.pixel = fl_xpixel(fl_color_);
- uchar r,g,b; Fl::get_color(fl_color_, r,g,b);
+ color.pixel = fl_xpixel(fl_graphics_driver->color());
+ uchar r,g,b; Fl::get_color(fl_graphics_driver->color(), r,g,b);
color.color.red = ((int)r)*0x101;
color.color.green = ((int)g)*0x101;
color.color.blue = ((int)b)*0x101;
@@ -659,8 +659,8 @@ static void fl_drawUCS4(const FcChar32 *str, int n, int x, int y) {
// Use fltk's color allocator, copy the results to match what
// XftCollorAllocValue returns:
XftColor color;
- color.pixel = fl_xpixel(fl_color_);
- uchar r,g,b; Fl::get_color(fl_color_, r,g,b);
+ color.pixel = fl_xpixel(fl_graphics_driver->color());
+ uchar r,g,b; Fl::get_color(fl_graphics_driver->color(), r,g,b);
color.color.red = ((int)r)*0x101;
color.color.green = ((int)g)*0x101;
color.color.blue = ((int)b)*0x101;