ReactOS  0.4.14-dev-98-gb0d4763
TANSIParser Class Reference

#include <ansiprsr.h>

Inheritance diagram for TANSIParser:
Collaboration diagram for TANSIParser:

Public Member Functions

 TANSIParser (TConsole &Console, KeyTranslator &RefKeyTrans, TScroller &RefScroller, TNetwork &NetHandler, TCharmap &RefCharmap)
 
 ~TANSIParser ()
 
charParseBuffer (char *pszBuffer, char *pszBufferEnd)
 
- Public Member Functions inherited from TParser
 TParser (TConsole &RefConsole, KeyTranslator &RefKeyTrans, TScroller &RefScroller, TNetwork &RefNetwork, TCharmap &RefCharmap)
 
virtual ~TParser ()
 

Static Public Member Functions

static int StripBuffer (char *pszBuffer, char *pszBufferEnd, int width)
 

Private Member Functions

charParseEscapeANSI (char *pszBuffer, char *pszBufferEnd)
 
charParseANSIBuffer (char *pszBuffer, char *pszBufferEnd)
 
charParseEscape (char *pszBuffer, char *pszBufferEnd)
 
charPrintBuffer (char *pszBuffer, char *pszBufferEnd)
 
charPrintGoodChars (char *pszHead, char *pszTail)
 
charParseEscapeMTE (char *pszBuffer, char *pszBufferEnd)
 
void ConSetAttribute (unsigned char wAttr)
 
const charGetTerminalID ()
 
void ConSetCursorPos (int x, int y)
 
void ResetTerminal ()
 
void Init ()
 
void SaveCurX (int iX)
 
void SaveCurY (int iY)
 
void resetTabStops ()
 

Private Attributes

short int mteRegionXF
 
short int mteRegionYF
 
int iSavedCurX
 
int iSavedCurY
 
unsigned char iSavedAttributes
 
FILEdumpfile
 
FILEprintfile
 
char InPrintMode
 
int inGraphMode
 
char last_char
 
char map_G0
 
char map_G1
 
int current_map
 
bool vt52_mode
 
bool print_ctrl
 
bool ignore_margins
 
bool fast_write
 
bool newline_mode
 
int tab_stops [MAX_TAB_POSITIONS]
 

Additional Inherited Members

- Protected Attributes inherited from TParser
TConsoleConsole
 
KeyTranslatorKeyTrans
 
TScrollerScroller
 
TNetworkNetwork
 
TCharmapCharmap
 

Detailed Description

Definition at line 19 of file ansiprsr.h.

Constructor & Destructor Documentation

◆ TANSIParser()

TANSIParser::TANSIParser ( TConsole Console,
KeyTranslator RefKeyTrans,
TScroller RefScroller,
TNetwork NetHandler,
TCharmap RefCharmap 
)

Definition at line 58 of file ansiprsr.cpp.

60  :
61 TParser(RefConsole, RefKeyTrans, RefScroller, RefNetwork, RefCharmap) {
62  Init();
63  iSavedAttributes = (unsigned char) 7;
64  // must also check to make sure the string is non-NULL
65  // (Paul Brannan 5/8/98)
66  if ((ini.get_dumpfile() != NULL) && (*ini.get_dumpfile() != '\0')){
67  dumpfile = fopen(ini.get_dumpfile(), "wb");
68  }else {
69  dumpfile = NULL;
70  }
71  InPrintMode = 0;
72  printfile = NULL;
73 
74  fast_write = ini.get_fast_write(); // Paul Brannan 6/28/98
76 }
unsigned char iSavedAttributes
Definition: ansiprsr.h:47
static int StripBuffer(char *pszBuffer, char *pszBufferEnd, int width)
Definition: ansiprsr.cpp:1164
TParser(TConsole &RefConsole, KeyTranslator &RefKeyTrans, TScroller &RefScroller, TNetwork &RefNetwork, TCharmap &RefCharmap)
Definition: tparser.h:23
bool fast_write
Definition: ansiprsr.h:62
void init(stripfunc *s)
Definition: tscroll.cpp:72
void Init()
Definition: ansiprsr.cpp:86
TScroller & Scroller
Definition: tparser.h:43
FILE * printfile
Definition: ansiprsr.h:51
smooth NULL
Definition: ftsmooth.c:416
unsigned char
Definition: typeof.h:29
const char * get_dumpfile() const
Definition: tnconfig.h:36
TConfig ini
Definition: tnconfig.cpp:45
char InPrintMode
Definition: ansiprsr.h:52
_Check_return_ _CRTIMP FILE *__cdecl fopen(_In_z_ const char *_Filename, _In_z_ const char *_Mode)
FILE * dumpfile
Definition: ansiprsr.h:48
bool get_fast_write() const
Definition: tnconfig.h:53

◆ ~TANSIParser()

TANSIParser::~TANSIParser ( )

Definition at line 78 of file ansiprsr.cpp.

78  {
79  if (dumpfile) fclose (dumpfile);
80  // Added I.Ioannou 06 April, 1997
81  if (printfile != NULL) fclose (printfile);
82 }
FILE * printfile
Definition: ansiprsr.h:51
smooth NULL
Definition: ftsmooth.c:416
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
FILE * dumpfile
Definition: ansiprsr.h:48

Member Function Documentation

◆ ConSetAttribute()

void TANSIParser::ConSetAttribute ( unsigned char  wAttr)
private

Definition at line 128 of file ansiprsr.cpp.

128  {
129  // Paul Brannan 5/8/98
130  // Made this go a little bit faster by changing from switch{} to an array
131  // for the colors
132  if(TextAttrib >= 30) {
133  if(TextAttrib <= 37) {
134  Console.SetForeground(ANSIColors[TextAttrib-30]);
135  return;
136  } else if((TextAttrib >= 40) && (TextAttrib <= 47)) {
137  Console.SetBackground(ANSIColors[TextAttrib-40]);
138  return;
139  }
140  }
141 
142  switch (TextAttrib){
143  // Text Attributes
144  case 0: Console.Normal(); break; // Normal video
145  case 1: Console.HighVideo(); break; // High video
146  case 2: Console.LowVideo(); break; // Low video
147  case 4: Console.UnderlineOn(); break; // Underline on (I.Ioannou)
148  case 5: Console.BlinkOn(); break; // Blink video
149  // Corrected by I.Ioannou 11 May, 1997
150  case 7: Console.ReverseOn(); break; // Reverse video
151  case 8: break; // hidden
152  // All from 10 thru 27 are hacked from linux kernel
153  // I.Ioannou 06 April, 1997
154  case 10:
155  // I.Ioannou 04 Sep 1997 turn on/off high bit
156  inGraphMode = 0;
157  print_ctrl = 0;
158  Charmap.setmap(current_map ? map_G1:map_G0); // Paul Brannan 6/25/98
159  break; // ANSI X3.64-1979 (SCO-ish?)
160  // Select primary font,
161  // don't display control chars
162  // if defined, don't set
163  // bit 8 on output (normal)
164  case 11:
165  inGraphMode = 0;
166  print_ctrl = 1;
167  Charmap.setmap(0); // Paul Brannan 6/25/98
168  break; // ANSI X3.64-1979 (SCO-ish?)
169  // Select first alternate font,
170  // let chars < 32 be displayed
171  // as ROM chars
172  case 12:
173  inGraphMode = 1;
174  print_ctrl = 1;
175  Charmap.setmap(0); // Paul Brannan 6/25/98
176  break; // ANSI X3.64-1979 (SCO-ish?)
177  // Select second alternate font,
178  // toggle high bit before
179  // displaying as ROM char.
180 
181  case 21: // not really Low video
182  case 22: Console.LowVideo(); break; // but this works good also
183  case 24: Console.UnderlineOff(); break; // Underline off
184  case 25: Console.BlinkOff(); break; // blink off
185  // Corrected by I.Ioannou 11 May, 1997
186  case 27: Console.ReverseOff(); break; //Reverse video off
187 
188  // Mutt needs this (Paul Brannan, Peter Jordan 12/31/98)
189  // This is from the Linux kernel source
190  case 38: /* ANSI X3.64-1979 (SCO-ish?)
191  * Enables underscore, white foreground
192  * with white underscore (Linux - use
193  * default foreground).
194  */
197  break;
198  case 39: /* ANSI X3.64-1979 (SCO-ish?)
199  * Disable underline option.
200  * Reset colour to default? It did this
201  * before...
202  */
205  break;
206  case 49:
208  break;
209 
210  }
211 }
void SetBackground(unsigned char wAttrib)
Definition: tconsole.cpp:147
TConsole & Console
Definition: tparser.h:41
void UnderlineOn()
Definition: tconsole.cpp:195
int inGraphMode
Definition: ansiprsr.h:53
void LowVideo()
Definition: tconsole.cpp:117
bool print_ctrl
Definition: ansiprsr.h:60
void Normal()
Definition: tconsole.cpp:121
char map_G0
Definition: ansiprsr.h:57
void BlinkOff()
Definition: tconsole.cpp:176
const int ANSIColors[]
Definition: ansiprsr.cpp:54
TConfig ini
Definition: tnconfig.cpp:45
char map_G1
Definition: ansiprsr.h:57
void BlinkOn()
Definition: tconsole.cpp:157
void SetForeground(unsigned char wAttrib)
Definition: tconsole.cpp:141
TCharmap & Charmap
Definition: tparser.h:45
void setmap(char mapchar)
Definition: tcharmap.h:24
void ReverseOn()
Definition: tconsole.cpp:311
int current_map
Definition: ansiprsr.h:58
int get_normal_bg() const
Definition: tnconfig.h:71
void HighVideo()
Definition: tconsole.cpp:113
void UnderlineOff()
Definition: tconsole.cpp:214
void ReverseOff()
Definition: tconsole.cpp:328
int get_normal_fg() const
Definition: tnconfig.h:72

