const std = @import("std"); const wayland = @import("../root.zig"); const wl = wayland.wl; pub fn Buffer(fmt: wl.Shm.Format) type { return struct { const Self = @This(); pub const Request = union(enum) { destroy: void, }; pub const Events = wayland.EventSet(Self, .{}); handle: wayland.Object.Ref, data: []wl.Shm.Format.Pixel(fmt), width: usize, height: usize, pub fn init( self: *Self, ctx: wayland.Context, width: usize, height: usize, data: []u8, ) !void { self.* = .{ .handle = try ctx.display.registry.add_object( ctx.allocator, wayland.Object.from_self(self), ), .data = @alignCast(@ptrCast(data)), .width = width, .height = height, }; } pub fn format( self: *const Self, comptime f: []const u8, options: std.fmt.FormatOptions, writer: anytype, ) !void { _ = f; _ = options; try writer.print("wl.buffer<{s}> {{ {}x{} }}", .{@tagName(fmt), self.width, self.height}); } }; }