diff --git a/include/display/common.h b/include/display/common.h index a1ec4b2..0075e64 100644 --- a/include/display/common.h +++ b/include/display/common.h @@ -7,15 +7,15 @@ #include -/* dhline() - optimized drawing of a horizontal line +/* gint_dhline(): Optimized horizontal line @x1 @x2 @y Coordinates of endpoints of line (both included) @color Any color suitable for dline() */ -void dhline(int x1, int x2, int y, color_t color); +void gint_dhline(int x1, int x2, int y, color_t color); -/* dvline() - optimized drawing of a vertical line +/* gint_dvline(): Optimized vertical line @y1 @y2 @x Coordinates of endpoints of line (both included) @color Any color suitable for dline() */ -void dvline(int y1, int y2, int x, color_t color); +void gint_dvline(int y1, int y2, int x, color_t color); //--- // Font rendering (topti) diff --git a/include/gint/display.h b/include/gint/display.h index 1ec139c..92dae6e 100644 --- a/include/gint/display.h +++ b/include/gint/display.h @@ -95,6 +95,24 @@ void dpixel(int x, int y, color_t color); fxcg50: Any R5G6B5 color */ void dline(int x1, int y1, int x2, int y2, color_t color); +/* dhline(): Full-width horizontal line + This function draws a horizontal line from the left end of the screen to the + right end, much like the Basic command "Horizontal". + + @y Line number + @color fx9860g: white, black, none, invert + fxcg50: Any R5G6B5 color */ +void dhline(int y, color_t color); + +/* dvline(): Full-height vertical line + This function draws a vertical line from the top end of the screen to the + bottom end, much like the Basic command "Vertical". + + @x Column number + @color fx9860g: white, black, none, invert + fxcg50: Any R5G6B5 color */ +void dvline(int x, color_t color); + //--- // Text rendering (topti) //--- diff --git a/include/gint/gray.h b/include/gint/gray.h index b0325df..5def1a0 100644 --- a/include/gint/gray.h +++ b/include/gint/gray.h @@ -130,6 +130,16 @@ void gpixel(int x, int y, color_t color); @color white, light, dark, black, none, invert, lighten, darken */ void gline(int x1, int y1, int x2, int y2, color_t color); +/* ghline(): Full-width horizontal line + @y Line number + @color white, light, dark, black, none, invert, lighten, darken */ +void ghline(int y, color_t color); + +/* gvline(): Full-height vertical line + @x Column number + @color white, light, dark, black, none, invert, lighten, darken */ +void gvline(int x, color_t color); + //--- // Text rendering //--- diff --git a/src/gray/ghline.c b/src/gray/ghline.c new file mode 100644 index 0000000..5d6a15c --- /dev/null +++ b/src/gray/ghline.c @@ -0,0 +1,7 @@ +#include + +/* ghline(): Full-width horizontal line */ +void ghline(int y, color_t color) +{ + gline(0, y, 127, y, color); +} diff --git a/src/gray/gvline.c b/src/gray/gvline.c new file mode 100644 index 0000000..6e298ab --- /dev/null +++ b/src/gray/gvline.c @@ -0,0 +1,7 @@ +#include + +/* gvline(): Full-height vertical line */ +void gvline(int x, color_t color) +{ + gline(x, 0, x, 63, color); +} diff --git a/src/render-cg/dhline.c b/src/render-cg/dhline.c new file mode 100644 index 0000000..a7a88da --- /dev/null +++ b/src/render-cg/dhline.c @@ -0,0 +1,7 @@ +#include + +/* dhline(): Full-width horizontal line */ +void dhline(int y, color_t color) +{ + dline(0, y, 395, y, color); +} diff --git a/src/render-cg/dline.c b/src/render-cg/dline.c index ec01ba3..fcbf915 100644 --- a/src/render-cg/dline.c +++ b/src/render-cg/dline.c @@ -2,8 +2,8 @@ #include #include -/* dhline() - optimized drawing of a horizontal line */ -void dhline(int x1, int x2, int y, uint16_t color) +/* gint_dhline(): Optimized horizontal line */ +void gint_dhline(int x1, int x2, int y, uint16_t color) { /* Order and bounds */ if((uint)y >= 224) return; @@ -30,8 +30,8 @@ void dhline(int x1, int x2, int y, uint16_t color) while(end > start) *--end = op; } -/* dvline() - optimized drawing of a vertical line */ -void dvline(int y1, int y2, int x, uint16_t color) +/* gint_dvline(): Optimized vertical line */ +void gint_dvline(int y1, int y2, int x, uint16_t color) { /* Order and bounds */ if((uint)x >= 395) return; diff --git a/src/render-cg/dvline.c b/src/render-cg/dvline.c new file mode 100644 index 0000000..2c11797 --- /dev/null +++ b/src/render-cg/dvline.c @@ -0,0 +1,7 @@ +#include + +/* dvline(): Full-height vertical line */ +void dvline(int x, color_t color) +{ + dline(x, 0, x, 223, color); +} diff --git a/src/render-fx/dhline.c b/src/render-fx/dhline.c new file mode 100644 index 0000000..5fb6edf --- /dev/null +++ b/src/render-fx/dhline.c @@ -0,0 +1,7 @@ +#include + +/* dhline(): Full-width horizontal line */ +void dhline(int y, color_t color) +{ + dline(0, y, 127, y, color); +} diff --git a/src/render-fx/dline.c b/src/render-fx/dline.c index ebf6d9e..dba5118 100644 --- a/src/render-fx/dline.c +++ b/src/render-fx/dline.c @@ -3,8 +3,8 @@ #include #include -/* dhline() - optimized drawing of a horizontal line using a rectangle mask */ -void dhline(int x1, int x2, int y, color_t color) +/* gint_dhline(): Optimized horizontal line using a rectangle mask */ +void gint_dhline(int x1, int x2, int y, color_t color) { if((uint)y >= 64) return; if(x1 > x2) swap(x1, x2); @@ -38,8 +38,8 @@ void dhline(int x1, int x2, int y, color_t color) } } -/* dvline() - optimized drawing of a vertical line */ -void dvline(int y1, int y2, int x, color_t color) +/* gint_dvline(): Optimized vertical line */ +void gint_dvline(int y1, int y2, int x, color_t color) { if((uint)x >= 128) return; if(y1 > y2) swap(y1, y2); diff --git a/src/render-fx/dvline.c b/src/render-fx/dvline.c new file mode 100644 index 0000000..b31dd0d --- /dev/null +++ b/src/render-fx/dvline.c @@ -0,0 +1,7 @@ +#include + +/* dvline(): Full-height vertical line */ +void dvline(int x, color_t color) +{ + dline(x, 0, x, 63, color); +} diff --git a/src/render/dline.c b/src/render/dline.c index c9f9134..0328783 100644 --- a/src/render/dline.c +++ b/src/render/dline.c @@ -2,7 +2,7 @@ #include #include -/* dline() - Bresenham line drawing algorithm +/* dline(): Bresenham line drawing algorithm Remotely adapted from MonochromeLib code by Pierre "PerriotLL" Le Gall. Relies on platform-dependent dhline() and dvline() for optimized situations. @x1 @y1 @x2 @y2 Coordinates of endpoints of line (included) @@ -12,12 +12,12 @@ void dline(int x1, int y1, int x2, int y2, color_t color) /* Possible optimizations */ if(y1 == y2) { - dhline(x1, x2, y1, color); + gint_dhline(x1, x2, y1, color); return; } if(x1 == x2) { - dvline(y1, y2, x1, color); + gint_dvline(y1, y2, x1, color); return; }