typedef struct sVTerm tVTerm;
// === STRUCTURES ===
+typedef struct
+{
+ unsigned short Row;
+ unsigned short Col;
+} tVT_Pos;
+
struct sVTerm
{
int Mode; //!< Current Mode (see ::eTplTerminal_Modes)
int Flags; //!< Flags (see VT_FLAG_*)
+
+ void *VT100Info;
short Width; //!< Virtual Width
short Height; //!< Virtual Height
Uint32 CurColour; //!< Current Text Colour
- int ViewPos; //!< View Buffer Offset (Text Only)
- int WritePos; //!< Write Buffer Offset (Text Only)
+ size_t ViewTopRow; //!< View Buffer Offset (Text Only)
+ tVT_Pos WritePos; //!< Write Buffer Offset (Text Only)
tVT_Char *Text;
+ tVT_Pos AltWritePos; //!< Alternate write position
tVT_Char *AltBuf; //!< Alternate Screen Buffer
- int AltWritePos; //!< Alternate write position
short ScrollTop; //!< Top of scrolling region (smallest)
short ScrollHeight; //!< Length of scrolling region
+ tVT_Pos SavedWritePos; //!< Saved cursor position (\e[s and \e[u)
char EscapeCodeCache[16];
size_t EscapeCodeLen;
extern int VT_int_ParseEscape(tVTerm *Term, const char *Buffer, size_t Bytes);
// --- Terminal Buffer ---
extern void VT_int_PutString(tVTerm *Term, const Uint8 *Buffer, Uint Count);
+extern void VT_int_PutRawString(tVTerm *Term, const Uint8 *String, size_t Bytes);
extern void VT_int_PutChar(tVTerm *Term, Uint32 Ch);
extern void VT_int_ScrollText(tVTerm *Term, int Count);
extern void VT_int_ClearLine(tVTerm *Term, int Num);
+extern void VT_int_ClearInLine(tVTerm *Term, int Row, int FirstCol, int LastCol);
extern void VT_int_Resize(tVTerm *Term, int NewWidth, int NewHeight);
extern void VT_int_ToggleAltBuffer(tVTerm *Term, int Enabled);
+extern tVT_Pos *VT_int_GetWritePosPtr(tVTerm *Term);
+extern size_t VT_int_GetBufferRows(tVTerm *Term);
+
#endif