aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/pkg/fontconfig/value.zig
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-04-04 19:22:04 +0300
committerCan Celik <ogulcancelik@gmail.com>2026-04-05 01:23:06 +0300
commit41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch)
tree3fc91815ca139ef2e0b281bba0abda4ef15175f4 /vendor/libghostty-vt/pkg/fontconfig/value.zig
parent55c138263e190a1e79d4b997bfb9397306c0ec1f (diff)
feat: finish ghostty pane backend integration
Diffstat (limited to 'vendor/libghostty-vt/pkg/fontconfig/value.zig')
-rw-r--r--vendor/libghostty-vt/pkg/fontconfig/value.zig76
1 files changed, 76 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/pkg/fontconfig/value.zig b/vendor/libghostty-vt/pkg/fontconfig/value.zig
new file mode 100644
index 00000000..89f796a2
--- /dev/null
+++ b/vendor/libghostty-vt/pkg/fontconfig/value.zig
@@ -0,0 +1,76 @@
+const std = @import("std");
+const assert = std.debug.assert;
+const c = @import("c.zig").c;
+const CharSet = @import("main.zig").CharSet;
+const LangSet = @import("main.zig").LangSet;
+const Matrix = @import("main.zig").Matrix;
+const Range = @import("main.zig").Range;
+
+pub const Type = enum(c_int) {
+ unknown = c.FcTypeUnknown,
+ void = c.FcTypeVoid,
+ integer = c.FcTypeInteger,
+ double = c.FcTypeDouble,
+ string = c.FcTypeString,
+ bool = c.FcTypeBool,
+ matrix = c.FcTypeMatrix,
+ char_set = c.FcTypeCharSet,
+ ft_face = c.FcTypeFTFace,
+ lang_set = c.FcTypeLangSet,
+ range = c.FcTypeRange,
+};
+
+pub const Value = union(Type) {
+ unknown: void,
+ void: void,
+ integer: i32,
+ double: f64,
+ string: [:0]const u8,
+ bool: bool,
+ matrix: *const Matrix,
+ char_set: *const CharSet,
+ ft_face: *anyopaque,
+ lang_set: *const LangSet,
+ range: *const Range,
+
+ pub fn init(cvalue: *c.struct__FcValue) Value {
+ return switch (@as(Type, @enumFromInt(cvalue.type))) {
+ .unknown => .{ .unknown = {} },
+ .void => .{ .void = {} },
+ .string => .{ .string = std.mem.sliceTo(cvalue.u.s, 0) },
+ .integer => .{ .integer = @intCast(cvalue.u.i) },
+ .double => .{ .double = cvalue.u.d },
+ .bool => .{ .bool = cvalue.u.b == c.FcTrue },
+ .matrix => .{ .matrix = @ptrCast(cvalue.u.m) },
+ .char_set => .{ .char_set = @ptrCast(cvalue.u.c) },
+ .ft_face => .{ .ft_face = @ptrCast(cvalue.u.f) },
+ .lang_set => .{ .lang_set = @ptrCast(cvalue.u.l) },
+ .range => .{ .range = @ptrCast(cvalue.u.r) },
+ };
+ }
+
+ pub fn cval(self: Value) c.struct__FcValue {
+ return .{
+ .type = @intFromEnum(std.meta.activeTag(self)),
+ .u = switch (self) {
+ .unknown => undefined,
+ .void => undefined,
+ .integer => |v| .{ .i = @intCast(v) },
+ .double => |v| .{ .d = v },
+ .string => |v| .{ .s = v.ptr },
+ .bool => |v| .{ .b = if (v) c.FcTrue else c.FcFalse },
+ .matrix => |v| .{ .m = @ptrCast(v) },
+ .char_set => |v| .{ .c = @ptrCast(v) },
+ .ft_face => |v| .{ .f = v },
+ .lang_set => |v| .{ .l = @ptrCast(v) },
+ .range => |v| .{ .r = @ptrCast(v) },
+ },
+ };
+ }
+};
+
+pub const ValueBinding = enum(c_int) {
+ weak = c.FcValueBindingWeak,
+ strong = c.FcValueBindingStrong,
+ same = c.FcValueBindingSame,
+};