const Image = @import("Image.zig"); char: Character = .{}, style: Style = .{}, link: Hyperlink = .{}, image: ?Image.Placement = null, /// Segment is a contiguous run of text that has a constant style pub const Segment = struct { text: []const u8, style: Style = .{}, link: Hyperlink = .{}, }; pub const Character = struct { grapheme: []const u8 = " ", /// width should only be provided when the application is sure the terminal /// will measure the same width. This can be ensure by using the gwidth method /// included in libvaxis. If width is 0, libvaxis will measure the glyph at /// render time width: usize = 1, }; pub const CursorShape = enum { default, block_blink, block, underline_blink, underline, beam_blink, beam, }; pub const Hyperlink = struct { uri: []const u8 = "", /// ie "id=app-1234" params: []const u8 = "", }; pub const Style = struct { pub const Underline = enum { off, single, double, curly, dotted, dashed, }; fg: Color = .default, bg: Color = .default, ul: Color = .default, ul_style: Underline = .off, bold: bool = false, dim: bool = false, italic: bool = false, blink: bool = false, reverse: bool = false, invisible: bool = false, strikethrough: bool = false, }; pub const Color = union(enum) { default, index: u8, rgb: [3]u8, };