Add rectangle drawing functions with Fl_Rect

This commit is contained in:
Albrecht Schlosser 2021-11-16 00:30:34 +01:00
parent b2979b6425
commit af0bb7e6c9

View File

@ -266,7 +266,7 @@ enum {
};
/**
Turn ON or OFF antialiased line drawings, if supported by platform.
Turn antialiased line drawings ON or OFF, if supported by platform.
Currently, only the Windows platform allows to change whether line drawings
are antialiased. Turning it OFF may accelerate heavy drawing operations.
*/
@ -290,6 +290,15 @@ inline void fl_rect(int x, int y, int w, int h) {
fl_graphics_driver->rect(x, y, w, h);
}
/**
Draw a 1-pixel border \e inside the given bounding box.
This is the same as fl_rect(int x, int y, int w, int h) but with
Fl_Rect \p r as input argument.
*/
inline void fl_rect(Fl_Rect r) {
fl_rect(r.x(), r.y(), r.w(), r.h());
}
/** Draw a dotted rectangle, used to indicate keyboard focus on a widget. */
inline void fl_focus_rect(int x, int y, int w, int h) {
fl_graphics_driver->focus_rect(x, y, w, h);
@ -312,6 +321,17 @@ inline void fl_rectf(int x, int y, int w, int h, Fl_Color c) {
fl_rectf(x, y, w, h);
}
/** Color with current color a rectangle that exactly fills the given bounding box. */
inline void fl_rectf(Fl_Rect r) {
fl_graphics_driver->rectf(r.x(), r.y(), r.w(), r.h());
}
/** Color with passed color a rectangle that exactly fills the given bounding box. */
inline void fl_rectf(Fl_Rect r, Fl_Color c) {
fl_color(c);
fl_rectf(r);
}
/**
Color a rectangle with "exactly" the passed <tt>r,g,b</tt> color.
On screens with less than 24 bits of color this is done by drawing a
@ -322,6 +342,16 @@ 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);
}
/**
Color a rectangle with "exactly" the passed <tt>r,g,b</tt> color.
This is the same as fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b)
but with Fl_Rect \p bb (bounding box) as argument instead of (x, y, w, h).
\see fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b)
*/
inline void fl_rectf(Fl_Rect bb, uchar r, uchar g, uchar b) {
fl_graphics_driver->colored_rectf(bb.x(), bb.y(), bb.w(), bb.h(), r, g, b);
}
// line segments:
/**
Draw a line from (x,y) to (x1,y1)