freetype: find and fix bugs by fixing refAllDecls()
This commit is contained in:
parent
2b7527b028
commit
9c585693b1
8 changed files with 35 additions and 32 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)));
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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)),
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue