diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-04-04 19:22:04 +0300 |
|---|---|---|
| committer | Can Celik <ogulcancelik@gmail.com> | 2026-04-05 01:23:06 +0300 |
| commit | 41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch) | |
| tree | 3fc91815ca139ef2e0b281bba0abda4ef15175f4 /vendor/libghostty-vt/pkg/fontconfig/value.zig | |
| parent | 55c138263e190a1e79d4b997bfb9397306c0ec1f (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.zig | 76 |
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, +}; |
