mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
46 lines
1002 B
V
46 lines
1002 B
V
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: 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)
|
|
}
|
|
|
|
[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]
|
|
}
|