Referenced by ParseEscapeANSI().

◆ ConSetCursorPos()

void TANSIParser::ConSetCursorPos ( int  x,
int  y 
)
private

Definition at line 213 of file ansiprsr.cpp.

213  {
214  if(ignore_margins)
216  else
218 }
TConsole & Console
Definition: tparser.h:41
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
void SetRawCursorPosition(int x, int y)
Definition: tconsole.cpp:860
void SetCursorPosition(int x, int y)
Definition: tconsole.cpp:885
bool ignore_margins
Definition: ansiprsr.h:61
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548

Referenced by ParseEscape(), and ParseEscapeANSI().

◆ GetTerminalID()

const char * TANSIParser::GetTerminalID ( )
private

Definition at line 220 of file ansiprsr.cpp.

221 {
222  return "\033[?1;2c";
223 }

Referenced by ParseEscape(), and ParseEscapeANSI().

◆ Init()

void TANSIParser::Init ( )
privatevirtual

Implements TParser.

Definition at line 86 of file ansiprsr.cpp.

86  {
87  // Paul Brannan 6/25/98
88  map_G0 = 'B'; map_G1 = 'B';
90  current_map = 'B';
91 
92  ignore_margins = 0;
93  vt52_mode = 0;
94  print_ctrl = 0;
95  newline_mode = false;
96 
98 
99  iSavedCurY = 0; // Reset Variables
100  iSavedCurX = 0;
101  inGraphMode = 0;
102  Console.SetScroll(-1, -1);
103  Console.Normal(); // Reset Attributes
104 
105  // Set tabs stops
106  resetTabStops();
107 }
int iSavedCurY
Definition: ansiprsr.h:46
bool vt52_mode
Definition: ansiprsr.h:59
TConsole & Console
Definition: tparser.h:41
void clear_ext_mode()
Definition: keytrans.h:76
int inGraphMode
Definition: ansiprsr.h:53
bool print_ctrl
Definition: ansiprsr.h:60
void Normal()
Definition: tconsole.cpp:121
char map_G0
Definition: ansiprsr.h:57
bool newline_mode
Definition: ansiprsr.h:63
KeyTranslator & KeyTrans
Definition: tparser.h:42
char map_G1
Definition: ansiprsr.h:57
bool ignore_margins
Definition: ansiprsr.h:61
TCharmap & Charmap
Definition: tparser.h:45
void setmap(char mapchar)
Definition: tcharmap.h:24
int current_map
Definition: ansiprsr.h:58
void resetTabStops()
Definition: ansiprsr.cpp:122
int iSavedCurX
Definition: ansiprsr.h:45
void SetScroll(int start, int end)
Definition: tconsole.cpp:917

Referenced by ResetTerminal(), and TANSIParser().

◆ ParseANSIBuffer()

char * TANSIParser::ParseANSIBuffer ( char pszBuffer,
char pszBufferEnd 
)
private

Definition at line 1212 of file ansiprsr.cpp.

