From 2f889add9b27b915d8ac2d273f44f0c42087ffa0 Mon Sep 17 00:00:00 2001 From: hkc Date: Thu, 18 Jan 2024 12:18:05 +0300 Subject: [PATCH] BigTerm smoke test 1: enough to show CCPI --- bigterm-hello.lua | 99 +++++++++++++++++++++ bigterm.lua | 217 ++++++++++++++++++++++++++++++++++++++++++++++ casey.cpi | Bin 0 -> 30295 bytes cute.cpi | Bin 0 -> 30295 bytes rando.cpi | Bin 0 -> 30295 bytes 5 files changed, 316 insertions(+) create mode 100644 bigterm-hello.lua create mode 100644 bigterm.lua create mode 100644 casey.cpi create mode 100644 cute.cpi create mode 100644 rando.cpi diff --git a/bigterm-hello.lua b/bigterm-hello.lua new file mode 100644 index 0000000..5adb156 --- /dev/null +++ b/bigterm-hello.lua @@ -0,0 +1,99 @@ +local bigterm = require("bigterm")({ + { p = peripheral.wrap("monitor_1"), x = 1, y = 1 }, + { p = peripheral.wrap("monitor_2"), x = 2, y = 1 }, + { p = peripheral.wrap("monitor_3"), x = 1, y = 2 }, + { p = peripheral.wrap("monitor_4"), x = 2, y = 2 }, + { p = peripheral.wrap("monitor_5"), x = 1, y = 3 }, + { p = peripheral.wrap("monitor_6"), x = 2, y = 3 }, +}, { + palette = { + [colors.white] = 0xEFEFEF, + [colors.orange] = 0xEF712A, + [colors.magenta] = 0xCF43EA, + [colors.lightBlue] = 0x5643EF, + [colors.yellow] = 0xEFCF42, + [colors.lime] = 0x43FA99, + [colors.pink] = 0xEF7192, + [colors.gray] = 0x676767, + [colors.lightGray] = 0xAAAAAA, + [colors.cyan] = 0x42DFFA, + [colors.blue] = 0x7853FF, + [colors.brown] = 0xb18624, + [colors.green] = 0x00FF00, + [colors.red] = 0xFF0000, + [colors.black] = 0x000000 + }, + scale = 0.5 +}) + +bigterm._forEachMonitor(function(mon, i) + print(mon.x, mon.y, mon.p.getSize()) +end) + +--bigterm._blitpixel(1, 21, "A") + +local w, h = bigterm.getSize() +print(w, h) + +--for y = 1, h do +-- for x = 1, w do +-- bigterm._blitpixel( +-- x, +-- y, +-- string.char((x + y * 16 - 16) % 256), +-- string.format("%x", (x - y) % 16), +-- string.format("%x", (x + y) % 16) +-- ) +-- end +--end + +bigterm.setTextColor(colors.white) +bigterm.setBackgroundColor(colors.black) + +bigterm.clear() + +if false then + local lines = require("cc.strings").wrap(io.lines("cc-stuff/beemovie.txt")(), w) + for i, line in ipairs(lines) do + bigterm.setCursorPos(1, i) + bigterm.setTextColor(2 ^ (i % 2)) + bigterm.write(line) + if i == h then break end + end +end + +for t = 0, 31 do + for y = 1, h do + local res = {} + for x = 0, w do + table.insert(res, string.format("%x", bit.bxor(x, y * t + 1) % 16)) + end + res = table.concat(res) + bigterm.setCursorPos(1, y) + bigterm.blit(res, res, string.rep("f", #res)) + end + os.sleep(0.05) +end + +local ccpi = require("ccpi") +local img = ccpi.load("cc-stuff/cute.cpi") + +local ys = {} +for y = 1, img.h do table.insert(ys, y) end + +for i = 1, #ys do + local a, b = math.random(1, #ys), math.random(1, #ys) + ys[a], ys[b] = ys[b], ys[a] +end + +for i, y in ipairs(ys) do + bigterm.setCursorPos(1, y) + bigterm.blit(img.lines[y].s, img.lines[y].fg, img.lines[y].bg) + os.sleep(0.05) +end + +for i = 1, 16 do + bigterm.setPaletteColor(bit.blshift(1, i - 1), img.palette[i]) + os.sleep(0.10) +end + diff --git a/bigterm.lua b/bigterm.lua new file mode 100644 index 0000000..6ec0fb1 --- /dev/null +++ b/bigterm.lua @@ -0,0 +1,217 @@ +local expect = require("cc.expect").expect +local function todo() error("todo!") end +local pretty = require "cc.pretty" + +local BigTerm = { + write = function(self, text) + local w = self.getSize() + for i = 1, #text do + if self._pos.x <= w then + self._blitpixel( + self._pos.x, + self._pos.y, + text:sub(i, i), + self._colorChar(self._colorForeground), + self._colorChar(self._colorBackground) + ) + self._pos.x = self._pos.x + 1 + end + end + end, + blit = function(self, text, foreground, background) + local x, y = self._pos.x, self._pos.y + local w = #text + local LIMIT = 0 + local ox = 1 + while w > 0 and LIMIT < 20 do + local mon, i, lx, ly = self._getMonitorForScreenPos(x, y) + if not mon then break end + local remaining = mon._w - lx + mon.p.setCursorPos(lx + 1, ly + 1) + mon.p.blit( + text:sub(ox, ox + w), + foreground:sub(ox, ox + w - 1), + background:sub(ox, ox + w - 1) + ) + w = w - remaining + x = x + remaining + ox = ox + remaining + end + end, + clear = function(self) + self._forEachMonitor(function(mon) + mon.p.clear() + end) + end, + clearLine = function(self) todo() end, + scroll = function(self, n) + -- TODO: NOPE! store framebuffer and write lines onto other screens + self._forEachMonitor(function(mon) + mon.p.scroll(n) + end) + end, + + getCursorPos = function(self) return self._pos.x, self._pos.y end, + setCursorPos = function(self, x, y) + self._pos.x = x + self._pos.y = y + -- TODO: move cursor to the correct monitor and hide it from others + end, + + setCursorBlink = function(self, state) todo() end, + getCursorBlink = function(self) todo() end, + + isColor = function(self) return true end, + getSize = function(self) + local w, h = 0, 0 + for ix = 1, self._w do + local mon = self._findMonitor(ix, 1) + w = w + mon._w + end + for iy = 1, self._h do + local mon = self._findMonitor(1, iy) + h = h + mon._h + end + return w, h + end, + + setTextColor = function(self, fg) + self._forEachMonitor(function(mon) + mon.p.setTextColor(fg) + end) + self._colorForeground = fg + end, + getTextColor = function(self) todo() end, + + setBackgroundColor = function(self, bg) + self._forEachMonitor(function(mon) + mon.p.setBackgroundColor(bg) + end) + self._colorBackground = bg + end, + getBackgroundColor = function(self) todo() end, + + setTextScale = function(self, scale) + self._scale = scale + self._reset() + end, + getTextScale = function(self) + return self._scale + end, + + setPaletteColor = function(self, index, color, g, b) + expect(1, index, "number") + expect(2, color, "number") + expect(3, g, "number", "nil") + expect(4, b, "number", "nil") + if index < 0 or index > 32768 or math.log(index, 2) % 1 ~= 0 then + error("index out of range") + end + + local r = color + if g == nil or b == nil then + if color < 0 or color > 0xFFFFFF then + error("color out of range") + end + r = bit.band(0xFF, bit.brshift(color, 16)) / 255 + g = bit.band(0xFF, bit.brshift(color, 8)) / 255 + b = bit.band(0xFF, bit.brshift(color, 0)) / 255 + else + if r < 0 or r > 1.0 then error("red channel out of range") end + if g < 0 or g > 1.0 then error("green channel out of range") end + if b < 0 or b > 1.0 then error("blue channel out of range") end + end + + self._palette[index] = bit.bor( + bit.blshift(math.floor(r * 255), 16), + bit.blshift(math.floor(g * 255), 8), + bit.blshift(math.floor(b * 255), 0) + ) + self._forEachMonitor(function(mon) + mon.p.setPaletteColor(index, r, g, b) + end) + end, + getPaletteColor = function(self, index) todo() end, + + -- internals + + _colorChar = function(self, v) + return string.format("%x", math.floor(math.log(v, 2))) + end, + + _reset = function(self) + self._w = 1 + self._h = 1 + self._forEachMonitor(function(mon, i) + mon.p.setTextScale(self._scale) + local w, h = mon.p.getSize() + self._monitors[i]._w = w + self._monitors[i]._h = h + if mon.x > self._w then self._w = mon.x end + if mon.y > self._h then self._h = mon.y end + for id, color in pairs(self._palette) do + mon.p.setPaletteColor(id, color) + end + end) + end, + + _blitpixel = function(self, x, y, c, bg, fg) + bg = bg or "0" + fg = fg or "f" + local mon = self._getMonitorForScreenPos(x, y) + mon.p.setCursorPos(((x - 1) % mon._w) + 1, ((y - 1) % mon._h) + 1) + mon.p.blit(c, bg, fg) + end, + + _findMonitor = function(self, x, y) + for i = 1, #self._monitors do + local mon = self._monitors[i] + if mon.x == x and mon.y == y then + return mon, i + end + end + end, + + _getMonitorForScreenPos = function(self, x, y) + local oy = 1 + for iy = 1, self._h do + local ox = 1 + for ix = 1, self._w do + local mon, i = self._findMonitor(ix, iy) + if x >= ox and x < (ox + mon._w) and y >= oy and y < (oy + mon._h) then + return mon, i, x - ox, y - oy + end + ox = ox + mon._w + end + local mon, i = self._findMonitor(1, iy) + oy = oy + mon._h + end + end, + + _forEachMonitor = function(self, fun) + for i = 1, #self._monitors do + fun(self._monitors[i], i) + end + end, + +} + +return function(monitors, args) + args = args or {} + local mon = setmetatable({ + _monitors = monitors, + _pos = { x = 1, y = 1 }, + _blink = false, + _colorForeground = colors.white, + _colorBackground = colors.black, + _scale = args.scale or 1.0, + _palette = args.palette or {}, + }, { __index = BigTerm }) + for name, method in pairs(BigTerm) do + if type(method) == "function" then + mon[name] = function(...) return method(mon, ...) end + end + end + mon._reset() + return mon +end diff --git a/casey.cpi b/casey.cpi new file mode 100644 index 0000000000000000000000000000000000000000..04ec1ada5bdf216601f93ec037b9e2bae783ae11 GIT binary patch literal 30295 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 literal 0 HcmV?d00001 diff --git a/cute.cpi b/cute.cpi new file mode 100644 index 0000000000000000000000000000000000000000..64a1c185798442672a66cb705a74d46e3887664c GIT binary patch literal 30295 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 literal 0 HcmV?d00001