1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/vlib/sokol/sfons/sfons.c.v

46 lines
1002 B
V
Raw Permalink Normal View History

2020-01-16 22:45:47 +03:00
module sfons
2020-01-16 22:45:47 +03:00
import fontstash
import sokol.f
import sokol.memory
2020-01-16 22:45:47 +03:00
// keep v from warning about unused imports
const used_import = f.used_import + fontstash.used_import + 1
2020-01-16 22:45:47 +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]
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: 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]
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]
pub fn flush(ctx &fontstash.Context) {
2020-01-16 22:45:47 +03:00
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]
}