1213 {
1214  if(InPrintMode) {
1215  return PrintBuffer(pszBuffer, pszBufferEnd);
1216  }
1217 
1218  unsigned char tmpc = *(unsigned char *)pszBuffer;
1219 
1220  if(tmpc == 27) {
1221  return ParseEscape(pszBuffer, pszBufferEnd);
1222  }
1223 
1224 // if((fast_write && tmpc < 32) ||
1225 // !print_ctrl && (tmpc < 32 || (EightBit_Ansi &&
1226 // (tmpc > 128 && tmpc < 128 + ' ')))) {
1227 
1228  // We shouldn't print ctrl characters when fast write is enabled
1229  // and ctrl chars are disabled (Paul Brannan 9/1/98)
1230  if(tmpc < 32) {
1231  // From the Linux kernel (Paul Brannan 12/5/98):
1232  /* A bitmap for codes <32. A bit of 1 indicates that the code
1233  * corresponding to that bit number invokes some special action
1234  * (such as cursor movement) and should not be displayed as a
1235  * glyph unless the disp_ctrl mode is explicitly enabled.
1236  */
1237  const long CTRL_ACTION = 0x0d00ff81;
1238  const long CTRL_ALWAYS = 0x0800f501;
1239  if(!(((print_ctrl?CTRL_ALWAYS:CTRL_ACTION)>>tmpc)&1)) {
1240 
1241  Console.WriteString((char *)&tmpc, 1);
1242  pszBuffer++;
1243  return pszBuffer;
1244  }
1245 
1246  switch (tmpc) {
1247  case 0:
1248  pszBuffer++;
1249  break;
1250 
1251  // I.Ioannou 5/30/98
1252  case 7:
1253  Console.Beep();
1254  pszBuffer++;
1255  break;
1256 
1257  // destructive backspace
1258  case 8:
1259  // Added option for destructive backspace (Paul Brannan 5/13/98)
1260  // Changed to ConWriteCtrlString so that the cursor position can be
1261  // updated (Paul Brannan 5/25/98)
1262  if(ini.get_dstrbksp()) {
1263  Console.WriteCtrlChar('\b');
1264  Console.WriteString(" ", 1);
1265  Console.WriteCtrlChar('\b');
1266  }
1267  else Console.WriteCtrlChar('\b');
1268  pszBuffer++;
1269  break;
1270 
1271  // horizontal tab
1272  case 9:
1273  {
1274  pszBuffer++;
1275  int x = Console.GetCursorX();
1276  if(x != -1)
1278  }
1279  break;
1280 
1281  // Line Feed Char
1282  case 10:
1283  // Test for local echo (Paul Brannan 8/25/98)
1284  if(Network.get_local_echo() || newline_mode) // &&
1285  Console.WriteCtrlChar('\x0d');
1286  Console.WriteCtrlChar('\x0a');
1287  pszBuffer++;
1288  break;
1289 
1290  // form feed
1291  case 12:
1292  pszBuffer++;
1293  Console.ClearScreen();
1294  Console.SetRawCursorPosition(Console.GetCursorX(), 1); // changed fm 1
1295  break;
1296 
1297  case 13:
1298  Console.WriteCtrlChar('\x0d');
1299  pszBuffer++;
1300 
1301  break;
1302 
1303  case 14: // shift out of alternate chararcter set
1304  pszBuffer++;
1305  Charmap.setmap(map_G1); // Paul Brannan 6/25/98
1306  current_map = 1;
1307  break;
1308 
1309  case 15: // shift in
1310  pszBuffer++;
1311  Charmap.setmap(map_G0); // Paul Brannan 6/25/98
1312  current_map = 0;
1313  break;
1314 
1315  // Paul Brannan 9/1/98 - Is this okay?
1316  default:
1317  pszBuffer++;
1318  }
1319 
1320  return pszBuffer;
1321  }
1322 
1323  // added by I.Ioannou 06 April, 1997
1324  // In 8 bit systems the server may send 0x9b instead of ESC[
1325  // Well, this will produce troubles in Greek 737 Code page
1326  // which uses 0x9b as the small "delta" - and I thing that there
1327  // is another European country with the same problem.
1328  // If we have to stay 8-bit clean we may have to
1329  // give the ability of ROM characters (ESC[11m),
1330  // for striped 8'th bit (ESC[12m) as SCO does,
1331  // or a parameter at compile (or run ?) time.
1332  // We now check for a flag in the ini file (Paul Brannan 5/13/98)
1333  // We also handle any 8-bit ESC sequence (Paul Brannan 6/28/98)
1334  if(ini.get_eightbit_ansi() && (tmpc > 128 && tmpc < 128 + ' ')) {
1335  // There's a chance the sequence might not parse. If this happens
1336  // then pszBuffer will be one character too far back, since
1337  // ParseEscape is expecting two characters, not one.
1338  // In that case we must handle it.
1339  char *pszCurrent = pszBuffer;
1340  pszBuffer = ParseEscape(pszBuffer, pszBufferEnd);
1341  if(pszBuffer < pszCurrent) pszBuffer = pszCurrent;
1342  }
1343 
1344  char* pszCurrent = pszBuffer + 1;
1345  // I.Ioannou 04 Sep 1997 FIXME with ESC[11m must show chars < 32
1346  // Fixed (Paul Brannan 6/28/98)
1347  while ((pszCurrent < pszBufferEnd) && (!iscntrl(*pszCurrent))) {
1348  // I.Ioannou 04 Sep 1997 strip on high bit
1349  if ( (inGraphMode) && (*pszCurrent > (char)32) )
1350  *pszCurrent |= 0x80 ;
1351  pszCurrent++;
1352  }
1353 
1354  // Note that this may break dumpfiles slightly.
1355  // If 'B' is set to anything other than ASCII, this will cause problems
1356  // (Paul Brannan 6/28/98)
1357  if(current_map != 'B' && Charmap.enabled)
1358  Charmap.translate_buffer(pszBuffer, pszCurrent);
1359 
1360  last_char = *(pszCurrent-1); // TITUS++: Remember last char
1361 
1362  if(fast_write) {
1363  pszBuffer += Console.WriteStringFast(pszBuffer,
1364  pszCurrent - pszBuffer);
1365  } else {
1366  pszBuffer += Console.WriteString(pszBuffer,
1367  pszCurrent - pszBuffer);
1368  }
1369 
1370  return pszBuffer;
1371 }
TConsole & Console
Definition: tparser.h:41
int enabled
Definition: tcharmap.h:37
void ClearScreen(char c=' ')
Definition: tconsole.cpp:689
bool fast_write
Definition: ansiprsr.h:62
void translate_buffer(char *start, char *end)
Definition: tcharmap.h:28
int inGraphMode
Definition: ansiprsr.h:53
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
void SetRawCursorPosition(int x, int y)
Definition: tconsole.cpp:860
bool print_ctrl
Definition: ansiprsr.h:60
bool get_eightbit_ansi() const
Definition: tnconfig.h:46
unsigned long WriteString(const char *pszString, unsigned long cbString)
Definition: tconsole.cpp:473
char map_G0
Definition: ansiprsr.h:57
BOOL get_local_echo()
Definition: tnetwork.h:40
bool newline_mode
Definition: ansiprsr.h:63
TConfig ini
Definition: tnconfig.cpp:45
void SetCursorPosition(int x, int y)
Definition: tconsole.cpp:885
int GetCursorY()
Definition: tconsole.h:70
unsigned long WriteStringFast(const char *pszString, unsigned long cbString)
Definition: tconsole.cpp:350
char map_G1
Definition: ansiprsr.h:57
TCharmap & Charmap
Definition: tparser.h:45
char InPrintMode
Definition: ansiprsr.h:52
char * PrintBuffer(char *pszBuffer, char *pszBufferEnd)
Definition: ansiprsr.cpp:1375
void setmap(char mapchar)
Definition: tcharmap.h:24
int current_map
Definition: ansiprsr.h:58
TNetwork & Network
Definition: tparser.h:44
unsigned long WriteCtrlChar(char c)
Definition: tconsole.cpp:557
char * ParseEscape(char *pszBuffer, char *pszBufferEnd)
Definition: ansiprsr.cpp:916
_Check_return_ _CRTIMP int __cdecl iscntrl(_In_ int _C)
bool get_dstrbksp() const
Definition: tnconfig.h:45
char last_char
Definition: ansiprsr.h:55
int GetCursorX()
Definition: tconsole.h:69
int tab_stops[MAX_TAB_POSITIONS]
Definition: ansiprsr.h:65
void Beep()
Definition: tconsole.cpp:922

Referenced by ParseBuffer().

◆ ParseBuffer()

char * TANSIParser::ParseBuffer ( char pszBuffer,
char pszBufferEnd 
)
virtual

Implements TParser.

Definition at line 1127 of file ansiprsr.cpp.

1127  {
1128  // copy into ANSI buffer
1129  char * pszResult;
1130 
1131  // Parse the buffer for ANSI or display
1132  while (pszHead < pszTail) {
1133  if(!ini.get_output_redir()) {
1134  pszResult = ParseANSIBuffer(pszHead, pszTail);
1135  } else {
1136  // Output is being redirected
1137  if(ini.get_strip_redir()) {
1138  // Skip the WriteFile() altogether and pass the buffer to a filter
1139  // Mark Miesfield 09/24/2000
1140  pszResult = PrintGoodChars(pszHead, pszTail);
1141  } else {
1142  DWORD Result;
1143  // Paul Brannan 7/29/98
1144  // Note that this has the unforunate effect of printing out
1145  // NULL (ascii 0) characters onto the screen
1146  if (!WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), pszHead,
1147  pszTail - pszHead, &Result, NULL)) pszResult = pszHead;
1148  pszResult = pszHead + Result;
1149  }
1150  }
1151  if (dumpfile)
1152  fwrite( pszHead, sizeof (char), pszResult-pszHead, dumpfile);
1153  if(ini.get_scroll_enable()) Scroller.update(pszHead, pszResult);
1154  if (pszResult == pszHead) break;
1155  pszHead = pszResult;
1156  }
1157  // return the new head to the buffer
1158  return pszHead;
1159 }
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
Definition: rw.c:24
HANDLE WINAPI GetStdHandle(IN DWORD nStdHandle)
Definition: console.c:152
TScroller & Scroller
Definition: tparser.h:43
_Check_return_opt_ _CRTIMP size_t __cdecl fwrite(_In_reads_bytes_(_Size *_Count) const void *_Str, _In_ size_t _Size, _In_ size_t _Count, _Inout_ FILE *_File)
bool get_scroll_enable() const
Definition: tnconfig.h:90
smooth NULL
Definition: ftsmooth.c:416
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:426
char * PrintGoodChars(char *pszHead, char *pszTail)
Definition: ansiprsr.cpp:1431
TConfig ini
Definition: tnconfig.cpp:45
bool get_strip_redir() const
Definition: tnconfig.h:44
unsigned long DWORD
Definition: ntddk_ex.h:95
char * ParseANSIBuffer(char *pszBuffer, char *pszBufferEnd)
Definition: ansiprsr.cpp:1212
#define STD_OUTPUT_HANDLE
Definition: winbase.h:265
FILE * dumpfile
Definition: ansiprsr.h:48
int get_output_redir() const
Definition: tnconfig.h:43
void update(const char *pszBegin, const char *pszEnd)
Definition: tscroll.cpp:78

◆ ParseEscape()

char * TANSIParser::ParseEscape ( char pszBuffer,
char pszBufferEnd 
)
private

Definition at line 916 of file ansiprsr.cpp.

