An Odin-native source port of [[ stb_easy_font.h ; https://github.com/nothings/stb/blob/master/stb_easy_font.h ]]. Example: quads: [999]easy_font.Quad = --- color := rl.GREEN c := transmute(easy_font.Color)color num_quads := easy_font.print(10, 60, TEXT, c, quads[:]) for q in quads[:num_quads] { tl := q.tl.v br := q.br.v color = transmute(rl.Color)q.tl.c r := rl.Rectangle{x = tl.x, y = tl.y, width = br.x - tl.x, height = br.y - tl.y} // Yes, we could just use the `color` from above, but this shows how to get it back from the vertex. // And in practice this code will likely not live as close to the `easy_font` call. rl.DrawRectangleRec(r, color) } Changelog: 2022-04-03 Bug fixes Add `print(x, y, text, color, quad_buffer)` version that takes `[]quad`. (Same internal memory layout as []u8 API, but more convenient for the caller.) Add optional `scale := f32(1.0)` param to `print` to embiggen the glyph quads. 2021-09-14 Original Odin version Credits: Original port: gingerBill Bugfixes: Florian Behr & Jeroen van Rijn Additions: Jeroen van Rijn

Collection Info

View Source
Collection
vendor
Path
stb/easy_font
Entries
13

Source Files

Types

4

Procedures

7

draw_segs_quad_buffer #

Source
draw_segs_quad_buffer :: proc(
	x, y:         f32, 
	segs:         []u8, 
	vertical:     bool, 
	c:            [4]u8, 
	buf:          []Quad, 
	start_offset: int, 
	scale:        f32 = f32(1.0), 
) -> (quads: int) {…}

Same memory layout, but takes a []quad instead of []byte

draw_segs_vertex_buffer #

Source
draw_segs_vertex_buffer :: proc(
	x, y:         f32, 
	segs:         []u8, 
	vertical:     bool, 
	c:            [4]u8, 
	vbuf:         []u8, 
	start_offset: int, 
	scale:        f32 = f32(1.0), 
) -> (offset: int) {…}

Compatible with original C API

print_quad_buffer #

Source
print_quad_buffer :: proc(
	x, y:        f32, 
	text:        string, 
	color:       [4]u8, 
	quad_buffer: []Quad, 
	scale:       f32 = f32(1.0), 
) -> (quads: int) {…}

Same memory layout, but takes a []quad instead of []byte

print_vertex_buffer #

Source
print_vertex_buffer :: proc(
	x, y:          f32, 
	text:          string, 
	color:         [4]u8, 
	vertex_buffer: []u8, 
	scale:         f32 = f32(1.0), 
) -> int {…}

Compatible with original C API

Procedure Groups

2