Mercurial > foo_out_sdl
comparison SDL3/SDL_test_font.h @ 1:20d02a178406 default tip
*: check in everything else
yay
| author | Paper <paper@tflc.us> |
|---|---|
| date | Mon, 05 Jan 2026 02:15:46 -0500 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 0:e9bb126753e7 | 1:20d02a178406 |
|---|---|
| 1 /* | |
| 2 Simple DirectMedia Layer | |
| 3 Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org> | |
| 4 | |
| 5 This software is provided 'as-is', without any express or implied | |
| 6 warranty. In no event will the authors be held liable for any damages | |
| 7 arising from the use of this software. | |
| 8 | |
| 9 Permission is granted to anyone to use this software for any purpose, | |
| 10 including commercial applications, and to alter it and redistribute it | |
| 11 freely, subject to the following restrictions: | |
| 12 | |
| 13 1. The origin of this software must not be misrepresented; you must not | |
| 14 claim that you wrote the original software. If you use this software | |
| 15 in a product, an acknowledgment in the product documentation would be | |
| 16 appreciated but is not required. | |
| 17 2. Altered source versions must be plainly marked as such, and must not be | |
| 18 misrepresented as being the original software. | |
| 19 3. This notice may not be removed or altered from any source distribution. | |
| 20 */ | |
| 21 | |
| 22 /* | |
| 23 * Font related functions of SDL test framework. | |
| 24 * | |
| 25 * This code is a part of the SDL test library, not the main SDL library. | |
| 26 */ | |
| 27 | |
| 28 #ifndef SDL_test_font_h_ | |
| 29 #define SDL_test_font_h_ | |
| 30 | |
| 31 #include <SDL3/SDL_stdinc.h> | |
| 32 #include <SDL3/SDL_rect.h> | |
| 33 #include <SDL3/SDL_render.h> | |
| 34 | |
| 35 #include <SDL3/SDL_begin_code.h> | |
| 36 /* Set up for C function definitions, even when using C++ */ | |
| 37 #ifdef __cplusplus | |
| 38 extern "C" { | |
| 39 #endif | |
| 40 | |
| 41 /* Function prototypes */ | |
| 42 | |
| 43 extern int FONT_CHARACTER_SIZE; | |
| 44 | |
| 45 #define FONT_LINE_HEIGHT (FONT_CHARACTER_SIZE + 2) | |
| 46 | |
| 47 /* | |
| 48 * Draw a string in the currently set font. | |
| 49 * | |
| 50 * \param renderer The renderer to draw on. | |
| 51 * \param x The X coordinate of the upper left corner of the character. | |
| 52 * \param y The Y coordinate of the upper left corner of the character. | |
| 53 * \param c The character to draw. | |
| 54 * | |
| 55 * \returns true on success, false on failure. | |
| 56 */ | |
| 57 bool SDLCALL SDLTest_DrawCharacter(SDL_Renderer *renderer, float x, float y, Uint32 c); | |
| 58 | |
| 59 /* | |
| 60 * Draw a UTF-8 string in the currently set font. | |
| 61 * | |
| 62 * The font currently only supports characters in the Basic Latin and Latin-1 Supplement sets. | |
| 63 * | |
| 64 * \param renderer The renderer to draw on. | |
| 65 * \param x The X coordinate of the upper left corner of the string. | |
| 66 * \param y The Y coordinate of the upper left corner of the string. | |
| 67 * \param s The string to draw. | |
| 68 * | |
| 69 * \returns true on success, false on failure. | |
| 70 */ | |
| 71 bool SDLCALL SDLTest_DrawString(SDL_Renderer *renderer, float x, float y, const char *s); | |
| 72 | |
| 73 /* | |
| 74 * Data used for multi-line text output | |
| 75 */ | |
| 76 typedef struct SDLTest_TextWindow | |
| 77 { | |
| 78 SDL_FRect rect; | |
| 79 int current; | |
| 80 int numlines; | |
| 81 char **lines; | |
| 82 } SDLTest_TextWindow; | |
| 83 | |
| 84 /* | |
| 85 * Create a multi-line text output window | |
| 86 * | |
| 87 * \param x The X coordinate of the upper left corner of the window. | |
| 88 * \param y The Y coordinate of the upper left corner of the window. | |
| 89 * \param w The width of the window (currently ignored) | |
| 90 * \param h The height of the window (currently ignored) | |
| 91 * | |
| 92 * \returns the new window, or NULL on failure. | |
| 93 * | |
| 94 * \since This function is available since SDL 3.2.0. | |
| 95 */ | |
| 96 SDLTest_TextWindow * SDLCALL SDLTest_TextWindowCreate(float x, float y, float w, float h); | |
| 97 | |
| 98 /* | |
| 99 * Display a multi-line text output window | |
| 100 * | |
| 101 * This function should be called every frame to display the text | |
| 102 * | |
| 103 * \param textwin The text output window | |
| 104 * \param renderer The renderer to use for display | |
| 105 * | |
| 106 * \since This function is available since SDL 3.2.0. | |
| 107 */ | |
| 108 void SDLCALL SDLTest_TextWindowDisplay(SDLTest_TextWindow *textwin, SDL_Renderer *renderer); | |
| 109 | |
| 110 /* | |
| 111 * Add text to a multi-line text output window | |
| 112 * | |
| 113 * Adds UTF-8 text to the end of the current text. The newline character starts a | |
| 114 * new line of text. The backspace character deletes the last character or, if the | |
| 115 * line is empty, deletes the line and goes to the end of the previous line. | |
| 116 * | |
| 117 * \param textwin The text output window | |
| 118 * \param fmt A printf() style format string | |
| 119 * \param ... additional parameters matching % tokens in the `fmt` string, if any | |
| 120 * | |
| 121 * \since This function is available since SDL 3.2.0. | |
| 122 */ | |
| 123 void SDLCALL SDLTest_TextWindowAddText(SDLTest_TextWindow *textwin, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); | |
| 124 | |
| 125 /* | |
| 126 * Add text to a multi-line text output window | |
| 127 * | |
| 128 * Adds UTF-8 text to the end of the current text. The newline character starts a | |
| 129 * new line of text. The backspace character deletes the last character or, if the | |
| 130 * line is empty, deletes the line and goes to the end of the previous line. | |
| 131 * | |
| 132 * \param textwin The text output window | |
| 133 * \param text The text to add to the window | |
| 134 * \param len The length, in bytes, of the text to add to the window | |
| 135 * | |
| 136 * \since This function is available since SDL 3.2.0. | |
| 137 */ | |
| 138 void SDLCALL SDLTest_TextWindowAddTextWithLength(SDLTest_TextWindow *textwin, const char *text, size_t len); | |
| 139 | |
| 140 /* | |
| 141 * Clear the text in a multi-line text output window | |
| 142 * | |
| 143 * \param textwin The text output window | |
| 144 * | |
| 145 * \since This function is available since SDL 3.2.0. | |
| 146 */ | |
| 147 void SDLCALL SDLTest_TextWindowClear(SDLTest_TextWindow *textwin); | |
| 148 | |
| 149 /* | |
| 150 * Free the storage associated with a multi-line text output window | |
| 151 * | |
| 152 * \param textwin The text output window | |
| 153 * | |
| 154 * \since This function is available since SDL 3.2.0. | |
| 155 */ | |
| 156 void SDLCALL SDLTest_TextWindowDestroy(SDLTest_TextWindow *textwin); | |
| 157 | |
| 158 /* | |
| 159 * Cleanup textures used by font drawing functions. | |
| 160 */ | |
| 161 void SDLCALL SDLTest_CleanupTextDrawing(void); | |
| 162 | |
| 163 /* Ends C function definitions when using C++ */ | |
| 164 #ifdef __cplusplus | |
| 165 } | |
| 166 #endif | |
| 167 #include <SDL3/SDL_close_code.h> | |
| 168 | |
| 169 #endif /* SDL_test_font_h_ */ |