916  {
917  char *pszChar;
918 
919  // Check if we have enough characters in buffer.
920  if ((pszBufferEnd - pszBuffer) < 2)
921  return pszBuffer;
922 
923  // I.Ioannou 04 Sep 1997
924  // there is no need for pszBuffer++; after each command
925 
926  // Decode the command.
927  pszBuffer++;
928 
929  switch (*pszBuffer++) {
930  case 'A': // Cursor up
932  break;
933  // Cursor down
934  case 'B':
936  break;
937  // Cursor right
938  case 'C':
940  break;
941  // LF *or* cursor left (Paul Brannan 6/27/98)
942  case 'D':
943  if(vt52_mode)
945  else
946  Console.index();
947  break;
948  // CR/LF (Paul Brannan 6/26/98)
949  case 'E':
950  Console.WriteCtrlString("\r\n", 2);
951  break;
952  // Special graphics char set (Paul Brannan 6/27/98)
953  case 'F':
954  Charmap.setmap('0');
955  break;
956  // ASCII char set (Paul Brannan 6/27/98)
957  case 'G':
958  Charmap.setmap('B');
959  break;
960  // Home cursor/tab set
961  case 'H':
962  if(ini.get_vt100_mode()) {
963  int x = Console.GetCursorX();
964  if(x != 0) {
965  int t = tab_stops[x - 1];
966  for(int j = x - 1; j >= 0 && tab_stops[j] == t; j--)
967  tab_stops[j] = x;
968  }
969  } else {
970  // I.Ioannou 04 Sep 1997 (0,0) not (1,1)
971  ConSetCursorPos(0, 0);
972  }
973  break;
974  // Reverse line feed (Paul Brannan 6/27/98)
975  // FIX ME!!! reverse_index is wrong to be calling here
976  // (Paul Brannan 12/2/98)
977  case 'I':
979  break;
980  // Erase end of screen
981  case 'J':
983  break;
984  // Erase EOL
985  case 'K':
987  break;
988  // Scroll Up one line //Reverse index
989  case 'M':
991  break;
992  // Direct cursor addressing
993  case 'Y':
994  if ((pszBufferEnd - pszBuffer) >= 2){
995  // if we subtract '\x1F', then we may end up with a negative
996  // cursor position! (Paul Brannan 6/26/98)
997  ConSetCursorPos(pszBuffer[1] - ' ', pszBuffer[0] - ' ');
998  pszBuffer+=2;
999  } else {
1000  pszBuffer--; // Paul Brannan 6/26/98
1001  }
1002  break;
1003  // Terminal ID Request
1004  case 'Z':
1005  {
1006  const char* szTerminalId = GetTerminalID();
1007  Network.WriteString(szTerminalId, strlen(szTerminalId));
1008  break;
1009  }
1010  // reset terminal to defaults
1011  case 'c':
1012  ResetTerminal();
1013  break;
1014  // Enter alternate keypad mode
1015  case '=':
1017  break;
1018  // Exit alternate keypad mode
1019  case '>':
1021  break;
1022  // Enter ANSI mode
1023  case '<':
1024  KeyTrans.unset_ext_mode(APP2_KEY); // exit vt52 mode
1025  break;
1026  // Graphics processor on (See note 3)
1027  case '1':
1028  break;
1029  // Line size commands
1030  case '#': //Line size commands
1031  // (Paul Brannan 6/26/98)
1032  if(pszBuffer < pszBufferEnd) {
1033  switch(*pszBuffer++) {
1034  case '3': break; // top half of a double-height line
1035  case '4': break; // bottom half of a double-height line
1036  case '6': break; // current line becomes double-width
1037  case '8': Console.ClearScreen('E'); break;
1038  }
1039  } else {
1040  pszBuffer--;
1041  }
1042  break;
1043  // Graphics processor off (See note 3)
1044  case '2':
1045  break;
1046  // Save cursor and attribs
1047  case '7':
1051  break;
1052  // Restore cursor position and attribs
1053  case '8':
1056  break;
1057  // Set G0 map (Paul Brannan 6/25/98)
1058  case '(':
1059  if (pszBuffer < pszBufferEnd) {
1060  map_G0 = *pszBuffer;
1061  if(current_map == 0) Charmap.setmap(map_G0);
1062  pszBuffer++;
1063  } else {
1064  pszBuffer--;
1065  }
1066  break;
1067  // Set G1 map (Paul Brannan 6/25/98)
1068  case ')':
1069  if (pszBuffer < pszBufferEnd) {
1070  map_G1 = *pszBuffer;
1071  if(current_map == 1) Charmap.setmap(map_G1);
1072  pszBuffer++;
1073  } else {
1074  pszBuffer--;
1075  }
1076  break;
1077  // This doesn't do anything, as far as I can tell, but it does take
1078  // a parameter (Paul Brannan 6/27/98)
1079  case '%':
1080  if (pszBuffer < pszBufferEnd) {
1081  pszBuffer++;
1082  } else {
1083  pszBuffer--;
1084  }
1085  break;
1086  // ANSI escape sequence
1087  case '[':
1088  // Check if we have whole escape sequence in buffer.
1089  // This should not be isalpha anymore (Paul Brannan 9/1/98)
1090  pszChar = pszBuffer;
1091  while ((pszChar < pszBufferEnd) && (*pszChar <= '?'))
1092  pszChar++;
1093  if (pszChar == pszBufferEnd)
1094  pszBuffer -= 2;
1095  else
1096  pszBuffer = ParseEscapeANSI(pszBuffer, pszBufferEnd);
1097  break;
1098 #ifdef MTE_SUPPORT
1099  case '~':
1100  // Frediano Ziglio, 5/31/2000
1101  // Meridian Terminal Emulator extension
1102  // !!! same as ANSI
1103  // !!! should put in MTE procedure
1104  pszChar = pszBuffer;
1105  while ((pszChar < pszBufferEnd) && (*pszChar <= '?'))
1106  pszChar++;
1107  if (pszChar == pszBufferEnd)
1108  pszBuffer -= 2;
1109  else
1110  pszBuffer = ParseEscapeMTE(pszBuffer, pszBufferEnd);
1111  break;
1112 #endif
1113  default:
1114 #ifdef DEBUG
1115  Console.Beep();
1116 #endif
1117  break;
1118  }
1119 
1120  return pszBuffer;
1121 }
void SaveCurY(int iY)
Definition: ansiprsr.cpp:114
int iSavedCurY
Definition: ansiprsr.h:46
bool vt52_mode
Definition: ansiprsr.h:59
TConsole & Console
Definition: tparser.h:41
unsigned char iSavedAttributes
Definition: ansiprsr.h:47
void ClearScreen(char c=' ')
Definition: tconsole.cpp:689
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
char * ParseEscapeMTE(char *pszBuffer, char *pszBufferEnd)
void set_ext_mode(DWORD mode)
Definition: keytrans.h:74
void ConSetCursorPos(int x, int y)
Definition: ansiprsr.cpp:213
GLdouble GLdouble t
Definition: gl.h:2047
unsigned long WriteCtrlString(const char *pszString, unsigned long cbString)
Definition: tconsole.cpp:542
void ClearEOLine(char c=' ')
Definition: tconsole.cpp:743
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
void SetRawCursorPosition(int x, int y)
Definition: tconsole.cpp:860
void index()
Definition: tconsole.cpp:589
bool get_vt100_mode() const
Definition: tnconfig.h:47
char map_G0
Definition: ansiprsr.h:57
unsigned char GetAttrib()
Definition: tconsole.h:89
#define APP3_KEY
Definition: keytrans.h:39
int GetRawCursorX()
Definition: tconsole.h:67
const char * GetTerminalID()
Definition: ansiprsr.cpp:220
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
KeyTranslator & KeyTrans
Definition: tparser.h:42
TConfig ini
Definition: tnconfig.cpp:45
int WriteString(const char *str, const int length)
Definition: tnetwork.cpp:53
void MoveCursorPosition(int x, int y)
Definition: tconsole.cpp:907
#define APP2_KEY
Definition: keytrans.h:40
char map_G1
Definition: ansiprsr.h:57
TCharmap & Charmap
Definition: tparser.h:45
void setmap(char mapchar)
Definition: tcharmap.h:24
void SaveCurX(int iX)
Definition: ansiprsr.cpp:118
void ClearEOScreen(char c=' ')
Definition: tconsole.cpp:709
int current_map
Definition: ansiprsr.h:58
TNetwork & Network
Definition: tparser.h:44
void SetAttrib(unsigned char wAttr)
Definition: tconsole.h:88
void unset_ext_mode(DWORD mode)
Definition: keytrans.h:75
int iSavedCurX
Definition: ansiprsr.h:45
int GetCursorX()
Definition: tconsole.h:69
void ResetTerminal()
Definition: ansiprsr.cpp:109
int tab_stops[MAX_TAB_POSITIONS]
Definition: ansiprsr.h:65
int GetRawCursorY()
Definition: tconsole.h:68
void reverse_index()
Definition: tconsole.cpp:613
char * ParseEscapeANSI(char *pszBuffer, char *pszBufferEnd)
Definition: ansiprsr.cpp:246
void Beep()
Definition: tconsole.cpp:922

Referenced by ParseANSIBuffer().

◆ ParseEscapeANSI()

char * TANSIParser::ParseEscapeANSI ( char pszBuffer,
char pszBufferEnd 
)
private

Definition at line 246 of file ansiprsr.cpp.

