Clean up of last remaining vestitudes of using my containers in VEFontCache
This commit is contained in:
parent
9d0cc125a9
commit
343d558a94
@ -518,6 +518,7 @@ draw_text :: proc( ctx : ^Context, font : FontID, text_utf8 : string, position :
|
||||
|
||||
last_byte_offset = byte_offset
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
|
@ -21,57 +21,7 @@ AllocatorError :: mem.Allocator_Error
|
||||
|
||||
import "codebase:grime"
|
||||
|
||||
// asserts
|
||||
ensure :: grime.ensure
|
||||
verify :: grime.verify
|
||||
|
||||
// container
|
||||
|
||||
Array :: grime.Array
|
||||
|
||||
array_init :: grime.array_init
|
||||
array_append :: grime.array_append
|
||||
array_append_at :: grime.array_append_at
|
||||
array_back :: grime.array_back
|
||||
array_clear :: grime.array_clear
|
||||
array_free :: grime.array_free
|
||||
array_remove_at :: grime.array_remove_at
|
||||
array_pop :: grime.array_pop
|
||||
array_resize :: grime.array_resize
|
||||
array_to_slice :: grime.array_to_slice
|
||||
array_to_slice_cpacity :: grime.array_to_slice_capacity
|
||||
array_underlying_slice :: grime.array_underlying_slice
|
||||
|
||||
HMapChained :: grime.HMapChained
|
||||
|
||||
hmap_chained_clear :: grime.hmap_chained_clear
|
||||
hmap_chained_destroy :: grime.hmap_chained_destroy
|
||||
hmap_chained_init :: grime.hmap_chained_init
|
||||
hmap_chained_get :: grime.hmap_chained_get
|
||||
hmap_chained_remove :: grime.hmap_chained_remove
|
||||
hmap_chained_reload :: grime.hmap_chained_reload
|
||||
hmap_chained_set :: grime.hmap_chained_set
|
||||
hmap_closest_prime :: grime.hmap_closest_prime
|
||||
|
||||
HMapZPL :: grime.HMapZPL
|
||||
|
||||
hmap_zpl_clear :: grime.hmap_zpl_clear
|
||||
hmap_zpl_init :: grime.hmap_zpl_init
|
||||
hmap_zpl_get :: grime.hmap_zpl_get
|
||||
hmap_zpl_reload :: grime.hmap_zpl_reload
|
||||
hmap_zpl_remove :: grime.hmap_zpl_remove
|
||||
hmap_zpl_set :: grime.hmap_zpl_set
|
||||
|
||||
// Pool :: grime.Pool
|
||||
|
||||
StackFixed :: grime.StackFixed
|
||||
|
||||
stack_clear :: grime.stack_clear
|
||||
stack_push :: grime.stack_push
|
||||
stack_pop :: grime.stack_pop
|
||||
stack_peek_ref :: grime.stack_peek_ref
|
||||
stack_peek :: grime.stack_peek
|
||||
stack_push_contextless :: grime.stack_push_contextless
|
||||
hmap_closest_prime :: grime.hmap_closest_prime
|
||||
|
||||
// logging
|
||||
log :: grime.log
|
||||
@ -85,76 +35,27 @@ reload_map :: grime.reload_map
|
||||
//#region("Proc overload mappings")
|
||||
|
||||
append :: proc {
|
||||
grime.array_append_array,
|
||||
grime.array_append_slice,
|
||||
grime.array_append_value,
|
||||
|
||||
append_elem,
|
||||
// append_elems,
|
||||
// append_elem_string,
|
||||
}
|
||||
|
||||
append_at :: proc {
|
||||
grime.array_append_at_slice,
|
||||
grime.array_append_at_value,
|
||||
append_elems,
|
||||
append_elem_string,
|
||||
}
|
||||
|
||||
clear :: proc {
|
||||
array_clear,
|
||||
hmap_chained_clear,
|
||||
hmap_zpl_clear,
|
||||
|
||||
clear_dynamic_array,
|
||||
}
|
||||
|
||||
delete :: proc {
|
||||
array_free,
|
||||
hmap_chained_destroy,
|
||||
}
|
||||
|
||||
get :: proc {
|
||||
hmap_chained_get,
|
||||
hmap_zpl_get,
|
||||
}
|
||||
|
||||
make :: proc {
|
||||
array_init,
|
||||
hmap_chained_init,
|
||||
hmap_zpl_init,
|
||||
make_map,
|
||||
|
||||
make_dynamic_array,
|
||||
make_dynamic_array_len,
|
||||
make_dynamic_array_len_cap,
|
||||
make_map,
|
||||
}
|
||||
|
||||
// reload :: proc {
|
||||
|
||||
// }
|
||||
|
||||
remove_at :: proc {
|
||||
array_remove_at,
|
||||
}
|
||||
|
||||
resize :: proc {
|
||||
array_resize,
|
||||
|
||||
resize_dynamic_array,
|
||||
}
|
||||
|
||||
set :: proc {
|
||||
hmap_chained_set,
|
||||
hmap_zpl_set,
|
||||
}
|
||||
|
||||
to_slice :: proc {
|
||||
array_to_slice,
|
||||
}
|
||||
|
||||
underlying_slice :: proc {
|
||||
array_underlying_slice,
|
||||
}
|
||||
|
||||
vec2 :: proc {
|
||||
vec2_from_scalar,
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ That interface is not exposed from this parser but could be added to parser_init
|
||||
STB_Truetype has macros for its allocation unfortuantely
|
||||
*/
|
||||
|
||||
import "base:runtime"
|
||||
import "core:c"
|
||||
import "core:math"
|
||||
import stbtt "vendor:stb/truetype"
|
||||
@ -45,7 +46,8 @@ ParserGlyphVertex :: struct {
|
||||
type : GlyphVertType,
|
||||
padding : u8,
|
||||
}
|
||||
ParserGlyphShape :: []ParserGlyphVertex
|
||||
// A shape can be a dynamic array free_type or an opaque set of data handled by stb_truetype
|
||||
ParserGlyphShape :: [dynamic]ParserGlyphVertex
|
||||
|
||||
ParserContext :: struct {
|
||||
kind : ParserKind,
|
||||
@ -133,7 +135,7 @@ parser_free_shape :: proc( font : ^ParserFontInfo, shape : ParserGlyphShape )
|
||||
switch font.kind
|
||||
{
|
||||
case .Freetype:
|
||||
delete( array_underlying_slice(shape) )
|
||||
delete(shape)
|
||||
|
||||
case .STB_TrueType:
|
||||
stbtt.FreeShape( & font.stbtt_info, transmute( [^]stbtt.vertex) raw_data(shape) )
|
||||
@ -252,7 +254,7 @@ parser_get_glyph_shape :: proc( font : ^ParserFontInfo, glyph_index : Glyph ) ->
|
||||
FT_CURVE_TAG_ON :: 0x01
|
||||
FT_CURVE_TAG_CUBIC :: 0x02
|
||||
|
||||
vertices, error := make( Array(ParserGlyphVertex), 1024 )
|
||||
vertices, error := make( [dynamic]ParserGlyphVertex, 1024 )
|
||||
assert( error == .None )
|
||||
|
||||
// TODO(Ed): This makes freetype second class I guess but VEFontCache doesn't have native support for freetype originally so....
|
||||
@ -275,7 +277,7 @@ parser_get_glyph_shape :: proc( font : ^ParserFontInfo, glyph_index : Glyph ) ->
|
||||
|
||||
if (tag & FT_CURVE_TAG_ON) != 0
|
||||
{
|
||||
if vertices.num > 0 && !(array_back(vertices).type == .Move )
|
||||
if len(vertices) > 0 && !(vertices[len(vertices) - 1].type == .Move )
|
||||
{
|
||||
// Close the previous contour if needed
|
||||
append(& vertices, ParserGlyphVertex { type = .Line,
|
||||
@ -353,16 +355,18 @@ parser_get_glyph_shape :: proc( font : ^ParserFontInfo, glyph_index : Glyph ) ->
|
||||
})
|
||||
}
|
||||
|
||||
shape = array_to_slice(vertices)
|
||||
shape = vertices
|
||||
}
|
||||
|
||||
case .STB_TrueType:
|
||||
stb_shape : [^]stbtt.vertex
|
||||
nverts := stbtt.GetGlyphShape( & font.stbtt_info, cast(i32) glyph_index, & stb_shape )
|
||||
if nverts == 0 || shape == nil {
|
||||
shape = transmute(ParserGlyphShape) stb_shape[0:0]
|
||||
}
|
||||
shape = transmute(ParserGlyphShape) stb_shape[:nverts]
|
||||
|
||||
shape_raw := transmute( ^runtime.Raw_Dynamic_Array) & shape
|
||||
shape_raw.data = stb_shape
|
||||
shape_raw.len = int(nverts)
|
||||
shape_raw.cap = int(nverts)
|
||||
shape_raw.allocator = runtime.nil_allocator()
|
||||
error = AllocatorError.None
|
||||
return
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user