2020-01-16 22:45:47 +03:00
|
|
|
module sfons
|
2020-01-17 22:05:45 +03:00
|
|
|
|
2020-01-16 22:45:47 +03:00
|
|
|
import fontstash
|
2022-01-06 19:21:41 +03:00
|
|
|
import sokol.f
|
2023-01-11 12:29:38 +03:00
|
|
|
import sokol.memory
|
2020-01-16 22:45:47 +03:00
|
|
|
|
2021-08-12 22:31:04 +03:00
|
|
|
// keep v from warning about unused imports
|
2022-01-06 19:21:41 +03:00
|
|
|
const used_import = f.used_import + fontstash.used_import + 1
|
2020-01-16 22:45:47 +03:00
|
|
|
|
2023-01-11 12:29:38 +03:00
|
|
|
// create a new Context/font atlas, for rendering glyphs, given its dimensions `width` and `height`
|
2020-01-16 22:45:47 +03:00
|
|
|
[inline]
|
2021-12-06 23:39:43 +03:00
|
|
|
pub fn create(width int, height int, flags int) &fontstash.Context {
|
2023-01-11 12:29:38 +03:00
|
|
|
assert is_power_of_two(width)
|
|
|
|
assert is_power_of_two(height)
|
|
|
|
allocator := C.sfons_allocator_t{
|
|
|
|
alloc: memory.salloc
|
|
|
|
free: memory.sfree
|
|
|
|
user_data: voidptr(0x100005f0)
|
|
|
|
}
|
|
|
|
desc := C.sfons_desc_t{
|
|
|
|
width: width
|
|
|
|
height: height
|
|
|
|
allocator: allocator
|
|
|
|
}
|
|
|
|
return C.sfons_create(&desc)
|
2020-01-16 22:45:47 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
[inline]
|
2021-12-06 23:39:43 +03:00
|
|
|
pub fn destroy(ctx &fontstash.Context) {
|
2020-01-16 22:45:47 +03:00
|
|
|
C.sfons_destroy(ctx)
|
|
|
|
}
|
|
|
|
|
|
|
|
[inline]
|
2022-04-15 18:25:45 +03:00
|
|
|
pub fn rgba(r u8, g u8, b u8, a u8) u32 {
|
2020-01-16 22:45:47 +03:00
|
|
|
return C.sfons_rgba(r, g, b, a)
|
|
|
|
}
|
|
|
|
|
|
|
|
[inline]
|
2021-12-06 23:39:43 +03:00
|
|
|
pub fn flush(ctx &fontstash.Context) {
|
2020-01-16 22:45:47 +03:00
|
|
|
C.sfons_flush(ctx)
|
|
|
|
}
|
2023-01-11 12:29:38 +03:00
|
|
|
|
|
|
|
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]
|
|
|
|
}
|