247 {
248 
249  // The buffer contains something like <ESC>[pA
250  // where p is an optional decimal number specifying the count by which the
251  // appropriate action should take place.
252  // The pointer pszBuffer points us to the p, <ESC> and [ are
253  // already 'consumed'
254 
255  // TITUS: Simplification of the code: Assume default count of 1 in case
256  // there are no parameters.
257  char tmpc;
258  const int nParam = 10; // Maximum number of parameters
259  int iParam[nParam] = {1, 0, 0, 0, 0}; // Assume 1 Parameter, Default 1
260  int iCurrentParam = 0;
261  DWORD flag = 0;
262  int missing_param = 0;
263 
264  // Get parameters from escape sequence.
265  while ((tmpc = *pszBuffer) <= '?') {
266 
267  if(tmpc < '0' || tmpc > '9') {
268  // Check for parameter delimiter.
269  if(tmpc == ';') {
270  // This is a hack (Paul Brannan 6/27/98)
271  if(*(pszBuffer - 1) == '[') missing_param = iCurrentParam+1;
272  pszBuffer++;
273  continue;
274  }
275 
276  // It is legal to have control characters inside ANSI sequences
277  // (Paul Brannan 6/26/98)
278  if(tmpc < ' ') {
279  Console.WriteCtrlChar(tmpc);
280  pszBuffer++;
281  continue;
282  }
283 
284  // A new way of handling flags (Paul Brannan 12/2/98)
285  switch(tmpc) {
286  case '$': flag |= FLAG_DOLLAR; break;
287  case '?': flag |= FLAG_QMARK; break;
288  case '>': flag |= FLAG_GREATER; break;
289  case '<': flag |= FLAG_LESS; break;
290  case '!': flag |= FLAG_EXCLAM; break;
291  case '&': flag |= FLAG_AMPERSAND; break;
292  case '/': flag |= FLAG_SLASH; break;
293  case '=': flag |= FLAG_EQUAL; break;
294  case '\"': flag |= FLAG_QUOTE; break;
295  default: flag |= FLAG_OTHER; break;
296  }
297 
298  pszBuffer++;
299  }
300 
301  // Got Numerical Parameter.
302  iParam[iCurrentParam] = strtoul(pszBuffer, &pszBuffer, 10);
303  if (iCurrentParam < nParam)
304  iCurrentParam++;
305  }
306 
307  //~~~ TITUS: Apparently the digit is optional (look at termcap or terminfo)
308  // So: If there is no digit, assume a count of 1
309 
310  switch ((unsigned char)*pszBuffer++) {
311  // Insert Character
312  case '@':
313  if(iParam[0] == 0) iParam[0] = 1; // Paul Brannan 9/1/98
314  Console.InsertCharacter(iParam[0]); break;
315  // Move cursor up.
316  case 'A':
317  if(iParam[0] == 0) iParam[0] = 1;
318  Console.MoveCursorPosition(0, -iParam[0]); break;
319  // Move cursor down.
320  // Added by I.Ioannou 06 April, 1997
321  case 'B':
322  case 'e':
323  if(iParam[0] == 0) iParam[0] = 1;
324  Console.MoveCursorPosition(0, iParam[0]);
325  break;
326  // Move cursor right.
327  // Added by I.Ioannou 06 April, 1997
328  case 'C':
329  case 'a':
330  // Handle cursor size sequences (Jose Cesar Otero Rodriquez and
331  // Paul Brannan, 3/27/1999)
332  if(flag & FLAG_EQUAL) {
333  switch(iParam[0]) {
334  case 7: Console.SetCursorSize(50); break;
335  case 11: Console.SetCursorSize(6); break;
336  case 32: Console.SetCursorSize(0); break;
337  default: Console.SetCursorSize(13);
338  }
339  } else {
340  if(iParam[0] == 0) iParam[0] = 1;
341  Console.MoveCursorPosition(iParam[0], 0);
342  break;
343  }
344  // Move cursor left.
345  case 'D':
346  if(iParam[0] == 0) iParam[0] = 1;
347  Console.MoveCursorPosition(-iParam[0], 0);
348  break;
349  // Move cursor to beginning of line, p lines down.
350  // Added by I.Ioannou 06 April, 1997
351  case 'E':
353  break;
354  // Moves active position to beginning of line, p lines up
355  // Added by I.Ioannou 06 April, 1997
356  // With '=' this changes the default fg color (Paul Brannan 6/27/98)
357  case 'F':
358  if(flag & FLAG_EQUAL)
359  Console.setDefaultFg(iParam[0]);
360  else
362  break;
363  // Go to column p
364  // Added by I.Ioannou 06 April, 1997
365  // With '=' this changes the default bg color (Paul Brannan 6/27/98)
366  case '`':
367  case 'G': // 'G' is from Linux kernel sources
368  if(flag & FLAG_EQUAL) {
369  Console.setDefaultBg(iParam[0]);
370  } else {
371  if (iCurrentParam < 1) // Alter Default
372  iParam[0] = 0;
373  // this was backward, and we should subtract 1 from x
374  // (Paul Brannan 5/27/98)
375  ConSetCursorPos(iParam[0] - 1, Console.GetCursorY());
376  }
377  break;
378  // Set cursor position.
379  case 'f':
380  case 'H':
381  if (iCurrentParam < 2 || iParam[1] < 1)
382  iParam[1] = 1;
383  ConSetCursorPos(iParam[1] - 1, iParam[0] - 1);
384  break;
385  // Clear screen
386  case 'J':
387  if ( iCurrentParam < 1 ) iParam[0] = 0; // Alter Default
388  switch (iParam[0]) {
389  case 0: Console.ClearEOScreen(); break;
390  case 1: Console.ClearBOScreen(); break;
391  case 2:
394  break;
395  }
396  break;
397  // Clear line
398  case 'K':
399  if (iCurrentParam < 1) // Alter Default
400  iParam[0] = 0;
401  switch (iParam[0]) {
402  case 0: Console.ClearEOLine(); break;
403  case 1: Console.ClearBOLine(); break;
404  case 2: Console.ClearLine(); break;
405  }
406  break;
407  // Insert p new, blank lines.
408  // Added by I.Ioannou 06 April, 1997
409  case 'L':
410  {
411  // for (int i = 1; i <= iParam[0]; i++)
412  // This should speed things up a bit (Paul Brannan 9/2/98)
413  Console.ScrollDown(Console.GetRawCursorY(), -1, iParam[0]);
414  break;
415  }
416  // Delete p lines.
417  // Added by I.Ioannou 06 April, 1997
418  case 'M':
419  {
420  for (int i = 1; i <= iParam[0]; i++)
421  // This should speed things up a bit (Paul Brannan 9/2/98)
423  break;
424  }
425  // DELETE CHAR
426  case 'P':
427  Console.DeleteCharacter(iParam[0]);
428  break;
429  // Scrolls screen up (down? -- PB) p lines,
430  // Added by I.Ioannou 06 April, 1997
431  // ANSI X3.64-1979 references this but I didn't
432  // found it in any telnet implementation
433  // note 05 Oct 97 : but SCO terminfo uses them, so uncomment them !!
434  case 'S':
435  {
436  //for (int i = 1; i <= iParam[0]; i++)
437  // This should speed things up a bit (Paul Brannan 9/2/98)
438  Console.ScrollDown(-1, -1, -iParam[0]);
439  break;
440  }
441  // Scrolls screen up p lines,
442  // Added by I.Ioannou 06 April, 1997
443  // ANSI X3.64-1979 references this but I didn't
444  // found it in any telnet implementation
445  // note 05 Oct 97 : but SCO terminfo uses them, so uncomment them !!
446  case 'T':
447  {
448  // for (int i = 1; i <= iParam[0]; i++)
449  // This should speed things up a bit (Paul Brannan 9/2/98)
450  Console.ScrollDown(-1, -1, iParam[0]);
451  break;
452  }
453  // Erases p characters up to the end of line
454  // Added by I.Ioannou 06 April, 1997
455  case 'X':
456  {
457  int iKeepX = Console.GetRawCursorX();
458  int iKeepY = Console.GetRawCursorY();
459  if (iParam[0] > Console.GetWidth())
460  iParam[0] = Console.GetWidth(); // up to the end of line
461  for ( int i = 1; i <= iParam[0]; i++ )
462  Console.WriteString(" ", 1);
463  Console.SetRawCursorPosition(iKeepX , iKeepY);
464  break;
465  }
466  // Go back p tab stops
467  // Added by I.Ioannou 06 April, 1997
468  // Implemented by Paul Brannan, 4/13/2000
469  case 'Z':
470  {
471  int x = Console.GetCursorX();
472  for(int j = 0; x > 0 && j < iParam[0]; j++)
473  while(x > 0 && tab_stops[j] == tab_stops[x]) x--;
475  }
476  break;
477  // Get Terminal ID
478  case 'c':
479  {
480  const char* szTerminalId = GetTerminalID();
481  Network.WriteString(szTerminalId, strlen(szTerminalId));
482  break;
483  }
484  // TITUS++ 2. November 1998: Repeat Character.
485  case 'b':
486  // isprint may be causing problems (Paul Brannan 3/27/99)
487  // if ( isprint(last_char) ) {
488  char buf[150]; // at most 1 line (max 132 chars)
489 
490  if ( iParam[0] > 149 ) iParam[0] = 149;
491  memset(buf, last_char, iParam[0]);
492  buf[iParam[0]] = 0;
493  if ( fast_write )
494  Console.WriteStringFast(buf, iParam[0]);
495  else
496  Console.WriteString(buf, iParam[0]);
497  // } /* IF */
498  break;
499  // Go to line p
500  // Added by I.Ioannou 06 April, 1997
501  case 'd':
502  if (iCurrentParam < 1) // Alter Default
503  iParam[0] = 0;
504  // this was backward, and we should subtract 1 from y
505  // (Paul Brannan 5/27/98)
506  ConSetCursorPos(Console.GetCursorX(), iParam[0] - 1);
507  break;
508  // iBCS2 tab erase
509  // Added by I.Ioannou 06 April, 1997
510  case 'g':
511  if (iCurrentParam < 1) // Alter Default
512  iParam[0] = 0;
513  switch (iParam[0]) {
514  case 0:
515  {
516  // Clear the horizontal tab stop at the current active position
517  for(int j = 0; j < MAX_TAB_POSITIONS; j++) {
518  int x = Console.GetCursorX();
519  if(tab_stops[j] == x) tab_stops[j] = tab_stops[x + 1];
520  }
521  }
522  break;
523  case 2:
524  // I think this might be "set as default?"
525  break;
526  case 3:
527  {
528  // Clear all tab stops
529  for(int j = 0; j < MAX_TAB_POSITIONS; j++)
530  tab_stops[j] = -1;
531  }
532  break;
533  }
534  break;
535  // Set extended mode
536  case 'h':
537  {
538  for (int i = 0; i < iCurrentParam; i++) {
539  // Changed to a switch statement (Paul Brannan 5/27/98)
540  if(flag & FLAG_QMARK) {
541  switch(iParam[i]) {
542  case 1: // App cursor keys
544  break;
545  case 2: // VT102 mode
546  vt52_mode = 0;
548  break;
549  case 3: // 132 columns
550  if(ini.get_wide_enable()) {
551  Console.SetWindowSize(132, -1);
552  }
553  break;
554  case 4: // smooth scrolling
555  break;
556  case 5: // Light background
557  Console.Lightbg();
558  break;
559  case 6: // Stay in margins
560  ignore_margins = 0;
561  break;
562  case 7:
563  Console.setLineWrap(true);
564  break;
565  case 8: // Auto-repeat keys
566  break;
567  case 18: // Send FF to printer
568  break;
569  case 19: // Entire screen legal for printer
570  break;
571  case 25: // Visible cursor
572  break;
573  case 66: // Application numeric keypad
574  break;
575  default:
576 #ifdef DEBUG
577  Console.Beep();
578 #endif
579  break;
580  }
581  } else {
582  switch(iParam[i]) {
583  case 2: // Lock keyboard
584  break;
585  case 3: // Act upon control codes (PB 12/5/98)
586  print_ctrl = 0;
587  break;
588  case 4: // Set insert mode
589  Console.InsertMode(1);
590  break;
591  case 12: // Local echo off
592  break;
593  case 20: // Newline sends cr/lf
595  newline_mode = true;
596  break;
597  default:
598 #ifdef DEBUG
599  Console.Beep();
600 #endif
601  break;
602  }
603  }
604  }
605  }
606  break;
607  // Print Screen
608  case 'i':
609  if (iCurrentParam < 1)
610  iParam[0]=0;
611  switch (iParam[0]){
612  case 0: break; // Print Screen
613  case 1: break; // Print Line
614  // Added I.Ioannou 06 April, 1997
615  case 4:
616  // Stop Print Log
617  InPrintMode = 0;
618  if ( printfile != NULL )
619  fclose(printfile);
620  break;
621  case 5:
622  // Start Print Log
623  printfile = fopen(ini.get_printer_name(), "ab");
624  if (printfile != NULL) InPrintMode = 1;
625  break;
626  }
627  break;
628  // Unset extended mode
629  case 'l':
630  {
631  for (int i = 0; i < iCurrentParam; i++) {
632  // Changed to a switch statement (Paul Brannan 5/27/98)
633  if(flag & FLAG_QMARK) {
634  switch(iParam[i]) {
635  case 1: // Numeric cursor keys
637  break;
638  case 2: // VT52 mode
639  vt52_mode = 1;
641  break;
642  case 3: // 80 columns
643  if(ini.get_wide_enable()) {
644  Console.SetWindowSize(80, -1);
645  }
646  break;
647  case 4: // jump scrolling
648  break;
649  case 5: // Dark background
650  Console.Darkbg();
651  break;
652  case 6: // Ignore margins
653  ignore_margins = 1;
654  break;
655  case 7:
656  Console.setLineWrap(false);
657  break;
658  case 8: // Auto-repeat keys
659  break;
660  case 19: // Only send scrolling region to printer
661  break;
662  case 25: // Invisible cursor
663  break;
664  case 66: // Numeric keypad
665  break;
666  default:
667 #ifdef DEBUG
668  Console.Beep();
669 #endif
670  break;
671  }
672  } else {
673  switch(iParam[i]) {
674  case 2: // Unlock keyboard
675  break;
676  case 3: // Display control codes (PB 12/5/98)
677  print_ctrl = 1;
678  break;
679  case 4: // Set overtype mode
680  Console.InsertMode(0);
681  break;
682  case 12: // Local echo on
683  break;
684  case 20: // sends lf only
686  newline_mode = false;
687  break;
688  default:
689 #ifdef DEBUG
690  Console.Beep();
691 #endif
692  break;
693  }
694  }
695  }
696  }
697  break;
698  // Set color
699  case 'm':
700  if(missing_param) Console.Normal();
701  if(iCurrentParam == 0) {
702  Console.Normal();
703  } else {
704  for(int i = 0; i < iCurrentParam; i++)
705  ConSetAttribute(iParam[i]);
706  }
707  break;
708  // report cursor position Row X Col
709  case 'n':
710  if (iCurrentParam == 1 && iParam[0]==5) {
711  // report the cursor position
712  Network.WriteString("\x1B[0n", 4);
713  break;
714  }
715  if (iCurrentParam == 1 && iParam[0]==6){
716  // report the cursor position
717  // The cursor position needs to be sent as a single string
718  // (Paul Brannan 6/27/98)
719  char szCursorReport[40] = "\x1B[";
720 
721  itoa(Console.GetCursorY() + 1,
722  &szCursorReport[strlen(szCursorReport)], 10);
723  strcat(szCursorReport, ";");
724  itoa(Console.GetCursorX() + 1,
725  &szCursorReport[strlen(szCursorReport)], 10);
726  strcat(szCursorReport, "R");
727 
728  Network.WriteString(szCursorReport, strlen(szCursorReport));
729 
730  }
731  break;
732  // Miscellaneous weird sequences (Paul Brannan 6/27/98)
733  case 'p':
734  // Set conformance level
735  if(flag & FLAG_QUOTE) {
736  break;
737  }
738  // Soft terminal reset
739  if(flag & FLAG_EXCLAM) {
740  break;
741  }
742  // Report mode settings
743  if(flag & FLAG_DOLLAR) {
744  break;
745  }
746  break;
747  // Scroll Screen
748  case 'r':
749  if (iCurrentParam < 1) {
750  // Enable scrolling for entire display
751  Console.SetScroll(-1, -1);
752  break;
753  }
754  if (iCurrentParam >1) {
755  // Enable scrolling from row1 to row2
756  Console.SetScroll(iParam[0] - 1, iParam[1] - 1);
757  // If the cursor is outside the scrolling range, fix it
758  // (Paul Brannan 6/26/98)
759  // if(Console.GetRawCursorY() < iParam[0] - 1) {
760  // Console.SetRawCursorPosition(Console.GetCursorX(),
761  // iParam[0] - 1);
762  // }
763  // if(Console.GetRawCursorY() > iParam[1] - 1) {
764  // Console.SetRawCursorPosition(Console.GetCursorX(),
765  // iParam[1] - 1);
766  // }
767  }
768  // Move the cursor to the home position (Paul Brannan 12/2/98)
770  break;
771  // Save cursor position
772  case 's':
775  break;
776  // Restore cursor position
777  case 'u':
779  break;
780  // DEC terminal report (Paul Brannan 6/28/98)
781  case 'x':
782  if(iParam[0])
783  Network.WriteString("\033[3;1;1;128;128;1;0x", 20);
784  else
785  Network.WriteString("\033[2;1;1;128;128;1;0x", 20);
786  break;
787  default:
788 #ifdef DEBUG
789  Console.Beep();
790 #endif
791  break;
792  }
793 
794  return pszBuffer;
795 }
void SaveCurY(int iY)
Definition: ansiprsr.cpp:114
int iSavedCurY
Definition: ansiprsr.h:46
bool vt52_mode
Definition: ansiprsr.h:59
void ClearBOScreen(char c=' ')
Definition: tconsole.cpp:721
UINT32 strtoul(const char *String, char **Terminator, UINT32 Base)
Definition: utclib.c:696
TConsole & Console
Definition: tparser.h:41
char * strcat(char *DstString, const char *SrcString)
Definition: utclib.c:568
void ClearScreen(char c=' ')
Definition: tconsole.cpp:689
#define APP_KEY
Definition: keytrans.h:41
void DeleteCharacter(int numchar)
Definition: tconsole.cpp:832
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define APP4_KEY
Definition: keytrans.h:38
bool fast_write
Definition: ansiprsr.h:62
void set_ext_mode(DWORD mode)
Definition: keytrans.h:74
void ConSetCursorPos(int x, int y)
Definition: ansiprsr.cpp:213
#define MAX_TAB_POSITIONS
Definition: ansiprsr.h:9
void ClearEOLine(char c=' ')
Definition: tconsole.cpp:743
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
void SetRawCursorPosition(int x, int y)
Definition: tconsole.cpp:860
FILE * printfile
Definition: ansiprsr.h:51
bool print_ctrl
Definition: ansiprsr.h:60
void Normal()
Definition: tconsole.cpp:121
void setLineWrap(bool bEnabled)
Definition: tconsole.h:131
unsigned long WriteString(const char *pszString, unsigned long cbString)
Definition: tconsole.cpp:473
#define FLAG_GREATER
Definition: ansiprsr.cpp:237
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
void InsertCharacter(int numchar)
Definition: tconsole.cpp:800
int GetRawCursorX()
Definition: tconsole.h:67
const char * GetTerminalID()
Definition: ansiprsr.cpp:220
smooth NULL
Definition: ftsmooth.c:416
void setDefaultBg(unsigned char u)
Definition: tconsole.h:106
void Lightbg()
Definition: tconsole.cpp:258
bool newline_mode
Definition: ansiprsr.h:63
void SetCursorSize(int pct)
Definition: tconsole.cpp:929
void ConSetAttribute(unsigned char wAttr)
Definition: ansiprsr.cpp:128
void Darkbg()
Definition: tconsole.cpp:284
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
KeyTranslator & KeyTrans
Definition: tparser.h:42
TConfig ini
Definition: tnconfig.cpp:45
void SetCursorPosition(int x, int y)
Definition: tconsole.cpp:885
int GetCursorY()
Definition: tconsole.h:70
_CRTIMP char *__cdecl itoa(_In_ int _Val, _Pre_notnull_ _Post_z_ char *_DstBuf, _In_ int _Radix)
int WriteString(const char *str, const int length)
Definition: tnetwork.cpp:53
void MoveCursorPosition(int x, int y)
Definition: tconsole.cpp:907
#define APP2_KEY
Definition: keytrans.h:40
unsigned long WriteStringFast(const char *pszString, unsigned long cbString)
Definition: tconsole.cpp:350
bool ignore_margins
Definition: ansiprsr.h:61
void ScrollDown(int iStartRow, int iEndRow, int bUp)
Definition: tconsole.cpp:625
char InPrintMode
Definition: ansiprsr.h:52
unsigned long DWORD
Definition: ntddk_ex.h:95
void ClearBOLine(char c=' ')
Definition: tconsole.cpp:754
void SaveCurX(int iX)
Definition: ansiprsr.cpp:118
#define FLAG_SLASH
Definition: ansiprsr.cpp:241
void ClearEOScreen(char c=' ')
Definition: tconsole.cpp:709
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
Definition: glfuncs.h:52
int GetWidth()
Definition: tconsole.h:81
TNetwork & Network
Definition: tparser.h:44
unsigned long WriteCtrlChar(char c)
Definition: tconsole.cpp:557
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
_Check_return_ _CRTIMP FILE *__cdecl fopen(_In_z_ const char *_Filename, _In_z_ const char *_Mode)
void SetWindowSize(int width, int height)
Definition: tconsole.cpp:93
#define FLAG_EXCLAM
Definition: ansiprsr.cpp:239
#define FLAG_LESS
Definition: ansiprsr.cpp:238
#define FLAG_EQUAL
Definition: ansiprsr.cpp:242
void unset_ext_mode(DWORD mode)
Definition: keytrans.h:75
bool get_wide_enable() const
Definition: tnconfig.h:60
#define FLAG_AMPERSAND
Definition: ansiprsr.cpp:240
#define FLAG_QUOTE
Definition: ansiprsr.cpp:243
#define FLAG_DOLLAR
Definition: ansiprsr.cpp:235
int iSavedCurX
Definition: ansiprsr.h:45
char last_char
Definition: ansiprsr.h:55
int GetCursorX()
Definition: tconsole.h:69
int tab_stops[MAX_TAB_POSITIONS]
Definition: ansiprsr.h:65
#define FLAG_QMARK
Definition: ansiprsr.cpp:236
int GetRawCursorY()
Definition: tconsole.h:68
void SetScroll(int start, int end)
Definition: tconsole.cpp:917
const char * get_printer_name() const
Definition: tnconfig.h:38
void ClearLine(char c=' ')
Definition: tconsole.cpp:732
#define memset(x, y, z)
Definition: compat.h:39
void Beep()
Definition: tconsole.cpp:922
void InsertMode(int i)
Definition: tconsole.h:141
#define FLAG_OTHER
Definition: ansiprsr.cpp:244
void setDefaultFg(unsigned char u)
Definition: tconsole.h:105

