/* Copyright (C) 2019 C. McEnroe * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include #include #define MIN(a, b) ((a) < (b) ? (a) : (b)) typedef unsigned uint; enum Attr { Bold = 1 << 0, Dim = 1 << 1, Italic = 1 << 2, Underline = 1 << 3, Blink = 1 << 4, Reverse = 1 << 5, }; struct Style { enum Attr attr; int bg, fg; }; struct Cell { struct Style style; wchar_t ch; }; struct Display { bool cursor; uint rows, cols; uint y, x; const struct Cell *cells; }; void termInit(uint rows, uint cols); void termUpdate(wchar_t ch); int termSnapshot(int fd); struct Display termDisplay(void);