summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2021-05-28 13:29:05 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2021-05-28 13:30:59 +0200
commitd95dd7acc4af3a4bd521d151ba3576b91d8ace53 (patch)
treecda2a4e0b87730f5357cb01bc7e3a8e035d739dc /src
parent47ba6632b1be5ab7f28726735fc7789916191ca7 (diff)
New virtual member function Fl_Graphics_Driver::colored_rectf().
Diffstat (limited to 'src')
-rw-r--r--src/Fl_Graphics_Driver.cxx5
-rw-r--r--src/drivers/Android/Fl_Android_Graphics_Driver.cxx13
-rw-r--r--src/drivers/GDI/Fl_GDI_Graphics_Driver.H3
-rw-r--r--src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx10
-rw-r--r--src/drivers/GDI/Fl_GDI_Graphics_Driver_line_style.cxx1
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx4
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H1
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx8
8 files changed, 19 insertions, 26 deletions
diff --git a/src/Fl_Graphics_Driver.cxx b/src/Fl_Graphics_Driver.cxx
index 3ac4d3154..d558b739b 100644
--- a/src/Fl_Graphics_Driver.cxx
+++ b/src/Fl_Graphics_Driver.cxx
@@ -461,6 +461,11 @@ void Fl_Graphics_Driver::rect(int x, int y, int w, int h) {}
/** see fl_rectf() */
void Fl_Graphics_Driver::rectf(int x, int y, int w, int h) {}
+void Fl_Graphics_Driver::colored_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) {
+ color(r, g, b);
+ rectf(x, y, w, h);
+}
+
/** see fl_line(int, int, int, int) */
void Fl_Graphics_Driver::line(int x, int y, int x1, int y1) {}
diff --git a/src/drivers/Android/Fl_Android_Graphics_Driver.cxx b/src/drivers/Android/Fl_Android_Graphics_Driver.cxx
index 1aed581de..75c4e082a 100644
--- a/src/drivers/Android/Fl_Android_Graphics_Driver.cxx
+++ b/src/drivers/Android/Fl_Android_Graphics_Driver.cxx
@@ -1255,16 +1255,3 @@ void Fl_Android_Graphics_Driver::color(uchar r, uchar g, uchar b)
{
color( (((Fl_Color)r)<<24)|(((Fl_Color)g)<<16)|(((Fl_Color)b)<<8) );
}
-
-/**
- Draw a rectangle that may be dithered if we are in colormap mode (which in
- the year 2018 is as likely has a user with a berstein colored tube TV).
- FIXME: This function should be virtual as well, or should not exist at all.
- */
-void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) {
-#if USE_COLORMAP
- // ...
-#endif
- fl_color(r,g,b);
- fl_rectf(x,y,w,h);
-}
diff --git a/src/drivers/GDI/Fl_GDI_Graphics_Driver.H b/src/drivers/GDI/Fl_GDI_Graphics_Driver.H
index 9016e9f5a..76d9c5c01 100644
--- a/src/drivers/GDI/Fl_GDI_Graphics_Driver.H
+++ b/src/drivers/GDI/Fl_GDI_Graphics_Driver.H
@@ -98,6 +98,9 @@ protected:
virtual void point(int x, int y);
void focus_rect(int x, int y, int w, int h);
virtual void rectf_unscaled(int x, int y, int w, int h);
+#if USE_COLORMAP
+ virtual void colored_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b);
+#endif
virtual void line_unscaled(int x, int y, int x1, int y1);
virtual void line_unscaled(int x, int y, int x1, int y1, int x2, int y2);
virtual void xyline_unscaled(int x, int y, int x1);
diff --git a/src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx b/src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx
index 103264068..e10466088 100644
--- a/src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx
+++ b/src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx
@@ -320,19 +320,19 @@ void Fl_GDI_Graphics_Driver::draw_image_mono_unscaled(Fl_Draw_Image_Cb cb, void*
}
}
-void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) {
#if USE_COLORMAP
+void Fl_GDI_Graphics_Driver::colored_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) {
// use the error diffusion dithering code to produce a much nicer block:
if (fl_palette) {
uchar c[3];
c[0] = r; c[1] = g; c[2] = b;
- innards(c,x,y,w,h,0,0,0,0,0,(HDC)fl_graphics_driver->gc());
+ innards(c, floor(x), floor(y), floor(x + w) - floor(x), floor(y + h) - floor(y),
+ 0,0,0,0,0, (HDC)gc());
return;
}
-#endif
- fl_color(r,g,b);
- fl_rectf(x,y,w,h);
+ Fl_Graphics_Driver::colored_rectf(x, y, w, h, r, g, b);
}
+#endif
// 'fl_create_bitmask()' - Create an N-bit bitmap for masking...
Fl_Bitmask Fl_GDI_Graphics_Driver::create_bitmask(int w, int h, const uchar *data) {
diff --git a/src/drivers/GDI/Fl_GDI_Graphics_Driver_line_style.cxx b/src/drivers/GDI/Fl_GDI_Graphics_Driver_line_style.cxx
index 2cf6d8260..91cfe2ca4 100644
--- a/src/drivers/GDI/Fl_GDI_Graphics_Driver_line_style.cxx
+++ b/src/drivers/GDI/Fl_GDI_Graphics_Driver_line_style.cxx
@@ -46,6 +46,7 @@ void Fl_GDI_Graphics_Driver::line_style_unscaled(int style, int width, char* das
s1 |= style & 0xff; // allow them to pass any low 8 bits for style
}
if ((style || n) && !width) width = int(scale()); // fix cards that do nothing for 0?
+ if (!width) width = 1;
if (!fl_current_xmap) color(FL_BLACK);
LOGBRUSH penbrush = {BS_SOLID,fl_RGB(),0}; // can this be fl_brush()?
HPEN newpen = ExtCreatePen(s1, width, &penbrush, n, n ? a : 0);
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx
index dd73fc877..739e5b2c9 100644
--- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx
@@ -121,10 +121,6 @@ void Fl_Quartz_Graphics_Driver::draw_image_mono(Fl_Draw_Image_Cb cb, void* data,
innards(0,x,y,w,h,d,0,1,cb,data,gc_,this);
}
-void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) {
- fl_color(r,g,b);
- fl_rectf(x,y,w,h);
-}
void Fl_Quartz_Graphics_Driver::draw_bitmap(Fl_Bitmap *bm, int XP, int YP, int WP, int HP, int cx, int cy) {
int X, Y, W, H;
diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H
index bae7640be..4dbf3c3ce 100644
--- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H
+++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H
@@ -143,6 +143,7 @@ protected:
void fixloop();
virtual void focus_rect(int x, int y, int w, int h);
virtual void rectf_unscaled(int x, int y, int w, int h);
+ virtual void colored_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b);
virtual void line_unscaled(int x, int y, int x1, int y1);
virtual void xyline_unscaled(int x, int y, int x1);
virtual void *change_pen_width(int lwidth);
diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx
index 9b2fc6970..3b431e7dc 100644
--- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx
+++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx
@@ -602,14 +602,14 @@ void Fl_Xlib_Graphics_Driver::draw_image_mono_unscaled(Fl_Draw_Image_Cb cb, void
innards(0,x+floor(offset_x_),y+floor(offset_y_),w,h,d,0,1,cb,data,0,gc_);
}
-void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) {
+void Fl_Xlib_Graphics_Driver::colored_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) {
if (fl_visual->depth > 16) {
- fl_color(r,g,b);
- fl_rectf(x,y,w,h);
+ Fl_Graphics_Driver::colored_rectf(x, y, w, h, r, g, b);
} else {
uchar c[3];
c[0] = r; c[1] = g; c[2] = b;
- innards(c,x,y,w,h,0,0,0,0,0,0,(GC)fl_graphics_driver->gc());
+ innards(c, floor(x), floor(y), floor(x + w) - floor(x), floor(y + h) - floor(y),
+ 0,0,0,0,0,0, (GC)gc());
}
}