#ifndef DEF_UI_VT_H #define DEF_UI_VT_H #include #include struct vt_char { int ch; uint8_t fgcolor, bgcolor; }; class vt : public node { private: display *output; int w, h, csr_l, csr_c; vt_char *text; void put_at(int l, int c, int ch); bool cursor_visible; public: uint8_t fgcolor, bgcolor; vt(node* parent, int w, int h); // internal use void put(int c); void clear(); void writeStr(char* str); void writeHex(uint32_t v); void writeDec(int v); // shortcuts vt& operator<< (char* str) { writeStr(str); return *this; } vt& operator<< (uint32_t t) { writeHex(t); return *this; } vt& operator<< (int i) { writeDec(i); return *this; } int outputTo(display *display); virtual int write(size_t offset, size_t len, char* buffer); virtual size_t get_size(); }; extern vt *ke_vt; #define NL ke_vt->writeStr("\n"); #define TAB ke_vt->writeStr("\t"); #define WHERE { ke_vt->writeStr("(ke:"); \ ke_vt->writeStr(__FILE__); \ ke_vt->writeStr(":"); \ ke_vt->writeDec(__LINE__); \ ke_vt->writeStr(") "); } #endif