diff options
| author | andromeda <andromeda@lenovo> | 2026-04-26 09:24:22 +0200 |
|---|---|---|
| committer | andromeda <andromeda@lenovo> | 2026-04-26 09:24:22 +0200 |
| commit | eb757fdef5a611e92cce10899dedb6bedc350371 (patch) | |
| tree | 99f50feb4f916d764d021396f5b2089b1f4b427d /rfont.c3 | |
| parent | c101e6571135cfd963e3c3f9543e64c445af7fd8 (diff) | |
modularise
Diffstat (limited to 'rfont.c3')
| -rw-r--r-- | rfont.c3 | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/rfont.c3 b/rfont.c3 deleted file mode 100644 index 3c7af6a..0000000 --- a/rfont.c3 +++ /dev/null @@ -1,129 +0,0 @@ -/* -* -* Copyright (C) 2026 andromeda -* -* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. -* -*/ - -module rfont; - -const int MAX_GLYPHS = 256; -const int INIT_VERTS = 20 * MAX_GLYPHS; - -alias Texture = usz; -alias Surface = void*; - -struct Render_data -{ - float* verts; - float* tcoords; - ushort* elements; - Texture atlas; - usz nverts; - usz nelements; -} - -alias Renderer_proc_size = fn usz(); -alias Renderer_proc_initPtr = fn void(void*); -alias Renderer_proc_create_atlas = fn Texture(void*, uint, uint); -alias Renderer_proc_free_atlas = fn void(void*, Texture); -alias Renderer_proc_bitmap_to_atlas = fn void(void*, Texture, uint, uint, uint, char*, float, float, float*, float*); -alias Renderer_proc_render = fn void(void*, Render_data*); -alias Renderer_proc_set_framebuffer = fn void(void*, uint, uint); -alias Renderer_proc_set_color = fn void(void*, float, float, float, float); -alias Renderer_proc_set_surface = fn void(void*, Surface); -alias Renderer_proc_freePtr = fn void(void*); - -struct Renderer_proc -{ - Renderer_proc_size size; - Renderer_proc_initPtr initPtr; - Renderer_proc_create_atlas create_atlas; - Renderer_proc_free_atlas free_atlas; - Renderer_proc_bitmap_to_atlas bitmap_to_atlas; - Renderer_proc_render render; - Renderer_proc_set_framebuffer set_framebuffer; - Renderer_proc_set_color set_color; - Renderer_proc_set_surface set_surface; - Renderer_proc_freePtr freePtr; -} - -struct Renderer -{ - void* ctx; - Renderer_proc proc; -} - -struct Font -{ - Src* src; - float fheight; - float descent; - float numOfLongHorMetrics; - float space_adv; - uint maxHeight; - Glyph[MAX_GLYPHS] glyphs; - usz glyph_len; - Texture atlas; - usz atlasWidth; - usz atlasHeight; - float atlasX; - float atlasY; - float[INIT_VERTS*3] verts; - float[INIT_VERTS*2] tcoords; - ushort[INIT_VERTS*6] elements; -} - -struct Glyph -{ - uint codepoint; - usz size; - int x; - int x2; - int y; - int y2; - Font* font; - int src; - float w; - float h; - float x1; - float y1; - float advance; -} - -alias Src = void; - -alias Glyph_fallback_callback = fn Glyph(Renderer*, Font*, uint, usz); - -extern fn CChar* codepoint_to_utf8(uint) @cname("RFont_codepoint_to_utf8"); -extern fn Font* font_init(Renderer*, ZString, uint, usz, usz) @cname("RFont_font_init"); -extern fn Font* font_init_ptr(Renderer*, ZString, uint, usz, usz, Font*) @cname("RFont_font_init_ptr"); -extern fn Font* font_init_data(Renderer*, char*, uint, usz, usz) @cname("RFont_font_init_data"); -extern fn Font* font_init_data_ptr(Renderer*, char*, uint, usz, usz, Font*) @cname("RFont_font_init_data_ptr"); -extern fn void font_free(Renderer*, Font*) @cname("RFont_font_free"); -extern fn void font_free_ptr(Renderer*, Font*) @cname("RFont_font_free_ptr"); -extern fn Glyph_fallback_callback set_glyph_fallback_callback(Glyph_fallback_callback) @cname("RFont_set_glyph_fallback_callback"); -extern fn Glyph font_add_char(Renderer*, Font*, CChar, usz) @cname("RFont_font_add_char"); -extern fn Glyph font_add_codepoint(Renderer*, Font*, uint, usz) @cname("RFont_font_add_codepoint"); -extern fn Glyph font_add_codepoint_ex(Renderer*, Font*, uint, usz, char) @cname("RFont_font_add_codepoint_ex"); -extern fn void font_add_string(Renderer*, Font*, ZString, usz*, usz) @cname("RFont_font_add_string"); -extern fn void font_add_string_len(Renderer*, Font*, ZString, usz, usz*, usz) @cname("RFont_font_add_string_len"); -extern fn void text_area(Renderer*, Font*, ZString, uint, uint*, uint*) @cname("RFont_text_area"); -extern fn void text_area_spacing(Renderer*, Font*, ZString, float, uint, uint*, uint*) @cname("RFont_text_area_spacing"); -extern fn void text_area_len(Renderer*, Font*, ZString, usz, uint, usz, float, uint*, uint*) @cname("RFont_text_area_len"); -extern fn void draw_text(Renderer*, Font*, ZString, float, float, uint) @cname("RFont_draw_text"); -extern fn void draw_text_spacing(Renderer*, Font*, ZString, float, float, uint, float) @cname("RFont_draw_text_spacing"); -extern fn void draw_text_len(Renderer*, Font*, ZString, usz, float, float, uint, float) @cname("RFont_draw_text_len"); -extern fn usz renderer_size(Renderer*) @cname("RFont_renderer_size"); -extern fn Renderer* renderer_init(Renderer_proc) @cname("RFont_renderer_init"); -extern fn void renderer_initPtr(Renderer_proc, void*, Renderer*) @cname("RFont_renderer_initPtr"); -extern fn void renderer_set_framebuffer(Renderer*, uint, uint) @cname("RFont_renderer_set_framebuffer"); -extern fn void renderer_set_surface(Renderer*, Surface) @cname("RFont_renderer_set_surface"); -extern fn void renderer_set_color(Renderer*, float, float, float, float) @cname("RFont_renderer_set_color"); -extern fn void renderer_free(Renderer*) @cname("RFont_renderer_free"); -extern fn void renderer_freePtr(Renderer*) @cname("RFont_renderer_freePtr"); |
