aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/pkg/macos/graphics/bitmap_context.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/bitmap_context.zig
parent55c138263e190a1e79d4b997bfb9397306c0ec1f (diff)
feat: finish ghostty pane backend integration
Diffstat (limited to 'vendor/libghostty-vt/pkg/macos/graphics/bitmap_context.zig')
-rw-r--r--vendor/libghostty-vt/pkg/macos/graphics/bitmap_context.zig50
1 files changed, 50 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/pkg/macos/graphics/bitmap_context.zig b/vendor/libghostty-vt/pkg/macos/graphics/bitmap_context.zig
new file mode 100644
index 00000000..7db5577f
--- /dev/null
+++ b/vendor/libghostty-vt/pkg/macos/graphics/bitmap_context.zig
@@ -0,0 +1,50 @@
+const std = @import("std");
+const assert = std.debug.assert;
+const Allocator = std.mem.Allocator;
+const graphics = @import("../graphics.zig");
+const Context = @import("context.zig").Context;
+const c = @import("c.zig").c;
+
+pub const BitmapContext = opaque {
+ pub const context = Context(BitmapContext);
+
+ pub fn create(
+ data: ?[]u8,
+ width: usize,
+ height: usize,
+ bits_per_component: usize,
+ bytes_per_row: usize,
+ space: *graphics.ColorSpace,
+ opts: c_uint,
+ ) Allocator.Error!*BitmapContext {
+ return @as(
+ ?*BitmapContext,
+ @ptrFromInt(@intFromPtr(c.CGBitmapContextCreate(
+ @ptrCast(if (data) |d| d.ptr else null),
+ width,
+ height,
+ bits_per_component,
+ bytes_per_row,
+ @ptrCast(space),
+ opts,
+ ))),
+ ) orelse Allocator.Error.OutOfMemory;
+ }
+};
+
+test {
+ //const testing = std.testing;
+
+ const cs = try graphics.ColorSpace.createDeviceGray();
+ defer cs.release();
+ const ctx = try BitmapContext.create(null, 80, 80, 8, 80, cs, 0);
+ const context = BitmapContext.context;
+ defer context.release(ctx);
+ context.setShouldAntialias(ctx, true);
+ context.setShouldSmoothFonts(ctx, false);
+ context.setGrayFillColor(ctx, 1, 1);
+ context.setGrayStrokeColor(ctx, 1, 1);
+ context.setTextDrawingMode(ctx, .fill);
+ context.setTextMatrix(ctx, graphics.AffineTransform.identity());
+ context.setTextPosition(ctx, 0, 0);
+}