Referenced by ParseEscape().

◆ ParseEscapeMTE()

char* TANSIParser::ParseEscapeMTE ( char pszBuffer,
char pszBufferEnd 
)
private

Referenced by ParseEscape().

◆ PrintBuffer()

char * TANSIParser::PrintBuffer ( char pszBuffer,
char pszBufferEnd 
)
private

Definition at line 1375 of file ansiprsr.cpp.

1375  {
1376  // Check if we have enough characters in buffer.
1377  if ((pszBufferEnd - pszBuffer) < 4)
1378  return pszBuffer;
1379  char *tmpChar;
1380 
1381  tmpChar = pszBuffer;
1382  if ( *tmpChar == 27 ) {
1383  tmpChar++;
1384  if ( *tmpChar == '[' ) {
1385  tmpChar++;
1386  if ( *tmpChar == '4' ) {
1387  tmpChar++;
1388  if ( *tmpChar == 'i' ) {
1389  InPrintMode = 0; // Stop Print Log
1390  if ( printfile != NULL )
1391  fclose(printfile);
1392  pszBuffer += 4;
1393  return pszBuffer;
1394  }
1395  }
1396  }
1397  }
1398 
1399  if (printfile != NULL) {
1400  fputc( *pszBuffer, printfile);
1401  pszBuffer++;
1402  } else
1403  InPrintMode = 0;
1404 
1405  return pszBuffer;
1406 }
_Check_return_opt_ _CRTIMP int __cdecl fputc(_In_ int _Ch, _Inout_ FILE *_File)
FILE * printfile
Definition: ansiprsr.h:51
smooth NULL
Definition: ftsmooth.c:416
char InPrintMode
Definition: ansiprsr.h:52
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)

