aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/pkg/macos/graphics/path.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/macos/graphics/path.zig
parent55c138263e190a1e79d4b997bfb9397306c0ec1f (diff)
feat: finish ghostty pane backend integration
Diffstat (limited to 'vendor/libghostty-vt/pkg/macos/graphics/path.zig')
-rw-r--r--vendor/libghostty-vt/pkg/macos/graphics/path.zig68
1 files changed, 68 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/pkg/macos/graphics/path.zig b/vendor/libghostty-vt/pkg/macos/graphics/path.zig
new file mode 100644
index 00000000..7f549709
--- /dev/null
+++ b/vendor/libghostty-vt/pkg/macos/graphics/path.zig
@@ -0,0 +1,68 @@
+const std = @import("std");
+const assert = std.debug.assert;
+const Allocator = std.mem.Allocator;
+const foundation = @import("../foundation.zig");
+const graphics = @import("../graphics.zig");
+const c = @import("c.zig").c;
+
+pub const Path = opaque {
+ pub fn createWithRect(
+ rect: graphics.Rect,
+ transform: ?*const graphics.AffineTransform,
+ ) Allocator.Error!*Path {
+ return @as(
+ ?*Path,
+ @ptrFromInt(@intFromPtr(c.CGPathCreateWithRect(
+ @bitCast(rect),
+ @ptrCast(transform),
+ ))),
+ ) orelse Allocator.Error.OutOfMemory;
+ }
+
+ pub fn release(self: *Path) void {
+ foundation.CFRelease(self);
+ }
+};
+
+pub const MutablePath = opaque {
+ pub fn create() Allocator.Error!*MutablePath {
+ return @as(
+ ?*MutablePath,
+ @ptrFromInt(@intFromPtr(c.CGPathCreateMutable())),
+ ) orelse Allocator.Error.OutOfMemory;
+ }
+
+ pub fn release(self: *MutablePath) void {
+ foundation.CFRelease(self);
+ }
+
+ pub fn addRect(
+ self: *MutablePath,
+ transform: ?*const graphics.AffineTransform,
+ rect: graphics.Rect,
+ ) void {
+ c.CGPathAddRect(
+ @ptrCast(self),
+ @ptrCast(transform),
+ @bitCast(rect),
+ );
+ }
+
+ pub fn getBoundingBox(self: *MutablePath) graphics.Rect {
+ return @bitCast(c.CGPathGetBoundingBox(@ptrCast(self)));
+ }
+};
+
+test "mutable path" {
+ //const testing = std.testing;
+
+ const path = try MutablePath.create();
+ defer path.release();
+
+ path.addRect(null, graphics.Rect.init(0, 0, 100, 200));
+}
+
+test "path from rect" {
+ const path = try Path.createWithRect(graphics.Rect.init(0, 0, 100, 200), null);
+ defer path.release();
+}