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