| ... | ... | @@ -1,130 +0,0 @@ |
| 1 | | const std = @import("std"); |
| 2 | | const gpa = std.heap.c_allocator; |
| 3 | | |
| 4 | | const u = @import("index.zig"); |
| 5 | | |
| 6 | | // |
| 7 | | // |
| 8 | | |
| 9 | | pub const ansi = struct { |
| 10 | | pub const escape = struct { |
| 11 | | pub const SS2 = u.ascii.ESC.s() ++ "N"; |
| 12 | | pub const SS3 = u.ascii.ESC.s() ++ "O"; |
| 13 | | pub const DCS = u.ascii.ESC.s() ++ "P"; |
| 14 | | pub const CSI = u.ascii.ESC.s() ++ "["; |
| 15 | | pub const ST = u.ascii.ESC.s() ++ "\\"; |
| 16 | | pub const OSC = u.ascii.ESC.s() ++ "]"; |
| 17 | | pub const SOS = u.ascii.ESC.s() ++ "X"; |
| 18 | | pub const PM = u.ascii.ESC.s() ++ "^"; |
| 19 | | pub const APC = u.ascii.ESC.s() ++ "_"; |
| 20 | | pub const RIS = u.ascii.ESC.s() ++ "c"; |
| 21 | | }; |
| 22 | | |
| 23 | | fn make_csi_sequence(comptime c: []const u8, x: anytype) []const u8 { |
| 24 | | return escape.CSI ++ u._join(";", arr_i_to_s(x)) ++ c; |
| 25 | | } |
| 26 | | |
| 27 | | fn arr_i_to_s(x: anytype) [][]const u8 { |
| 28 | | var res: [x.len][]const u8 = undefined; |
| 29 | | for (x) |item, i| { |
| 30 | | res[i] = std.fmt.comptimePrint("{}", .{item}); |
| 31 | | } |
| 32 | | return &res; |
| 33 | | } |
| 34 | | |
| 35 | | pub const csi = struct { |
| 36 | | fn CursorUp(n: i32) []const u8 { return make_csi_sequence("A", .{n}); } |
| 37 | | fn CursorDown(n: i32) []const u8 { return make_csi_sequence("B", .{n}); } |
| 38 | | fn CursorForward(n: i32) []const u8 { return make_csi_sequence("C", .{n}); } |
| 39 | | fn CursorBack(n: i32) []const u8 { return make_csi_sequence("D", .{n}); } |
| 40 | | fn CursorNextLine(n: i32) []const u8 { return make_csi_sequence("E", .{n}); } |
| 41 | | fn CursorPrevLine(n: i32) []const u8 { return make_csi_sequence("F", .{n}); } |
| 42 | | fn CursorHorzAbs(n: i32) []const u8 { return make_csi_sequence("G", .{n}); } |
| 43 | | fn CursorPos(n: i32, m: i32) []const u8 { return make_csi_sequence("H", .{n, m}); } |
| 44 | | fn EraseInDisplay(n: i32) []const u8 { return make_csi_sequence("J", .{n}); } |
| 45 | | fn EraseInLine(n: i32) []const u8 { return make_csi_sequence("K", .{n}); } |
| 46 | | fn ScrollUp(n: i32) []const u8 { return make_csi_sequence("S", .{n}); } |
| 47 | | fn ScrollDown(n: i32) []const u8 { return make_csi_sequence("T", .{n}); } |
| 48 | | fn HorzVertPos(n: i32, m: i32) []const u8 { return make_csi_sequence("f", .{n, m}); } |
| 49 | | fn SGR(ns: anytype) []const u8 { return make_csi_sequence("m", ns); } |
| 50 | | }; |
| 51 | | |
| 52 | | pub const style = struct { |
| 53 | | pub const ResetAll = csi.SGR(.{0}); |
| 54 | | |
| 55 | | pub const Bold = csi.SGR(.{1}); |
| 56 | | pub const Faint = csi.SGR(.{2}); |
| 57 | | pub const Italic = csi.SGR(.{3}); |
| 58 | | pub const Underline = csi.SGR(.{4}); |
| 59 | | pub const BlinkSlow = csi.SGR(.{5}); |
| 60 | | pub const BlinkFast = csi.SGR(.{6}); |
| 61 | | |
| 62 | | pub const ResetFont = csi.SGR(.{10}); |
| 63 | | pub const Font1 = csi.SGR(.{11}); |
| 64 | | pub const Font2 = csi.SGR(.{12}); |
| 65 | | pub const Font3 = csi.SGR(.{13}); |
| 66 | | pub const Font4 = csi.SGR(.{14}); |
| 67 | | pub const Font5 = csi.SGR(.{15}); |
| 68 | | pub const Font6 = csi.SGR(.{16}); |
| 69 | | pub const Font7 = csi.SGR(.{17}); |
| 70 | | pub const Font8 = csi.SGR(.{18}); |
| 71 | | pub const Font9 = csi.SGR(.{19}); |
| 72 | | |
| 73 | | pub const UnderlineDouble = csi.SGR(.{21}); |
| 74 | | pub const ResetIntensity = csi.SGR(.{22}); |
| 75 | | pub const ResetItalic = csi.SGR(.{23}); |
| 76 | | pub const ResetUnderline = csi.SGR(.{24}); |
| 77 | | pub const ResetBlink = csi.SGR(.{25}); |
| 78 | | |
| 79 | | pub const FgBlack = csi.SGR(.{30}); |
| 80 | | pub const FgRed = csi.SGR(.{31}); |
| 81 | | pub const FgGreen = csi.SGR(.{32}); |
| 82 | | pub const FgYellow = csi.SGR(.{33}); |
| 83 | | pub const FgBlue = csi.SGR(.{34}); |
| 84 | | pub const FgMagenta = csi.SGR(.{35}); |
| 85 | | pub const FgCyan = csi.SGR(.{36}); |
| 86 | | pub const FgWhite = csi.SGR(.{37}); |
| 87 | | // Fg8bit = func(n int) string { return csi.SGR(38, 5, n) } |
| 88 | | // Fg24bit = func(r, g, b int) string { return csi.SGR(38, 2, r, g, b) } |
| 89 | | pub const ResetFgColor = csi.SGR(.{39}); |
| 90 | | |
| 91 | | pub const BgBlack = csi.SGR(.{40}); |
| 92 | | pub const BgRed = csi.SGR(.{41}); |
| 93 | | pub const BgGreen = csi.SGR(.{42}); |
| 94 | | pub const BgYellow = csi.SGR(.{43}); |
| 95 | | pub const BgBlue = csi.SGR(.{44}); |
| 96 | | pub const BgMagenta = csi.SGR(.{45}); |
| 97 | | pub const BgCyan = csi.SGR(.{46}); |
| 98 | | pub const BgWhite = csi.SGR(.{47}); |
| 99 | | // Bg8bit = func(n int) string { return csi.SGR(48, 5, n) } |
| 100 | | // Bg24bit = func(r, g, b int) string { return csi.SGR(48, 2, r, g, b) } |
| 101 | | pub const ResetBgColor = csi.SGR(.{49}); |
| 102 | | |
| 103 | | pub const Framed = csi.SGR(.{51}); |
| 104 | | pub const Encircled = csi.SGR(.{52}); |
| 105 | | pub const Overlined = csi.SGR(.{53}); |
| 106 | | pub const ResetFrameEnci = csi.SGR(.{54}); |
| 107 | | pub const ResetOverlined = csi.SGR(.{55}); |
| 108 | | }; |
| 109 | | |
| 110 | | pub const color = struct { |
| 111 | | pub const Color = enum(u8) { |
| 112 | | Black, |
| 113 | | Red, |
| 114 | | Green, |
| 115 | | Yellow, |
| 116 | | Blue, |
| 117 | | Magenta, |
| 118 | | Cyan, |
| 119 | | White, |
| 120 | | }; |
| 121 | | |
| 122 | | pub fn Fg(s: Color, comptime m: []const u8) []const u8 { |
| 123 | | return csi.SGR(.{30+@enumToInt(s)}) ++ m ++ style.ResetFgColor; |
| 124 | | } |
| 125 | | |
| 126 | | pub fn Bg(s: Color, comptime m: []const u8) []const u8 { |
| 127 | | return csi.SGR(.{40+@enumToInt(s)}) ++ m ++ style.ResetBgColor; |
| 128 | | } |
| 129 | | }; |
| 130 | | }; |