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/macos/graphics/bitmap_context.zig | |
| parent | 55c138263e190a1e79d4b997bfb9397306c0ec1f (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.zig | 50 |
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); +} |
