From b9cba1d00a08e5fa5585f31cea5bb84f7dec75b5 Mon Sep 17 00:00:00 2001 From: lephe Date: Tue, 3 Sep 2019 22:22:39 +0200 Subject: [PATCH] style, formatting, font --- include/gint/display.h | 26 +++++++++++++------------- include/gint/keyboard.h | 2 +- src/font8x9.png | Bin 17342 -> 17300 bytes src/render-fx/dtext.c | 2 +- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/include/gint/display.h b/include/gint/display.h index d5dd9fd..1ec139c 100644 --- a/include/gint/display.h +++ b/include/gint/display.h @@ -28,7 +28,7 @@ // Video RAM management //--- -/* dupdate() - push the video RAM to the display driver +/* dupdate(): Push the video RAM to the display driver This function makes the contents of the VRAM visible on the screen. It is the direct equivalent of Bdisp_PutDisp_DD(). @@ -41,7 +41,7 @@ void dupdate(void); // Area rendering functions //--- -/* dclear() - fill the screen with a single color +/* dclear(): Fill the screen with a single color This function clears the screen by painting all the pixels in a single color. It is optimized for opaque colors. @@ -51,7 +51,7 @@ void dupdate(void); fxcg50: Any R5G6B5 color */ void dclear(color_t color); -/* drect() - fill a rectangle of the screen +/* drect(): Fill a rectangle of the screen This functions applies a color or an operator to a rectangle defined by two points (x1 y1) and (x2 y2). Both are included in the rectangle. @@ -64,7 +64,7 @@ void drect(int x1, int y1, int x2, int y2, color_t color); // Point drawing functions //--- -/* dpixel() - change a pixel's color +/* dpixel(): Change a pixel's color Paints the selected pixel with an opaque color. Setting pixels individually is a slow method for rendering. Other functions that draw lines, rectangles, images or text will take advantage of possible optimizations to make the @@ -78,7 +78,7 @@ void drect(int x1, int y1, int x2, int y2, color_t color); fxcg50: Any R5G6B5 color */ void dpixel(int x, int y, color_t color); -/* dline() - render a straight line +/* dline(): Render a straight line This function draws a line using a Bresenham-style algorithm. Please note that dline() may not render lines exactly like Bdisp_DrawLineVRAM(). @@ -147,7 +147,7 @@ typedef struct } GPACKED(4) font_t; -/* dfont() - set the default font for text rendering +/* dfont(): Set the default font for text rendering This font will be used by dtext() and sister functions. If [font = NULL], gint's default font is used. @@ -158,7 +158,7 @@ typedef struct Returns the previously configured font. */ font_t const *dfont(font_t const * font); -/* dsize() - get the width and height of rendered text +/* dsize(): Get the width and height of rendered text This function computes the size that the given string would take up if rendered with a certain font. If you specify a NULL font, the currently configured font will be used; this is different from dfont(), which uses @@ -175,9 +175,9 @@ font_t const *dfont(font_t const * font); @str String whose size must be evaluated @font Font to use; if NULL, defaults to the current font @w @h Set to the width and height of the rendered text, may be NULL */ -void dsize(const char *str, font_t const * font, int *w, int *h); +void dsize(char const *str, font_t const * font, int *w, int *h); -/* dtext() - display a string of text +/* dtext(): Display a string of text Draws some text in the video RAM using the font set with dfont() (or gint's default if no such font was set). @@ -197,7 +197,7 @@ void dsize(const char *str, font_t const * font, int *w, int *h); @bg Background color fx9860g: white, black, none, invert fxcg50: Any R5G6B5 color, or C_NONE */ -void dtext(int x, int y, const char *str, int fg, int bg); +void dtext(int x, int y, char const *str, int fg, int bg); /* dprint(): Display a formatted string Much like dtext(), but accepts printf-like formats with arguments. See @@ -210,7 +210,7 @@ void dprint(int x, int y, int fg, int bg, char const *format, ...); /* The image_t structure is platform-dependent. */ -/* dimage() - render a full image +/* dimage(): Render a full image This function blits an image on the VRAM using gint's special format. It is a special case of dsubimage() where the full image is drawn with clipping. @@ -229,7 +229,7 @@ enum { DIMAGE_NOCLIP = 0x01, }; -/* dsubimage() - render a section of an image +/* dsubimage(): Render a section of an image This function blits a subrectangle [left, top, width, height] of an image on the VRAM. It is more general than dimage() and also provides a few options. @@ -245,7 +245,7 @@ void dsubimage(int x, int y, image_t const *image, int left, int top, // Advanced functions //--- -/* dupdate_noint() - Push VRAM to the display without interrupts +/* dupdate_noint(): Push VRAM to the display without interrupts This function does exactly as dupdate(), but does not use interrupts and always returns when the transfer is finished. It actively waits for the end of the transfer and is thus bad for any general-purpose use. In fact, it is diff --git a/include/gint/keyboard.h b/include/gint/keyboard.h index 2addd19..56a72f7 100644 --- a/include/gint/keyboard.h +++ b/include/gint/keyboard.h @@ -92,7 +92,7 @@ enum /* pollevent() - poll the next keyboard event This function returns the next yet-unpolled event from the keyboard buffer. - If no event is available, it returns a dummy event with type = KEYEV_NONE. + If no event is available, it returns a dummy event with type=KEYEV_NONE. This function always returns events with mod=0. */ key_event_t pollevent(void); diff --git a/src/font8x9.png b/src/font8x9.png index 36acd5c32966dd6f94c53e7ab9bb8e33701f8ba7..5bb9748adc453b18e937c3823d8973d7e79f1130 100644 GIT binary patch delta 17253 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 W!>t)Gw7UNQ0000 #include "topti-asm.h" -/* dtext() - display a string of text */ +/* dtext(): Display a string of text */ GSECTION(".pretext") void dtext(int x, int y, char const *str, int fg, int bg) {