mirror of https://github.com/fairyglade/ly.git
refactor: Use zig fetch for termbox2 dependency
Replaced the local `termbox2.h` header file with a proper dependency managed by the Zig package manager. This improves maintainability and makes it easier to track and update the library in the future. The previous `termbox2.h` contained a custom `tb_get_cell` function that is not present in the upstream repository. This function has been re-implemented in Zig (`src/tui/termbox_extras.zig`) to maintain compatibility, especially for the failed-login "cascade" animation. This change also involved updating `build.zig` and `build.zig.zon` to use the new dependency.
This commit is contained in:
parent
3ad0c00380
commit
7b81336761
|
@ -68,13 +68,17 @@ pub fn build(b: *std.Build) !void {
|
|||
const clap = b.dependency("clap", .{ .target = target, .optimize = optimize });
|
||||
exe.root_module.addImport("clap", clap.module("clap"));
|
||||
|
||||
exe.addIncludePath(b.path("include"));
|
||||
const termbox_dep = b.dependency("termbox2", .{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
|
||||
exe.linkSystemLibrary("pam");
|
||||
if (enable_x11_support) exe.linkSystemLibrary("xcb");
|
||||
exe.linkLibC();
|
||||
|
||||
const translate_c = b.addTranslateC(.{
|
||||
.root_source_file = b.path("include/termbox2.h"),
|
||||
.root_source_file = termbox_dep.path("termbox2.h"),
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
|
|
|
@ -12,6 +12,10 @@
|
|||
.url = "https://github.com/Kawaii-Ash/zigini/archive/2ed3d417f17fab5b0ee8cad8a63c6d62d7ac1042.tar.gz",
|
||||
.hash = "zigini-0.3.1-BSkB7XJGAAB2E-sKyzhTaQCBlYBL8yqzE4E_jmSY99sC",
|
||||
},
|
||||
.termbox2 = .{
|
||||
.url = "git+https://github.com/termbox/termbox2#8ee9dc17e1ca61c630f91db0aa7f81fa29a32040",
|
||||
.hash = "N-V-__8AAKvjBAAUF2KVdkHsNs7L5EEZYzBnrJTBvj-baBMZ",
|
||||
},
|
||||
},
|
||||
.paths = .{""},
|
||||
}
|
||||
|
|
4321
include/termbox2.h
4321
include/termbox2.h
File diff suppressed because it is too large
Load Diff
|
@ -2,6 +2,7 @@ const std = @import("std");
|
|||
const builtin = @import("builtin");
|
||||
const interop = @import("../interop.zig");
|
||||
const Cell = @import("Cell.zig");
|
||||
const termbox_extras = @import("termbox_extras.zig");
|
||||
|
||||
const Random = std.Random;
|
||||
|
||||
|
@ -113,8 +114,8 @@ pub fn cascade(self: TerminalBuffer) bool {
|
|||
var cell: termbox.tb_cell = undefined;
|
||||
var cell_under: termbox.tb_cell = undefined;
|
||||
|
||||
_ = termbox.tb_get_cell(@intCast(x), @intCast(y - 1), 1, &cell);
|
||||
_ = termbox.tb_get_cell(@intCast(x), @intCast(y), 1, &cell_under);
|
||||
_ = termbox_extras.tb_get_cell(@intCast(x), @intCast(y - 1), 1, &cell);
|
||||
_ = termbox_extras.tb_get_cell(@intCast(x), @intCast(y), 1, &cell_under);
|
||||
|
||||
const char: u8 = @truncate(cell.ch);
|
||||
if (std.ascii.isWhitespace(char)) continue;
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
const std = @import("std");
|
||||
const interop = @import("../interop.zig");
|
||||
const termbox = interop.termbox;
|
||||
|
||||
pub fn tb_get_cell(x: c_int, y: c_int, back: c_int, cell: *termbox.tb_cell) c_int {
|
||||
if (back == 0) {
|
||||
return termbox.TB_ERR;
|
||||
}
|
||||
|
||||
const width = termbox.tb_width();
|
||||
const height = termbox.tb_height();
|
||||
|
||||
if (x < 0 or x >= width or y < 0 or y >= height) {
|
||||
return termbox.TB_ERR_OUT_OF_BOUNDS;
|
||||
}
|
||||
|
||||
const buffer = termbox.tb_cell_buffer();
|
||||
if (buffer == null) {
|
||||
return termbox.TB_ERR_NOT_INIT;
|
||||
}
|
||||
|
||||
const index = y * width + x;
|
||||
cell.* = buffer[@intCast(index)];
|
||||
|
||||
return termbox.TB_OK;
|
||||
}
|
Loading…
Reference in New Issue