5.1 Screen Backend
Renders debug output as overlay on the screen:
void d3tui_debug_screen_init(uint16_t width, uint16_t height) {
// Initialize screen buffer
screen_buffer = malloc(width * height * sizeof(uint32_t));
screen_width = width;
screen_height = height;
screen_x = 0;
screen_y = 0;
// Add to backends
d3tui_debug_backend_t backend = {
.name = "screen",
.write = d3tui_debug_screen_write,
.flush = d3tui_debug_screen_flush,
.userdata = NULL
};
d3tui_debug_add_backend(&backend);
}
void d3tui_debug_screen_write(const char *msg, size_t len) {
// Render text to screen buffer
for (size_t i = 0; i < len; i++) {
if (msg[i] == '\n') {
screen_x = 0;
screen_y += font_height;
} else {
d3tui_render_char(screen_buffer, screen_width, screen_height,
screen_x, screen_y, msg[i]);
screen_x += font_width;
}
}
}
void d3tui_debug_screen_flush(void) {
// Render screen buffer to PVR2
d3tui_render_flush(screen_buffer);
}