freetype: find and fix bugs by fixing refAllDecls()

This commit is contained in:
Ali Chraghi 2022-06-10 17:01:27 +04:30 committed by Stephen Gutekanst
parent 2b7527b028
commit 9c585693b1
8 changed files with 35 additions and 32 deletions

View file

@ -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,

View file

@ -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);
}
};

View file

@ -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);
}
};

View file

@ -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);
}

View file

@ -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)));
}
};

View file

@ -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)),
};
}

View file

@ -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"));
}

View file

@ -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);
}
}
}