zig/lib/std / os/uefi/hii.zig

The header found at the start of each package.

const uefi = @import("std").os.uefi;
const Guid = uefi.Guid;

Handle

The header found at the start of each package list.


pub const Handle = *opaque {};

PackageHeader

The size of the package list (in bytes), including the header.


/// The header found at the start of each package.
pub const PackageHeader = packed struct(u32) {
    length: u24,
    type: u8,

type_all:


    pub const type_all: u8 = 0x0;

type_guid:

    pub const type_guid: u8 = 0x1;

forms:

    pub const forms: u8 = 0x2;

strings:

    pub const strings: u8 = 0x4;

fonts:

    pub const fonts: u8 = 0x5;

images:

    pub const images: u8 = 0x6;

simple_fonsts:

    pub const simple_fonsts: u8 = 0x7;

device_path:

    pub const device_path: u8 = 0x8;

keyboard_layout:

    pub const keyboard_layout: u8 = 0x9;

animations:

    pub const animations: u8 = 0xa;

end:

    pub const end: u8 = 0xdf;

type_system_begin:

    pub const type_system_begin: u8 = 0xe0;

type_system_end:

    pub const type_system_end: u8 = 0xff;
};

PackageList


/// The header found at the start of each package list.
pub const PackageList = extern struct {
    package_list_guid: Guid,

SimplifiedFontPackage


    /// The size of the package list (in bytes), including the header.
    package_list_length: u32,

getNarrowGlyphs()


    // TODO implement iterator
};

NarrowGlyphAttributes


pub const SimplifiedFontPackage = extern struct {
    header: PackageHeader,
    number_of_narrow_glyphs: u16,
    number_of_wide_glyphs: u16,

NarrowGlyph


    pub fn getNarrowGlyphs(self: *SimplifiedFontPackage) []NarrowGlyph {
        return @as([*]NarrowGlyph, @ptrCast(@alignCast(@as([*]u8, @ptrCast(self)) + @sizeOf(SimplifiedFontPackage))))[0..self.number_of_narrow_glyphs];
    }
};

WideGlyphAttributes


pub const NarrowGlyphAttributes = packed struct(u8) {
    non_spacing: bool,
    wide: bool,
    _pad: u6 = 0,
};

WideGlyph


pub const NarrowGlyph = extern struct {
    unicode_weight: u16,
    attributes: NarrowGlyphAttributes,
    glyph_col_1: [19]u8,
};

StringPackage


pub const WideGlyphAttributes = packed struct(u8) {
    non_spacing: bool,
    wide: bool,
    _pad: u6 = 0,
};

pub const WideGlyph = extern struct {
    unicode_weight: u16,
    attributes: WideGlyphAttributes,
    glyph_col_1: [19]u8,
    glyph_col_2: [19]u8,
    _pad: [3]u8 = [_]u8{0} ** 3,
};

pub const StringPackage = extern struct {
    header: PackageHeader,
    hdr_size: u32,
    string_info_offset: u32,
    language_window: [16]u16,
    language_name: u16,
    language: [3]u8,
};