mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
pkg/harfbuzz: some functions and tests
This commit is contained in:
@ -2,7 +2,7 @@ const std = @import("std");
|
||||
|
||||
/// Directories with our includes.
|
||||
const root = thisDir() ++ "../../../vendor/harfbuzz/";
|
||||
const include_path = root ++ "include";
|
||||
const include_path = root ++ "src/";
|
||||
|
||||
pub const include_paths = .{include_path};
|
||||
|
||||
|
4
pkg/harfbuzz/c.zig
Normal file
4
pkg/harfbuzz/c.zig
Normal file
@ -0,0 +1,4 @@
|
||||
pub usingnamespace @cImport({
|
||||
@cInclude("hb.h");
|
||||
@cInclude("hb-ft.h");
|
||||
});
|
@ -1 +1,6 @@
|
||||
// Todo!
|
||||
pub const c = @import("c.zig");
|
||||
pub usingnamespace @import("version.zig");
|
||||
|
||||
test {
|
||||
@import("std").testing.refAllDecls(@This());
|
||||
}
|
||||
|
47
pkg/harfbuzz/version.zig
Normal file
47
pkg/harfbuzz/version.zig
Normal file
@ -0,0 +1,47 @@
|
||||
const std = @import("std");
|
||||
const c = @import("c.zig");
|
||||
|
||||
pub const Version = struct {
|
||||
major: u32,
|
||||
minor: u32,
|
||||
micro: u32,
|
||||
};
|
||||
|
||||
/// Returns library version as three integer components.
|
||||
pub fn version() Version {
|
||||
var major: c_uint = 0;
|
||||
var minor: c_uint = 0;
|
||||
var micro: c_uint = 0;
|
||||
c.hb_version(&major, &minor, µ);
|
||||
return .{ .major = major, .minor = minor, .micro = micro };
|
||||
}
|
||||
|
||||
/// Tests the library version against a minimum value, as three integer components.
|
||||
pub fn versionAtLeast(vsn: Version) bool {
|
||||
return c.hb_version_atleast(
|
||||
vsn.major,
|
||||
vsn.minor,
|
||||
vsn.micro,
|
||||
) > 0;
|
||||
}
|
||||
|
||||
/// Returns library version as a string with three components.
|
||||
pub fn versionString() [:0]const u8 {
|
||||
const res = c.hb_version_string();
|
||||
return std.mem.sliceTo(res, 0);
|
||||
}
|
||||
|
||||
test {
|
||||
const testing = std.testing;
|
||||
|
||||
// Should be able to get the version
|
||||
const vsn = version();
|
||||
try testing.expect(vsn.major > 0);
|
||||
|
||||
// Should be at least version 1
|
||||
try testing.expect(versionAtLeast(.{
|
||||
.major = 1,
|
||||
.minor = 0,
|
||||
.micro = 0,
|
||||
}));
|
||||
}
|
Reference in New Issue
Block a user