From 8fa971e1390481b56debea8fef04172b26f42ab7 Mon Sep 17 00:00:00 2001 From: KAYT33N Date: Sat, 3 Aug 2024 00:35:29 +0330 Subject: [PATCH] Seprates big clock's hard codes from its logic --- src/bigclock.zig | 138 ++++++++---------------------------------- src/bigclock/Lang.zig | 23 +++++++ src/bigclock/en.zig | 92 ++++++++++++++++++++++++++++ src/main.zig | 2 +- 4 files changed, 142 insertions(+), 113 deletions(-) create mode 100644 src/bigclock/Lang.zig create mode 100644 src/bigclock/en.zig diff --git a/src/bigclock.zig b/src/bigclock.zig index 6084569..ef02d5b 100644 --- a/src/bigclock.zig +++ b/src/bigclock.zig @@ -1,111 +1,22 @@ const std = @import("std"); -const builtin = @import("builtin"); const interop = @import("interop.zig"); const utils = @import("tui/utils.zig"); +const enums = @import("enums.zig"); +const Lang = @import("bigclock/Lang.zig"); +const en = @import("bigclock/en.zig"); +const termbox = interop.termbox; +const Bigclock = enums.Bigclock; +pub const WIDTH = Lang.WIDTH; +pub const HEIGHT = Lang.HEIGHT; +pub const SIZE = Lang.SIZE; -const termbox = interop.termbox; - -const X: u32 = if (builtin.os.tag == .linux or builtin.os.tag.isBSD()) 0x2593 else '#'; -const O: u32 = 0; - -pub const WIDTH = 5; -pub const HEIGHT = 5; -pub const SIZE = WIDTH * HEIGHT; - -// zig fmt: off -const ZERO = [_]u21{ - X,X,X,X,X, - X,X,O,X,X, - X,X,O,X,X, - X,X,O,X,X, - X,X,X,X,X, -}; -const ONE = [_]u21{ - O,O,O,X,X, - O,O,O,X,X, - O,O,O,X,X, - O,O,O,X,X, - O,O,O,X,X, -}; -const TWO = [_]u21{ - X,X,X,X,X, - O,O,O,X,X, - X,X,X,X,X, - X,X,O,O,O, - X,X,X,X,X, -}; -const THREE = [_]u21{ - X,X,X,X,X, - O,O,O,X,X, - X,X,X,X,X, - O,O,O,X,X, - X,X,X,X,X, -}; -const FOUR = [_]u21{ - X,X,O,X,X, - X,X,O,X,X, - X,X,X,X,X, - O,O,O,X,X, - O,O,O,X,X, -}; -const FIVE = [_]u21{ - X,X,X,X,X, - X,X,O,O,O, - X,X,X,X,X, - O,O,O,X,X, - X,X,X,X,X, -}; -const SIX = [_]u21{ - X,X,X,X,X, - X,X,O,O,O, - X,X,X,X,X, - X,X,O,X,X, - X,X,X,X,X, -}; -const SEVEN = [_]u21{ - X,X,X,X,X, - O,O,O,X,X, - O,O,O,X,X, - O,O,O,X,X, - O,O,O,X,X, -}; -const EIGHT = [_]u21{ - X,X,X,X,X, - X,X,O,X,X, - X,X,X,X,X, - X,X,O,X,X, - X,X,X,X,X, -}; -const NINE = [_]u21{ - X,X,X,X,X, - X,X,O,X,X, - X,X,X,X,X, - O,O,O,X,X, - X,X,X,X,X, -}; -const S = [_]u21{ - O,O,O,O,O, - O,O,X,O,O, - O,O,O,O,O, - O,O,X,O,O, - O,O,O,O,O, -}; -const E = [_]u21{ - O,O,O,O,O, - O,O,O,O,O, - O,O,O,O,O, - O,O,O,O,O, - O,O,O,O,O, -}; -// zig fmt: on - -pub fn clockCell(animate: bool, char: u8, fg: u16, bg: u16) [SIZE]utils.Cell { +pub fn clockCell(animate: bool, char: u8, fg: u16, bg: u16, bigclock: Bigclock) [SIZE]utils.Cell { var cells: [SIZE]utils.Cell = undefined; var tv: interop.system_time.timeval = undefined; _ = interop.system_time.gettimeofday(&tv, null); - const clock_chars = toBigNumber(if (animate and char == ':' and @divTrunc(tv.tv_usec, 500000) != 0) ' ' else char); + const clock_chars = toBigNumber(if (animate and char == ':' and @divTrunc(tv.tv_usec, 500000) != 0) ' ' else char, bigclock); for (0..cells.len) |i| cells[i] = utils.initCell(clock_chars[i], fg, bg); return cells; @@ -122,19 +33,22 @@ pub fn alphaBlit(x: usize, y: usize, tb_width: usize, tb_height: usize, cells: [ } } -fn toBigNumber(char: u8) []const u21 { +fn toBigNumber(char: u8, bigclock: Bigclock) []const u21 { + const locale_chars = switch (bigclock) { + else => en.locale_chars, + }; return switch (char) { - '0' => &ZERO, - '1' => &ONE, - '2' => &TWO, - '3' => &THREE, - '4' => &FOUR, - '5' => &FIVE, - '6' => &SIX, - '7' => &SEVEN, - '8' => &EIGHT, - '9' => &NINE, - ':' => &S, - else => &E, + '0' => &locale_chars.ZERO, + '1' => &locale_chars.ONE, + '2' => &locale_chars.TWO, + '3' => &locale_chars.THREE, + '4' => &locale_chars.FOUR, + '5' => &locale_chars.FIVE, + '6' => &locale_chars.SIX, + '7' => &locale_chars.SEVEN, + '8' => &locale_chars.EIGHT, + '9' => &locale_chars.NINE, + ':' => &locale_chars.S, + else => &locale_chars.E, }; } diff --git a/src/bigclock/Lang.zig b/src/bigclock/Lang.zig new file mode 100644 index 0000000..4229776 --- /dev/null +++ b/src/bigclock/Lang.zig @@ -0,0 +1,23 @@ +const builtin = @import("builtin"); + +pub const WIDTH = 5; +pub const HEIGHT = 5; +pub const SIZE = WIDTH * HEIGHT; + +pub const X: u32 = if (builtin.os.tag == .linux or builtin.os.tag.isBSD()) 0x2593 else '#'; +pub const O: u32 = 0; + +pub const LocaleChars = struct { + ZERO: [SIZE]u21, + ONE: [SIZE]u21, + TWO: [SIZE]u21, + THREE: [SIZE]u21, + FOUR: [SIZE]u21, + FIVE: [SIZE]u21, + SIX: [SIZE]u21, + SEVEN: [SIZE]u21, + EIGHT: [SIZE]u21, + NINE: [SIZE]u21, + S: [SIZE]u21, + E: [SIZE]u21, +}; \ No newline at end of file diff --git a/src/bigclock/en.zig b/src/bigclock/en.zig new file mode 100644 index 0000000..de0946b --- /dev/null +++ b/src/bigclock/en.zig @@ -0,0 +1,92 @@ +const Lang = @import("Lang.zig"); + +const LocaleChars = Lang.LocaleChars; +const X = Lang.X; +const O = Lang.O; + +pub const locale_chars = LocaleChars{ + .ZERO = [_]u21{ + X,X,X,X,X, + X,X,O,X,X, + X,X,O,X,X, + X,X,O,X,X, + X,X,X,X,X, + }, + .ONE = [_]u21{ + O,O,O,X,X, + O,O,O,X,X, + O,O,O,X,X, + O,O,O,X,X, + O,O,O,X,X, + }, + .TWO = [_]u21{ + X,X,X,X,X, + O,O,O,X,X, + X,X,X,X,X, + X,X,O,O,O, + X,X,X,X,X, + }, + .THREE = [_]u21{ + X,X,X,X,X, + O,O,O,X,X, + X,X,X,X,X, + O,O,O,X,X, + X,X,X,X,X, + }, + .FOUR = [_]u21{ + X,X,O,X,X, + X,X,O,X,X, + X,X,X,X,X, + O,O,O,X,X, + O,O,O,X,X, + }, + .FIVE = [_]u21{ + X,X,X,X,X, + X,X,O,O,O, + X,X,X,X,X, + O,O,O,X,X, + X,X,X,X,X, + }, + .SIX = [_]u21{ + X,X,X,X,X, + X,X,O,O,O, + X,X,X,X,X, + X,X,O,X,X, + X,X,X,X,X, + }, + .SEVEN = [_]u21{ + X,X,X,X,X, + O,O,O,X,X, + O,O,O,X,X, + O,O,O,X,X, + O,O,O,X,X, + }, + .EIGHT = [_]u21{ + X,X,X,X,X, + X,X,O,X,X, + X,X,X,X,X, + X,X,O,X,X, + X,X,X,X,X, + }, + .NINE = [_]u21{ + X,X,X,X,X, + X,X,O,X,X, + X,X,X,X,X, + O,O,O,X,X, + X,X,X,X,X, + }, + .S = [_]u21{ + O,O,O,O,O, + O,O,X,O,O, + O,O,O,O,O, + O,O,X,O,O, + O,O,O,O,O, + }, + .E = [_]u21{ + O,O,O,O,O, + O,O,O,O,O, + O,O,O,O,O, + O,O,O,O,O, + O,O,O,O,O, + }, +}; \ No newline at end of file diff --git a/src/main.zig b/src/main.zig index 83fdf3b..b9cf38a 100644 --- a/src/main.zig +++ b/src/main.zig @@ -396,7 +396,7 @@ pub fn main() !void { }; for (clock_str, 0..) |c, i| { - const clock_cell = bigclock.clockCell(animate, c, buffer.fg, buffer.bg); + const clock_cell = bigclock.clockCell(animate, c, buffer.fg, buffer.bg, config.bigclock); bigclock.alphaBlit(xo + i * (bigclock.WIDTH + 1), yo, buffer.width, buffer.height, clock_cell); } }