diff --git a/freetype/src/freetype/Stroker.zig b/freetype/src/freetype/Stroker.zig index 07d23d41..a73da5a5 100644 --- a/freetype/src/freetype/Stroker.zig +++ b/freetype/src/freetype/Stroker.zig @@ -1,6 +1,6 @@ const c = @import("c.zig"); -pub const Stroker = @This(); +const Stroker = @This(); pub const LineCap = enum(u2) { butt = c.FT_STROKER_LINECAP_BUTT, diff --git a/freetype/src/freetype/color.zig b/freetype/src/freetype/color.zig index dbd1ffd8..78ea6d29 100644 --- a/freetype/src/freetype/color.zig +++ b/freetype/src/freetype/color.zig @@ -107,15 +107,15 @@ pub const PaletteData = struct { } pub fn paletteNameIDs(self: PaletteData) ?[]const u16 { - return @ptrCast(?[]const u16, self.handle.palette_name_ids[0..self.numPalettes()]); + return self.handle.palette_name_ids[0..self.numPalettes()]; } pub fn paletteFlags(self: PaletteData) ?[]const u16 { - return @ptrCast(?[]const u16, self.handle.palette_flags[0..self.numPalettes()]); + return self.handle.palette_flags[0..self.numPalettes()]; } pub fn paletteFlag(self: PaletteData, index: usize) PaletteFlags { - return PaletteFlags.from(@intCast(u2, self.handle.*.palette_flags[index])); + return PaletteFlags.from(@intCast(u2, self.handle.palette_flags[index])); } pub fn numPaletteEntries(self: PaletteData) u16 { @@ -123,7 +123,7 @@ pub const PaletteData = struct { } pub fn paletteEntryNameIDs(self: PaletteData) ?[]const u16 { - return @ptrCast(?[]const u16, self.handle.palette_entry_name_ids[0..self.numPaletteEntries()]); + return self.handle.palette_entry_name_ids[0..self.numPaletteEntries()]; } }; @@ -141,7 +141,7 @@ pub const PaletteFlags = packed struct { } pub fn to(flags: PaletteFlags) u2 { - return utils.structToBitFields(u2, PaletteFlags, Flag, flags); + return utils.structToBitFields(u2, Flag, flags); } }; diff --git a/freetype/src/freetype/freetype.zig b/freetype/src/freetype/freetype.zig index 080e2d36..843469c5 100644 --- a/freetype/src/freetype/freetype.zig +++ b/freetype/src/freetype/freetype.zig @@ -75,7 +75,9 @@ pub const Size = struct { } pub fn deinit(self: Size) void { - c.FT_Done_Size(self.handle); + intToError(c.FT_Done_Size(self.handle)) catch |err| { + std.log.err("mach/freetype: Failed to destroy Size: {}", .{err}); + }; } }; @@ -207,7 +209,7 @@ pub const FSType = packed struct { } pub fn cast(flags: FSType) u10 { - return utils.structToBitFields(u10, FSType, Flag, flags); + return utils.structToBitFields(u10, Flag, flags); } }; @@ -225,7 +227,7 @@ pub const StyleFlags = packed struct { } pub fn cast(flags: StyleFlags) u2 { - return utils.structToBitFields(u2, StyleFlags, Flag, flags); + return utils.structToBitFields(u2, Flag, flags); } }; diff --git a/freetype/src/freetype/main.zig b/freetype/src/freetype/main.zig index 7fd74105..d20de50f 100644 --- a/freetype/src/freetype/main.zig +++ b/freetype/src/freetype/main.zig @@ -11,14 +11,12 @@ pub const Error = @import("error.zig").Error; const utils = @import("utils"); test { - utils.refAllDecls(@This()); + utils.refAllDecls(@import("freetype.zig")); + utils.refAllDecls(@import("types.zig")); + utils.refAllDecls(@import("image.zig")); utils.refAllDecls(@import("color.zig")); + utils.refAllDecls(@import("lcdfilter.zig")); utils.refAllDecls(@import("error.zig")); - utils.refAllDecls(@import("utils")); - utils.refAllDecls(@import("Face.zig")); - utils.refAllDecls(@import("GlyphSlot.zig")); - utils.refAllDecls(@import("Library.zig")); - utils.refAllDecls(@import("Outline.zig")); utils.refAllDecls(Glyph); utils.refAllDecls(Stroker); } diff --git a/freetype/src/harfbuzz/buffer.zig b/freetype/src/harfbuzz/buffer.zig index 5d6a2f32..6a4297b1 100644 --- a/freetype/src/harfbuzz/buffer.zig +++ b/freetype/src/harfbuzz/buffer.zig @@ -21,7 +21,7 @@ pub const Buffer = struct { verify: bool = false, produce_unsafe_to_concat: bool = false, - pub const Flag = enum(u21) { + pub const Flag = enum(u7) { bot = c.HB_BUFFER_FLAG_BOT, eot = c.HB_BUFFER_FLAG_EOT, preserve_default_ignorables = c.HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES, @@ -31,12 +31,12 @@ pub const Buffer = struct { produce_unsafe_to_concat = c.HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT, }; - pub fn from(bits: u21) Flags { + pub fn from(bits: u7) Flags { return utils.bitFieldsToStruct(Flags, Flag, bits); } - pub fn cast(flags: Flags) u21 { - return utils.structToBitFields(u21, Flag, flags); + pub fn cast(flags: Flags) u7 { + return utils.structToBitFields(u7, Flag, flags); } }; @@ -140,11 +140,11 @@ pub const Buffer = struct { } pub fn setLanguage(self: Buffer, lang: Language) void { - c.hb_buffer_set_language(self.handle, @enumToInt(lang)); + c.hb_buffer_set_language(self.handle, lang.handle); } pub fn getLanguage(self: Buffer) Language { - return @intToEnum(Language, c.hb_buffer_get_language(self.handle)); + return Language{ .handle = c.hb_buffer_get_language(self.handle) }; } pub fn setFlags(self: Buffer, flags: Flags) void { @@ -152,6 +152,6 @@ pub const Buffer = struct { } pub fn getFlags(self: Buffer) Flags { - return Flags.from(c.hb_buffer_get_flags(self.handle)); + return Flags.from(@intCast(u7, c.hb_buffer_get_flags(self.handle))); } }; diff --git a/freetype/src/harfbuzz/common.zig b/freetype/src/harfbuzz/common.zig index 896f824f..b6da2242 100644 --- a/freetype/src/harfbuzz/common.zig +++ b/freetype/src/harfbuzz/common.zig @@ -181,7 +181,7 @@ pub const Language = struct { pub fn init(name: []const u8) Language { return .{ - .handle = c.hb_language_from_string(&name[0], name.len), + .handle = c.hb_language_from_string(&name[0], @intCast(c_int, name.len)), }; } diff --git a/freetype/src/harfbuzz/main.zig b/freetype/src/harfbuzz/main.zig index 6034b3c1..f6a82eb8 100644 --- a/freetype/src/harfbuzz/main.zig +++ b/freetype/src/harfbuzz/main.zig @@ -6,5 +6,7 @@ pub const c = @import("c.zig"); const utils = @import("utils"); test { - utils.refAllDecls(@This()); + utils.refAllDecls(@import("blob.zig")); + utils.refAllDecls(@import("buffer.zig")); + utils.refAllDecls(@import("common.zig")); } diff --git a/freetype/src/utils.zig b/freetype/src/utils.zig index d161e1fe..5e84b542 100644 --- a/freetype/src/utils.zig +++ b/freetype/src/utils.zig @@ -21,15 +21,16 @@ pub fn bitFieldsToStruct(comptime StructType: type, comptime EnumDataType: type, } pub fn refAllDecls(comptime T: type) void { - switch (@typeInfo(T)) { - .Struct, .Union, .Opaque, .Enum => { - inline for (comptime std.meta.declarations(T)) |decl| { - if (decl.is_pub) { - refAllDecls(@TypeOf(@field(T, decl.name))); - std.testing.refAllDecls(T); + @setEvalBranchQuota(10000); + inline for (comptime std.meta.declarations(T)) |decl| { + if (decl.is_pub) { + if (@TypeOf(@field(T, decl.name)) == type) { + switch (@typeInfo(@field(T, decl.name))) { + .Struct, .Enum, .Union, .Opaque => refAllDecls(@field(T, decl.name)), + else => {}, } } - }, - else => {}, + _ = @field(T, decl.name); + } } }