lib/ui/src/fact/records.zig

daab053ee43316e1809a84551d573ddd1e5bf3d2

  1 const std = @import("std");
  2 const abi = @import("../abi/root.zig");
  3 const style = @import("../style/root.zig");
  4 
  5 pub const Paint = style.Paint;
  6 pub const ImagePaint = style.ImagePaint;
  7 pub const TextStyle = style.TextStyle;
  8 
  9 pub const Fact = extern struct {
 10     id: u64 = 0,
 11     revision: u64 = 0,
 12     rect: abi.Rect = .{},
 13     clip: u32 = 0,
 14     paint: u32 = 0,
 15     text: u32 = 0,
 16     state: u32 = 0,
 17     role: u16 = 0,
 18     kind: u16 = 0,
 19     flags: u16 = 0,
 20     focus_index: u16 = 0xffff,
 21     name: u32 = 0,
 22     action: u32 = 0,
 23 };
 24 
 25 pub const Clip = extern struct {
 26     rect: abi.Rect = .{},
 27     origin_x: f32 = 0,
 28     origin_y: f32 = 0,
 29     scroll_x: f32 = 0,
 30     scroll_y: f32 = 0,
 31     parent: u32 = 0,
 32     flags: u32 = 0,
 33 };
 34 
 35 pub const TextLayout = extern struct {
 36     line_first: u32 = 0,
 37     line_count: u32 = 0,
 38     width: f32 = 0,
 39     height: f32 = 0,
 40 };
 41 
 42 pub const TextLine = extern struct {
 43     span_first: u32 = 0,
 44     span_count: u32 = 0,
 45     origin_x: f32 = 0,
 46     baseline_y: f32 = 0,
 47     width: f32 = 0,
 48     height: f32 = 0,
 49 };
 50 
 51 pub const TextSpan = extern struct {
 52     cluster_first: u32 = 0,
 53     cluster_count: u32 = 0,
 54     origin_x: f32 = 0,
 55     width: f32 = 0,
 56     paint: u32 = 0,
 57     text_style: u32 = 0,
 58 };
 59 
 60 pub const Cluster = extern struct {
 61     byte_start: u32 = 0,
 62     byte_end: u32 = 0,
 63     advance: f32 = 0,
 64     glyph: u32 = 0,
 65     face: u32 = 0,
 66     columns: u8 = 0,
 67     flags: u8 = 0,
 68     _pad: u16 = 0,
 69 };
 70 
 71 pub const TextTables = struct {
 72     layouts: []const TextLayout,
 73     lines: []const TextLine,
 74     spans: []const TextSpan,
 75     clusters: []const Cluster,
 76 };
 77 
 78 pub const UnitMetrics = extern struct {
 79     device_per_unit_x: f32 = 1,
 80     device_per_unit_y: f32 = 1,
 81     snap_x: f32 = 1,
 82     snap_y: f32 = 1,
 83     root_font_size: f32 = 16,
 84     cell_advance: f32 = 1,
 85     cell_height: f32 = 1,
 86     flags: u32 = 0,
 87 };
 88 
 89 comptime {
 90     std.debug.assert(@sizeOf(Fact) == 64);
 91     std.debug.assert(@alignOf(Fact) == 8);
 92     std.debug.assert(@offsetOf(Fact, "rect") == 16);
 93     std.debug.assert(@offsetOf(Fact, "clip") == 32);
 94     std.debug.assert(@offsetOf(Fact, "paint") == 36);
 95     std.debug.assert(@offsetOf(Fact, "text") == 40);
 96     std.debug.assert(@offsetOf(Fact, "state") == 44);
 97     std.debug.assert(@offsetOf(Fact, "role") == 48);
 98     std.debug.assert(@offsetOf(Fact, "kind") == 50);
 99     std.debug.assert(@offsetOf(Fact, "flags") == 52);
100     std.debug.assert(@offsetOf(Fact, "focus_index") == 54);
101     std.debug.assert(@offsetOf(Fact, "name") == 56);
102     std.debug.assert(@offsetOf(Fact, "action") == 60);
103     std.debug.assert(@sizeOf(Clip) == 40);
104     std.debug.assert(@alignOf(Clip) == 4);
105     std.debug.assert(@offsetOf(Clip, "origin_x") == 16);
106     std.debug.assert(@offsetOf(Clip, "scroll_x") == 24);
107     std.debug.assert(@offsetOf(Clip, "parent") == 32);
108     std.debug.assert(@sizeOf(TextLayout) == 16);
109     std.debug.assert(@alignOf(TextLayout) == 4);
110     std.debug.assert(@sizeOf(TextLine) == 24);
111     std.debug.assert(@alignOf(TextLine) == 4);
112     std.debug.assert(@sizeOf(TextSpan) == 24);
113     std.debug.assert(@alignOf(TextSpan) == 4);
114     std.debug.assert(@offsetOf(TextSpan, "paint") == 16);
115     std.debug.assert(@offsetOf(TextSpan, "text_style") == 20);
116     std.debug.assert(@sizeOf(Cluster) == 24);
117     std.debug.assert(@alignOf(Cluster) == 4);
118     std.debug.assert(@offsetOf(Cluster, "face") == 16);
119     std.debug.assert(@offsetOf(Cluster, "_pad") == 22);
120     std.debug.assert(@sizeOf(UnitMetrics) == 32);
121     std.debug.assert(@alignOf(UnitMetrics) == 4);
122     std.debug.assert(@offsetOf(UnitMetrics, "flags") == 28);
123 }