mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
sokol and fontstash modules
This commit is contained in:
152
vlib/fontstash/fontstash.v
Normal file
152
vlib/fontstash/fontstash.v
Normal file
@@ -0,0 +1,152 @@
|
||||
module fontstash
|
||||
|
||||
#flag -I @VROOT/thirdparty/fontstash
|
||||
|
||||
|
||||
// Contructor and destructor.
|
||||
[inline]
|
||||
pub fn create_internal(params &C.FONSparams) &C.FONScontext {
|
||||
return C.fonsCreateInternal(params)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn delete_internal(s &C.FONScontext) {
|
||||
C.fonsDeleteInternal(s)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) set_error_callback(callback fn(uptr voidptr, error int, val int), uptr voidptr) {
|
||||
C.fonsSetErrorCallback(s, callback, uptr)
|
||||
}
|
||||
|
||||
// Returns current atlas size.
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) get_atlas_size(width &int, height &int) {
|
||||
C.fonsGetAtlasSize(s, width, height)
|
||||
}
|
||||
|
||||
// Expands the atlas size.
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) expand_atlas(width int, height int) int {
|
||||
return C.fonsExpandAtlas(s, width, height)
|
||||
}
|
||||
|
||||
// Resets the whole stash.
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) reset_atlas(width int, height int) int {
|
||||
return C.fonsResetAtlas(s, width, height)
|
||||
}
|
||||
|
||||
// Add fonts
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) get_font_by_name(name byteptr) int {
|
||||
return C.fonsGetFontByName(s, name)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) add_fallback_font(base int, fallback int) int {
|
||||
return C.fonsAddFallbackFont(s, base, fallback)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) add_font_mem(name byteptr, data byteptr, data_size int, free_data int) int {
|
||||
return C.fonsAddFontMem(s, name, data, data_size, free_data)
|
||||
}
|
||||
|
||||
// State handling
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) push_state() {
|
||||
C.fonsPushState(s)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) pop_state() {
|
||||
C.fonsPopState(s)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) clear_state() {
|
||||
C.fonsClearState(s)
|
||||
}
|
||||
|
||||
// State setting
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) set_size(size f32) {
|
||||
C.fonsSetSize(s, size)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) set_color(color u32) {
|
||||
C.fonsSetColor(s, color)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) set_spacing(spacing f32) {
|
||||
C.fonsSetSpacing(s, spacing)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) set_blur(blur f32) {
|
||||
C.fonsSetBlur(s, blur)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) set_align(align int) {
|
||||
C.fonsSetAlign(s, align)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) set_font(font int) {
|
||||
C.fonsSetFont(s, font)
|
||||
}
|
||||
|
||||
// Draw text
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) draw_text(x f32, y f32, str byteptr, end byteptr) f32 {
|
||||
return C.fonsDrawText(s, x, y, str, end)
|
||||
}
|
||||
|
||||
// Measure text
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) text_bounds(x f32, y f32, str byteptr, end byteptr, bounds &f32) f32 {
|
||||
return C.fonsTextBounds(s, x, y, str, end, bounds)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) line_bounds(y f32, miny &f32, maxy &f32) {
|
||||
C.fonsLineBounds(s, y, miny, maxy)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) vert_metrics(ascender &f32, descender &f32, lineh &f32) {
|
||||
C.fonsVertMetrics(s, ascender, descender, lineh)
|
||||
}
|
||||
|
||||
// Text iterator
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) text_iter_init(iter &C.FONStextIter, x f32, y f32, str byteptr, end byteptr) int {
|
||||
return C.fonsTextIterInit(s, iter, x, y, str, end)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) text_iter_next(iter &C.FONStextIter, quad &C.FONSquad) int {
|
||||
return C.fonsTextIterNext(s, iter, quad)
|
||||
}
|
||||
|
||||
// Pull texture changes
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) get_texture_data(width &int, height &int) byteptr {
|
||||
return C.fonsGetTextureData(s, width, height)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) validate_texture(dirty &int) int {
|
||||
return C.fonsValidateTexture(s, dirty)
|
||||
}
|
||||
|
||||
// Draws the stash texture for debugging
|
||||
[inline]
|
||||
pub fn (s &C.FONScontext) draw_debug(x f32, y f32) {
|
||||
C.fonsDrawDebug(s, x, y)
|
||||
}
|
||||
|
50
vlib/fontstash/fontstash_funcs.v
Normal file
50
vlib/fontstash/fontstash_funcs.v
Normal file
@@ -0,0 +1,50 @@
|
||||
module fontstash
|
||||
|
||||
// Contructor and destructor.
|
||||
fn C.fonsCreateInternal(params &C.FONSparams) &C.FONScontext
|
||||
fn C.fonsDeleteInternal(s &C.FONScontext)
|
||||
|
||||
fn C.fonsSetErrorCallback(s &C.FONScontext, callback fn(uptr voidptr, error int, val int), uptr voidptr)
|
||||
// Returns current atlas size.
|
||||
fn C.fonsGetAtlasSize(s &C.FONScontext, width &int, height &int)
|
||||
// Expands the atlas size.
|
||||
fn C.fonsExpandAtlas(s &C.FONScontext, width int, height int) int
|
||||
// Resets the whole stash.
|
||||
fn C.fonsResetAtlas(s &C.FONScontext, width int, height int) int
|
||||
|
||||
// Add fonts
|
||||
fn C.fonsGetFontByName(s &C.FONScontext, name byteptr) int
|
||||
fn C.fonsAddFallbackFont(s &C.FONScontext, base int, fallback int) int
|
||||
fn C.fonsAddFontMem(s &C.FONScontext, name byteptr, data byteptr, dataSize int, freeData int) int
|
||||
|
||||
// State handling
|
||||
fn C.fonsPushState(s &C.FONScontext)
|
||||
fn C.fonsPopState(s &C.FONScontext)
|
||||
fn C.fonsClearState(s &C.FONScontext)
|
||||
|
||||
// State setting
|
||||
fn C.fonsSetSize(s &C.FONScontext, size f32)
|
||||
fn C.fonsSetColor(s &C.FONScontext, color u32)
|
||||
fn C.fonsSetSpacing(s &C.FONScontext, spacing f32)
|
||||
fn C.fonsSetBlur(s &C.FONScontext, blur f32)
|
||||
fn C.fonsSetAlign(s &C.FONScontext, align int)
|
||||
fn C.fonsSetFont(s &C.FONScontext, font int)
|
||||
|
||||
// Draw text
|
||||
fn C.fonsDrawText(s &C.FONScontext, x f32, y f32, str byteptr, end byteptr) f32
|
||||
|
||||
// Measure text
|
||||
fn C.fonsTextBounds(s &C.FONScontext, x f32, y f32, str byteptr, end byteptr, bounds &f32) f32
|
||||
fn C.fonsLineBounds(s &C.FONScontext, y f32, miny &f32, maxy &f32)
|
||||
fn C.fonsVertMetrics(s &C.FONScontext, ascender &f32, descender &f32, lineh &f32)
|
||||
|
||||
// Text iterator
|
||||
fn C.fonsTextIterInit(s &C.FONScontext, iter &C.FONStextIter, x f32, y f32, str byteptr, end byteptr) int
|
||||
fn C.fonsTextIterNext(s &C.FONScontext, iter &C.FONStextIter, quad &C.FONSquad) int
|
||||
|
||||
// Pull texture changes
|
||||
fn C.fonsGetTextureData(s &C.FONScontext, width &int, height &int) byteptr
|
||||
fn C.fonsValidateTexture(s &C.FONScontext, dirty &int) int
|
||||
|
||||
// Draws the stash texture for debugging
|
||||
fn C.fonsDrawDebug(s &C.FONScontext, x f32, y f32)
|
80
vlib/fontstash/fontstash_structs.v
Normal file
80
vlib/fontstash/fontstash_structs.v
Normal file
@@ -0,0 +1,80 @@
|
||||
module fontstash
|
||||
|
||||
pub enum FonsFlags {
|
||||
top_left = 1
|
||||
bottom_left = 2
|
||||
}
|
||||
|
||||
pub enum FonsAlign {
|
||||
// Horizontal align
|
||||
left = 1 // Default
|
||||
center = 2
|
||||
right = 4
|
||||
// Vertical align
|
||||
top = 8
|
||||
middle = 16
|
||||
bottom = 32
|
||||
baseline = 64 // Default
|
||||
}
|
||||
|
||||
pub enum FonsErrorCode {
|
||||
// Font atlas is full.
|
||||
atlas_full = 1
|
||||
// Scratch memory used to render glyphs is full, requested size reported in 'val', you may need to bump up FONS_SCRATCH_BUF_SIZE.
|
||||
scratch_full = 2
|
||||
// Calls to fonsPushState has created too large stack, if you need deep state stack bump up FONS_MAX_STATES.
|
||||
states_overflow = 3
|
||||
// Trying to pop too many states fonsPopState().
|
||||
states_underflow = 4
|
||||
}
|
||||
|
||||
pub struct C.FONSparams {
|
||||
width int
|
||||
height int
|
||||
flags char
|
||||
userPtr voidptr
|
||||
// int (*renderCreate)(void* uptr, int width, int height)
|
||||
renderCreate fn(uptr voidptr, width int, height int) int
|
||||
// int (*renderResize)(void* uptr, int width, int height)
|
||||
renderResize fn(uptr voidptr, width int, height int) int
|
||||
// void (*renderUpdate)(void* uptr, int* rect, const unsigned char* data)
|
||||
renderUpdate fn(uptr voidptr, rect &int, data byteptr)
|
||||
// void (*renderDraw)(void* uptr, const float* verts, const float* tcoords, const unsigned int* colors, int nverts)
|
||||
renderDraw fn(uptr voidptr, verts &f32, tcoords &f32, colors &u32, nverts int)
|
||||
// void (*renderDelete)(void* uptr)
|
||||
renderDelete fn(uptr voidptr)
|
||||
}
|
||||
|
||||
pub struct C.FONSquad
|
||||
{
|
||||
x0 f32
|
||||
y0 f32
|
||||
s0 f32
|
||||
t0 f32
|
||||
x1 f32
|
||||
y1 f32
|
||||
s1 f32
|
||||
t1 f32
|
||||
}
|
||||
|
||||
pub struct C.FONStextIter {
|
||||
x f32
|
||||
y f32
|
||||
nextx f32
|
||||
nexty f32
|
||||
scale f32
|
||||
spacing f32
|
||||
codepoint u32
|
||||
isize i16
|
||||
iblur i16
|
||||
font &FONSfont
|
||||
prevGlyphIndex int
|
||||
str byteptr
|
||||
next byteptr
|
||||
end byteptr
|
||||
utf8state u32
|
||||
}
|
||||
|
||||
pub struct C.FONSfont {}
|
||||
|
||||
pub struct C.FONScontext {}
|
Reference in New Issue
Block a user