module sfons

import fontstash
import sokol.f
import sokol.memory

// keep v from warning about unused imports
const used_import = f.used_import + fontstash.used_import + 1

// create a new Context/font atlas, for rendering glyphs, given its dimensions `width` and `height`
@[inline]
pub fn create(width int, height int, flags int) &fontstash.Context {
	assert is_power_of_two(width)
	assert is_power_of_two(height)
	allocator := C.sfons_allocator_t{
		alloc_fn: memory.salloc
		free_fn: memory.sfree
		user_data: voidptr(0x100005f0)
	}
	desc := C.sfons_desc_t{
		width: width
		height: height
		allocator: allocator
	}
	return C.sfons_create(&desc)
}

@[inline]
pub fn destroy(ctx &fontstash.Context) {
	C.sfons_destroy(ctx)
}

@[inline]
pub fn rgba(r u8, g u8, b u8, a u8) u32 {
	return C.sfons_rgba(r, g, b, a)
}

@[inline]
pub fn flush(ctx &fontstash.Context) {
	C.sfons_flush(ctx)
}

fn is_power_of_two(x int) bool {
	return x in [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768]
}