Referenced by ParseANSIBuffer().

◆ PrintGoodChars()

char * TANSIParser::PrintGoodChars ( char pszHead,
char pszTail 
)
private

Definition at line 1431 of file ansiprsr.cpp.

1431  {
1432 
1433  while ( pszHead < pszTail ) {
1434  if ( iscntrl( *pszHead ) ) {
1435  switch ( *(pszHead++) ) {
1436  case 10 :
1437  putc( 10, stdout );
1438  break;
1439 
1440  case 13 :
1441  putc( 13, stdout );
1442  break;
1443 
1444  case 27:
1445  switch ( *(pszHead++) ) {
1446  case 'Y':
1447  pszHead += 2;
1448  break;
1449 
1450  case '#':
1451  case '(':
1452  case ')':
1453  case '%': pszHead++; break;
1454  case '[':
1455  while ( (pszHead < pszTail) && (*pszHead < '?') )
1456  pszHead++;
1457  pszHead++;
1458  break;
1459 
1460  default :
1461  break;
1462  }
1463  break;
1464 
1465  default :
1466  break;
1467  }
1468  }
1469  else
1470  putc( *(pszHead++), stdout );
1471  }
1472  return ( pszTail );
1473 }
FILE * stdout
_Check_return_opt_ _CRTIMP int __cdecl putc(_In_ int _Ch, _Inout_ FILE *_File)
_Check_return_ _CRTIMP int __cdecl iscntrl(_In_ int _C)

