From b559b4486618ac2a223546b7886deedb23ad69dd Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sat, 17 Apr 2021 13:59:06 -0500 Subject: [PATCH] updated to new package syntax --- lib/gl/gl_utils.onyx | 2 +- lib/immediate_renderer.onyx | 2 +- lib/ttf_font.onyx | 95 +++++++++++++++++++++++++++++++++++++ test/basic.onyx | 6 +-- 4 files changed, 100 insertions(+), 5 deletions(-) create mode 100644 lib/ttf_font.onyx diff --git a/lib/gl/gl_utils.onyx b/lib/gl/gl_utils.onyx index 34bae0e..b306d5a 100644 --- a/lib/gl/gl_utils.onyx +++ b/lib/gl/gl_utils.onyx @@ -1,7 +1,7 @@ package imgui.gl use package core -use package gl as gl +#private_file gl :: package gl // This Shader represents an OpenGL program, not a shader. The name // is confusing but conceptually for most people, shaders are a bundled diff --git a/lib/immediate_renderer.onyx b/lib/immediate_renderer.onyx index 67aa113..c5fc0d7 100644 --- a/lib/immediate_renderer.onyx +++ b/lib/immediate_renderer.onyx @@ -5,7 +5,7 @@ package imgui use package core use package imgui.gl -use package gl as gl +#private_file gl :: package gl Vector2 :: struct { x, y: f32; diff --git a/lib/ttf_font.onyx b/lib/ttf_font.onyx new file mode 100644 index 0000000..5c736fa --- /dev/null +++ b/lib/ttf_font.onyx @@ -0,0 +1,95 @@ +package imgui.font + +use package core +#private_file gl :: package gl + + +TrueTypeFont :: struct { + reader: io.Reader; + + // NOTE: I don't know how useful these are, but they're at + // the beginning of the ttf file. + scalar_type : u32; + search_range : u16; + entry_selector : u16; + range_shift : u16; + + table_map : map.Map(i32, TTTableInfo); + char_maps : [..] TTCmap; + + version : u32; + font_revision : u32; + checksum_adjustment : u32; + magic_number : u32; + flags : u16; + units_per_em : u16; + // created : u64; + // modified : u64; + x_min : i16; + x_max : i16; + y_min : i16; + y_max : i16; + mac_style : u16; + lowest_rec_ppem : u16; + font_direction_hint : i16; + index_to_loc_format : TTIndexToLocFormat; + glyph_data_format : i16; + + hhea : struct { + version : u32; + ascent : i16; + descent : i16; + line_gap : i16; + advance_width_max : u16; + min_left_side_bearing : i16; + min_right_side_bearing : i16; + x_max_extent : i16; + caret_slope_rise : i16; + caret_slope_run : i16; + caret_offset : i16; + metric_data_format : i16; + num_of_long_hor_metrics : u16; + }; +} + +TTTableInfo :: struct { + checksum : u32 = 0; + offset : u32 = 0; + length : u32 = 0; +} + +TTIndexToLocFormat :: enum (i16) { + Short :: 0x00; + Long :: 0x01; +} + +TTGlyph :: struct { + contour_count : i16; + x_min : i16; + x_max : i16; + y_min : i16; + y_max : i16; + + points : [..] TTGlyphPoint; + contour_ends : [..] u16; +} + +TTGlyphPoint :: struct { + on_curve : bool; + x : i16 = ~~0; + y : i16 = ~~0; +} + +ttf_create :: (ttf_data: [] u8) -> TrueTypeFont { + ttf : TrueTypeFont; + ttf.reader = binary_reader_create(ttf_data); + map.init(^ttf.table_map, .{}); + array.init(^ttf.char_maps); + ttf_read_offset_table(^ttf); + ttf_read_head_table(^ttf); + ttf_read_cmap_table(^ttf); + ttf_read_hhea_table(^ttf); + + return ttf; +} + diff --git a/test/basic.onyx b/test/basic.onyx index 786bd92..cf46f00 100644 --- a/test/basic.onyx +++ b/test/basic.onyx @@ -3,9 +3,9 @@ #load "lib/events" use package core -use package imgui as imgui -use package imgui.events as events -use package gl as gl +#private_file imgui :: package imgui +#private_file events :: package imgui.events +#private_file gl :: package gl init :: () { events.init(); -- 2.25.1