sokoban-v2/libs/stb/src/stb_rect_pack.zig
2026-07-11 17:04:17 +03:00

37 lines
1.0 KiB
Zig

const std = @import("std");
const c = @cImport({
@cInclude("stb_rect_pack.h");
});
const STBRectPack = @This();
ctx: c.stbrp_context,
pub fn init(self: *STBRectPack, width: u32, height: u32, nodes: []Node) void {
c.stbrp_init_target(&self.ctx, @intCast(width), @intCast(height), nodes.ptr, @intCast(nodes.len));
}
pub fn setupAllowOutOfMem(self: *STBRectPack, enabled: bool) void {
c.stbrp_setup_heuristic(&self.ctx, if (enabled) 1 else 0);
}
pub fn setupHeuristic(self: *STBRectPack, heuristic: Heuristic) void {
c.stbrp_setup_heuristic(&self.ctx, heuristic);
}
pub fn packRects(self: *STBRectPack, rects: []Rect) bool {
return c.stbrp_pack_rects(&self.ctx, rects.ptr, @intCast(rects.len)) == 1;
}
pub const Heuristic = enum(i32) {
Skyline_BL_sortHeight = c.STBRP_HEURISTIC_Skyline_BL_sortHeight,
Skyline_BF_sortHeight = c.STBRP_HEURISTIC_Skyline_BF_sortHeight,
_,
pub const default = Heuristic.Skyline_BL_sortHeight;
};
pub const Node = c.stbrp_node;
pub const Rect = c.stbrp_rect;