updated to new package syntax
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 17 Apr 2021 18:59:06 +0000 (13:59 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 17 Apr 2021 18:59:06 +0000 (13:59 -0500)
lib/gl/gl_utils.onyx
lib/immediate_renderer.onyx
lib/ttf_font.onyx [new file with mode: 0644]
test/basic.onyx

index 34bae0e9ad4cac6f20271b59ce4425a20048d373..b306d5ab451b0839a82c729f43c5f9f838a0d13e 100644 (file)
@@ -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
index 67aa113b84985593b3fa4a924e8f4495411307ac..c5fc0d7cec28579b4290ce0c0bef975173e4f7be 100644 (file)
@@ -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 (file)
index 0000000..5c736fa
--- /dev/null
@@ -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;
+}
+
index 786bd92e4cafac2845328ffc5f2ec5056272059b..cf46f0076aaa5f3de450fc8f83da9c8bfcd2851c 100644 (file)
@@ -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();