checkkeys will now render text that is input

Also added test functions for multi-line debug text display

Currently this only supports ASCII, as the font doesn't have the correct Latin-1 characters
This commit is contained in:
Sam Lantinga
2022-07-01 12:56:47 -07:00
parent 209f457ea4
commit e9d5060c4c
4 changed files with 346 additions and 18 deletions

View File

@@ -38,7 +38,8 @@ extern "C" {
/* Function prototypes */
#define FONT_CHARACTER_SIZE 8
#define FONT_CHARACTER_SIZE 8
#define FONT_LINE_HEIGHT (FONT_CHARACTER_SIZE + 2)
/**
* \brief Draw a string in the currently set font.
@@ -50,10 +51,12 @@ extern "C" {
*
* \returns 0 on success, -1 on failure.
*/
int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, char c);
int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, Uint32 c);
/**
* \brief Draw a string in the currently set font.
* \brief Draw a UTF-8 string in the currently set font.
*
* The font currently only supports characters in the Basic Latin and Latin-1 Supplement sets.
*
* \param renderer The renderer to draw on.
* \param x The X coordinate of the upper left corner of the string.
@@ -64,6 +67,90 @@ int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, char c);
*/
int SDLTest_DrawString(SDL_Renderer *renderer, int x, int y, const char *s);
/**
* \brief Data used for multi-line text output
*/
typedef struct SDLTest_TextWindow
{
SDL_Rect rect;
int current;
int numlines;
char **lines;
} SDLTest_TextWindow;
/**
* \brief Create a multi-line text output window
*
* \param x The X coordinate of the upper left corner of the window.
* \param y The Y coordinate of the upper left corner of the window.
* \param w The width of the window (currently ignored)
* \param h The height of the window (currently ignored)
*
* \returns the new window, or NULL on failure.
*
* \since This function is available since SDL 2.24.0
*/
SDLTest_TextWindow *SDLTest_TextWindowCreate(int x, int y, int w, int h);
/**
* \brief Display a multi-line text output window
*
* This function should be called every frame to display the text
*
* \param textwin The text output window
* \param renderer The renderer to use for display
*
* \since This function is available since SDL 2.24.0
*/
void SDLTest_TextWindowDisplay(SDLTest_TextWindow *textwin, SDL_Renderer *renderer);
/**
* \brief Add text to a multi-line text output window
*
* Adds UTF-8 text to the end of the current text. The '\n' newline character starts a
* new line of text. The '\b' backspace character deletes the last character or, if the
* line is empty, deletes the line and goes to the end of the previous line.
*
* \param textwin The text output window
* \param fmt A printf() style format string
* \param ... additional parameters matching % tokens in the `fmt` string, if any
*
* \since This function is available since SDL 2.24.0
*/
void SDLTest_TextWindowAddText(SDLTest_TextWindow *textwin, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
/**
* \brief Add text to a multi-line text output window
*
* Adds UTF-8 text to the end of the current text. The '\n' newline character starts a
* new line of text. The '\b' backspace character deletes the last character or, if the
* line is empty, deletes the line and goes to the end of the previous line.
*
* \param textwin The text output window
* \param text The text to add to the window
* \param len The length, in bytes, of the text to add to the window
*
* \since This function is available since SDL 2.24.0
*/
void SDLTest_TextWindowAddTextWithLength(SDLTest_TextWindow *textwin, const char *text, size_t len);
/**
* \brief Clear the text in a multi-line text output window
*
* \param textwin The text output window
*
* \since This function is available since SDL 2.24.0
*/
void SDLTest_TextWindowClear(SDLTest_TextWindow *textwin);
/**
* \brief Free the storage associated with a multi-line text output window
*
* \param textwin The text output window
*
* \since This function is available since SDL 2.24.0
*/
void SDLTest_TextWindowDestroy(SDLTest_TextWindow *textwin);
/**
* \brief Cleanup textures used by font drawing functions.