Referenced by ParseBuffer().

◆ resetTabStops()

void TANSIParser::resetTabStops ( )
private

Definition at line 122 of file ansiprsr.cpp.

122  {
123  for(int j = 0; j < MAX_TAB_POSITIONS; j++) {
124  tab_stops[j] = 8 + j - (j%8);
125  }
126 }
#define MAX_TAB_POSITIONS
Definition: ansiprsr.h:9
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
int tab_stops[MAX_TAB_POSITIONS]
Definition: ansiprsr.h:65

Referenced by Init().

◆ ResetTerminal()

void TANSIParser::ResetTerminal ( )
private

Definition at line 109 of file ansiprsr.cpp.

109  {
110  Init();
111  Console.ClearScreen(); // Clear Screen
112  Console.SetRawCursorPosition(0,0); // Home Cursor
113 }
TConsole & Console
Definition: tparser.h:41
void ClearScreen(char c=' ')
Definition: tconsole.cpp:689
void Init()
Definition: ansiprsr.cpp:86
void SetRawCursorPosition(int x, int y)
Definition: tconsole.cpp:860

Referenced by ParseEscape().

◆ SaveCurX()

void TANSIParser::SaveCurX ( int  iX)
private

Definition at line 118 of file ansiprsr.cpp.

118  {
119  iSavedCurX=iX;
120 }
int iSavedCurX
Definition: ansiprsr.h:45

Referenced by ParseEscape(), and ParseEscapeANSI().

◆ SaveCurY()

void TANSIParser::SaveCurY ( int  iY)
private

Definition at line 114 of file ansiprsr.cpp.

114  {
115  iSavedCurY=iY;
116 }
int iSavedCurY
Definition: ansiprsr.h:46

Referenced by ParseEscape(), and ParseEscapeANSI().

◆ StripBuffer()

int TANSIParser::StripBuffer ( char pszBuffer,
char pszBufferEnd,
int  width 
)
static

Definition at line 1164 of file ansiprsr.cpp.

1164  {
1165  int lines = 0, c = 0;
1166  char *pszBuf = pszHead;
1167 
1168  while(pszHead < pszTail) {
1169  if(iscntrl(*pszHead)) {
1170  switch(*(pszHead++)) {
1171  case 8:
1172  case 127:
1173  if(c>0) {
1174  if(!(c%width)) lines--;
1175  c--;
1176  pszBuf--;
1177  }
1178  break;
1179  case 10: lines++;
1180  case 13:
1181  *(pszBuf++) = *(pszHead - 1);
1182  c = 0;
1183  break;
1184  case 27:
1185  switch(*(pszHead++)) {
1186  case 'Y': pszHead += 2; break;
1187  case '#':
1188  case '(':
1189  case ')':
1190  case '%': pszHead++; break;
1191  case '[':
1192  while((pszHead < pszTail) && (*pszHead < '?'))
1193  pszHead++;
1194  pszHead++;
1195  break;
1196  }
1197  }
1198  } else {
1199  *(pszBuf++) = *(pszHead++);
1200  c++;
1201  }
1202  if(c != 0 && !(c%width))
1203  lines++;
1204  }
1205 
1206  // Fill in the end of the buffer with blanks
1207  while(pszBuf <= pszTail) *pszBuf++ = ' ';
1208 
1209  return lines;
1210 }
GLint GLint GLsizei width
Definition: gl.h:1546
eMaj lines
Definition: tritemp.h:206
const GLubyte * c
Definition: glext.h:8905
_Check_return_ _CRTIMP int __cdecl iscntrl(_In_ int _C)

Referenced by TANSIParser().

Member Data Documentation

◆ current_map

int TANSIParser::current_map
private

Definition at line 58 of file ansiprsr.h.

Referenced by ConSetAttribute(), Init(), ParseANSIBuffer(), and ParseEscape().

◆ dumpfile

FILE* TANSIParser::dumpfile
private

Definition at line 48 of file ansiprsr.h.

Referenced by ParseBuffer(), TANSIParser(), and ~TANSIParser().

◆ fast_write

bool TANSIParser::fast_write
private

Definition at line 62 of file ansiprsr.h.

Referenced by ParseANSIBuffer(), ParseEscapeANSI(), and TANSIParser().

◆ ignore_margins

bool TANSIParser::ignore_margins
private

Definition at line 61 of file ansiprsr.h.

Referenced by ConSetCursorPos(), Init(), and ParseEscapeANSI().

◆ inGraphMode

int TANSIParser::inGraphMode
private

Definition at line 53 of file ansiprsr.h.

Referenced by ConSetAttribute(), Init(), and ParseANSIBuffer().

◆ InPrintMode

char TANSIParser::InPrintMode
private

Definition at line 52 of file ansiprsr.h.

Referenced by ParseANSIBuffer(), ParseEscapeANSI(), PrintBuffer(), and TANSIParser().

◆ iSavedAttributes

unsigned char TANSIParser::iSavedAttributes
private

Definition at line 47 of file ansiprsr.h.

Referenced by ParseEscape(), and TANSIParser().

◆ iSavedCurX

int TANSIParser::iSavedCurX
private

Definition at line 45 of file ansiprsr.h.

Referenced by Init(), ParseEscape(), ParseEscapeANSI(), and SaveCurX().

◆ iSavedCurY

int TANSIParser::iSavedCurY
private

Definition at line 46 of file ansiprsr.h.

Referenced by Init(), ParseEscape(), ParseEscapeANSI(), and SaveCurY().

◆ last_char

char TANSIParser::last_char
private

Definition at line 55 of file ansiprsr.h.

Referenced by ParseANSIBuffer(), and ParseEscapeANSI().

◆ map_G0

char TANSIParser::map_G0
private

Definition at line 57 of file ansiprsr.h.

Referenced by ConSetAttribute(), Init(), ParseANSIBuffer(), and ParseEscape().

◆ map_G1

char TANSIParser::map_G1
private

Definition at line 57 of file ansiprsr.h.

Referenced by ConSetAttribute(), Init(), ParseANSIBuffer(), and ParseEscape().

◆ mteRegionXF

short int TANSIParser::mteRegionXF
private

Definition at line 31 of file ansiprsr.h.

◆ mteRegionYF

short int TANSIParser::mteRegionYF
private

Definition at line 31 of file ansiprsr.h.

◆ newline_mode

bool TANSIParser::newline_mode
private

Definition at line 63 of file ansiprsr.h.

Referenced by Init(), ParseANSIBuffer(), and ParseEscapeANSI().

◆ print_ctrl

bool TANSIParser::print_ctrl
private

Definition at line 60 of file ansiprsr.h.

Referenced by ConSetAttribute(), Init(), ParseANSIBuffer(), and ParseEscapeANSI().

◆ printfile

FILE* TANSIParser::printfile
private

Definition at line 51 of file ansiprsr.h.

Referenced by ParseEscapeANSI(), PrintBuffer(), TANSIParser(), and ~TANSIParser().

◆ tab_stops

int TANSIParser::tab_stops[MAX_TAB_POSITIONS]
private

Definition at line 65 of file ansiprsr.h.

Referenced by ParseANSIBuffer(), ParseEscape(), ParseEscapeANSI(), and resetTabStops().

◆ vt52_mode

bool TANSIParser::vt52_mode
private

Definition at line 59 of file ansiprsr.h.

Referenced by Init(), ParseEscape(), and ParseEscapeANSI().


The documentation for this class was generated from the following files: