mirror of
https://github.com/fltk/fltk.git
synced 2026-05-27 10:57:58 +08:00
New virtual member function Fl_Graphics_Driver::colored_rectf().
This commit is contained in:
@@ -257,6 +257,8 @@ public:
|
|||||||
virtual void rect(int x, int y, int w, int h);
|
virtual void rect(int x, int y, int w, int h);
|
||||||
virtual void focus_rect(int x, int y, int w, int h);
|
virtual void focus_rect(int x, int y, int w, int h);
|
||||||
virtual void rectf(int x, int y, int w, int h);
|
virtual void rectf(int x, int y, int w, int h);
|
||||||
|
// the default implementation is most likely enough
|
||||||
|
virtual void colored_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b);
|
||||||
virtual void line(int x, int y, int x1, int y1);
|
virtual void line(int x, int y, int x1, int y1);
|
||||||
/** see fl_line(int, int, int, int, int, int) */
|
/** see fl_line(int, int, int, int, int, int) */
|
||||||
virtual void line(int x, int y, int x1, int y1, int x2, int y2);
|
virtual void line(int x, int y, int x1, int y1, int x2, int y2);
|
||||||
|
|||||||
+1
-2
@@ -264,8 +264,7 @@ inline void fl_rectf(int x, int y, int w, int h, Fl_Color c) {fl_color(c); fl_re
|
|||||||
solid-colored block using fl_draw_image() so that the correct color
|
solid-colored block using fl_draw_image() so that the correct color
|
||||||
shade is produced.
|
shade is produced.
|
||||||
*/
|
*/
|
||||||
/* note: doxygen comment here to avoid triplication in os-speciic files */
|
inline void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) { fl_graphics_driver->colored_rectf(x,y,w,h,r,g,b); }
|
||||||
FL_EXPORT void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b);
|
|
||||||
|
|
||||||
// line segments:
|
// line segments:
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -461,6 +461,11 @@ void Fl_Graphics_Driver::rect(int x, int y, int w, int h) {}
|
|||||||
/** see fl_rectf() */
|
/** see fl_rectf() */
|
||||||
void Fl_Graphics_Driver::rectf(int x, int y, int w, int h) {}
|
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) */
|
/** see fl_line(int, int, int, int) */
|
||||||
void Fl_Graphics_Driver::line(int x, int y, int x1, int y1) {}
|
void Fl_Graphics_Driver::line(int x, int y, int x1, int y1) {}
|
||||||
|
|
||||||
|
|||||||
@@ -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) );
|
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);
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -98,6 +98,9 @@ protected:
|
|||||||
virtual void point(int x, int y);
|
virtual void point(int x, int y);
|
||||||
void focus_rect(int x, int y, int w, int h);
|
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 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);
|
||||||
virtual void line_unscaled(int x, int y, int x1, int y1, int x2, int y2);
|
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);
|
virtual void xyline_unscaled(int x, int y, int x1);
|
||||||
|
|||||||
@@ -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
|
#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:
|
// use the error diffusion dithering code to produce a much nicer block:
|
||||||
if (fl_palette) {
|
if (fl_palette) {
|
||||||
uchar c[3];
|
uchar c[3];
|
||||||
c[0] = r; c[1] = g; c[2] = b;
|
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;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
Fl_Graphics_Driver::colored_rectf(x, y, w, h, r, g, b);
|
||||||
fl_color(r,g,b);
|
|
||||||
fl_rectf(x,y,w,h);
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// 'fl_create_bitmask()' - Create an N-bit bitmap for masking...
|
// '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) {
|
Fl_Bitmask Fl_GDI_Graphics_Driver::create_bitmask(int w, int h, const uchar *data) {
|
||||||
|
|||||||
@@ -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
|
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 ((style || n) && !width) width = int(scale()); // fix cards that do nothing for 0?
|
||||||
|
if (!width) width = 1;
|
||||||
if (!fl_current_xmap) color(FL_BLACK);
|
if (!fl_current_xmap) color(FL_BLACK);
|
||||||
LOGBRUSH penbrush = {BS_SOLID,fl_RGB(),0}; // can this be fl_brush()?
|
LOGBRUSH penbrush = {BS_SOLID,fl_RGB(),0}; // can this be fl_brush()?
|
||||||
HPEN newpen = ExtCreatePen(s1, width, &penbrush, n, n ? a : 0);
|
HPEN newpen = ExtCreatePen(s1, width, &penbrush, n, n ? a : 0);
|
||||||
|
|||||||
@@ -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);
|
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) {
|
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;
|
int X, Y, W, H;
|
||||||
|
|||||||
@@ -143,6 +143,7 @@ protected:
|
|||||||
void fixloop();
|
void fixloop();
|
||||||
virtual void focus_rect(int x, int y, int w, int h);
|
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 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 line_unscaled(int x, int y, int x1, int y1);
|
||||||
virtual void xyline_unscaled(int x, int y, int x1);
|
virtual void xyline_unscaled(int x, int y, int x1);
|
||||||
virtual void *change_pen_width(int lwidth);
|
virtual void *change_pen_width(int lwidth);
|
||||||
|
|||||||
@@ -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_);
|
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) {
|
if (fl_visual->depth > 16) {
|
||||||
fl_color(r,g,b);
|
Fl_Graphics_Driver::colored_rectf(x, y, w, h, r, g, b);
|
||||||
fl_rectf(x,y,w,h);
|
|
||||||
} else {
|
} else {
|
||||||
uchar c[3];
|
uchar c[3];
|
||||||
c[0] = r; c[1] = g; c[2] = b;
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user