3 * - By John Hodge (thePowersGang)
6 * - Virtual Terminal - Common
12 #include <api_drv_video.h> // tVT_Char
13 #include <api_drv_terminal.h>
18 #define MAX_INPUT_CHARS32 64
19 #define MAX_INPUT_CHARS8 (MAX_INPUT_CHARS32*4)
20 #define DEFAULT_COLOUR (VT_COL_BLACK|(0xAAA<<16))
25 #define VT_FLAG_HIDECSR 0x01 //!< Hide the cursor
26 #define VT_FLAG_ALTBUF 0x02 //!< Alternate screen buffer
27 #define VT_FLAG_RAWIN 0x04 //!< Don't handle ^Z/^C/^V
28 #define VT_FLAG_HASFB 0x10 //!< Set if the VTerm has requested the Framebuffer
29 #define VT_FLAG_SHOWCSR 0x20 //!< Always show the text cursor
35 VT_INMODE_TEXT8, // UTF-8 Text Mode (VT100/xterm Emulation)
36 VT_INMODE_TEXT32, // UTF-32 Text Mode (Acess Native)
42 typedef struct sVTerm tVTerm;
53 int Mode; //!< Current Mode (see ::eTplTerminal_Modes)
54 int Flags; //!< Flags (see VT_FLAG_*)
58 short Width; //!< Virtual Width
59 short Height; //!< Virtual Height
60 short TextWidth; //!< Text Virtual Width
61 short TextHeight; //!< Text Virtual Height
63 Uint32 CurColour; //!< Current Text Colour
65 size_t ViewTopRow; //!< View Buffer Offset (Text Only)
66 tVT_Pos WritePos; //!< Write Buffer Offset (Text Only)
69 tVT_Pos AltWritePos; //!< Alternate write position
70 tVT_Char *AltBuf; //!< Alternate Screen Buffer
71 short ScrollTop; //!< Top of scrolling region (smallest)
72 short ScrollHeight; //!< Length of scrolling region
73 tVT_Pos SavedWritePos; //!< Saved cursor position (\e[s and \e[u)
75 char EscapeCodeCache[16];
81 Uint32 RawScancode; //!< last raw scancode recieved
85 // TODO: Do I need to keep this about?
86 // When should it be deallocated? on move to text mode, or some other time
87 // Call set again, it's freed, and if NULL it doesn't get reallocated.
88 tVideo_IOCtl_Bitmap *VideoCursor;
108 extern tVTerm *gpVT_CurTerm;
109 extern int giVT_Scrollback;
110 extern short giVT_RealWidth; //!< Screen Width
111 extern short giVT_RealHeight; //!< Screen Width
112 extern char *gsVT_OutputDevice;
113 extern char *gsVT_InputDevice;
114 extern int giVT_OutputDevHandle;
115 extern int giVT_InputDevHandle;
118 extern void VT_SetResolution(int Width, int Height);
119 extern void VT_SetTerminal(int ID);
120 extern void VT_int_Handle2DCmd(void *Handle, size_t Length, const void *Data);
122 extern void VT_InitOutput(void);
123 extern void VT_SetMode(int Mode);
124 extern void VT_int_ScrollFramebuffer( tVTerm *Term, int Count );
125 extern void VT_int_UpdateCursor( tVTerm *Term, int bShow );
126 extern void VT_int_UpdateScreen( tVTerm *Term, int UpdateAll );
128 extern void VT_InitInput(void);
129 extern void VT_KBCallBack(Uint32 Codepoint);
130 // --- VT100 Emulation ---
131 extern void VT_int_ParseEscape_StandardLarge(tVTerm *Term, char CmdChar, int argc, int *args);
132 extern int VT_int_ParseEscape(tVTerm *Term, const char *Buffer, size_t Bytes);
133 // --- Terminal Buffer ---
134 extern void VT_int_PutString(tVTerm *Term, const Uint8 *Buffer, Uint Count);
135 extern void VT_int_PutRawString(tVTerm *Term, const Uint8 *String, size_t Bytes);
136 extern void VT_int_PutChar(tVTerm *Term, Uint32 Ch);
137 extern void VT_int_ScrollText(tVTerm *Term, int Count);
138 extern void VT_int_ClearLine(tVTerm *Term, int Num);
139 extern void VT_int_ClearInLine(tVTerm *Term, int Row, int FirstCol, int LastCol);
140 extern void VT_int_Resize(tVTerm *Term, int NewWidth, int NewHeight);
141 extern void VT_int_ToggleAltBuffer(tVTerm *Term, int Enabled);
142 extern void VT_int_PutFBData(tVTerm *Term, size_t Offset, size_t Length, const void *Buffer);
144 extern tVT_Pos *VT_int_GetWritePosPtr(tVTerm *Term);
145 extern size_t VT_int_GetBufferRows(tVTerm *Term);