Files
odin-sdl3-static-linking/sdl3/ttf/sdl3_textengine.odin
2025-12-15 12:37:50 -05:00

63 lines
1.3 KiB
Odin

package sdl3_ttf
import "core:c"
import SDL "vendor:sdl3"
DrawCommand :: enum c.int {
NOOP,
FILL,
COPY,
}
FillOperation :: struct {
cmd: DrawCommand,
rect: SDL.Rect,
}
CopyOperation :: struct {
cmd: DrawCommand,
text_offset: c.int,
glyph_font: ^Font,
glyph_index: u32,
src: SDL.Rect,
dst: SDL.Rect,
reserved: rawptr,
}
DrawOperation :: struct #raw_union {
cmd: DrawCommand,
fill: FillOperation,
copy: CopyOperation,
}
TextLayout :: struct {}
TextData :: struct {
font: ^Font,
color: SDL.FColor,
needs_layout_update: bool,
layout: ^TextLayout,
x, y: c.int,
w, h: c.int,
num_ops: c.int,
ops: [^]DrawOperation `fmt:"v,num_ops"`,
num_clusters: c.int,
clusters: [^]SubString `fmt:"v,num_clusters"`,
props: SDL.PropertiesID,
needs_engine_update: bool,
engine: ^TextEngine,
engine_text: rawptr,
}
TextEngine :: struct {
version: u32,
userdata: rawptr,
CreateText: proc "c" (userdata: rawptr, text: ^Text) -> bool,
DestroyText: proc "c" (userdata: rawptr, Textext: ^Text),
}
#assert(
(size_of(TextEngine) == 16 && size_of(rawptr) == 4) ||
(size_of(TextEngine) == 32 && size_of(rawptr) == 8),
)