244{
249
250
252
253
255 {
256
260 {
261
264 Number = Number2 = Number3 = 1;
265 goto ProcessString;
266 }
267 }
268
269
272
273
274 switch (*Sequence)
275 {
278 goto ProcessString;
279
282 goto ProcessString;
283
286 goto ProcessString;
287
290 goto ProcessString;
291
294 goto ProcessString;
295
296 default:
297 break;
298 }
299
300
302 while ((*Sequence >=
L'0') && (*Sequence <=
L'9')) Sequence++;
303
304
306 {
307
309 {
310
313 break;
314
315
318 break;
319
320
323 break;
324
325
328 break;
329
330
333 break;
334
335
338 break;
339
340
343 break;
344
345
346 default:
347
348
350 {
351
353 {
354
356 return 0;
357 }
358
359
361 }
362 else
363 {
364
366 }
367 break;
368 }
369
370
371 goto ProcessString;
372 }
373
374
376 Sequence++;
378 while ((*Sequence >=
L'0') && (*Sequence <=
L'9')) Sequence++;
379
380
381 switch (*Sequence)
382 {
383
386 goto ProcessString;
387
388
391 goto ProcessString;
392
393
395 Sequence++;
396 break;
397
398
399 default:
400 return 0;
401 }
402
403
404 switch (*Sequence)
405 {
406
409
411 goto ProcessString;
412
413
415
417 goto ProcessString;
418
419
420 default:
421 break;
422 }
423
424
426 while ((*Sequence >=
L'0') && (*Sequence <=
L'9')) Sequence++;
427
428
430 {
431
433 goto ProcessString;
434 }
435
436
437 return 0;
438
439ProcessString:
440
442
443
446
447
449 {
451
452 if (Channel->CursorRow <
Number)
453 {
454
455 Channel->CursorRow = 0;
456 }
457 else
458 {
459
460 Channel->CursorRow -=
Number;
461 }
462
463
465 break;
466
468
470 {
471
473 }
474 else
475 {
476
477 Channel->CursorRow +=
Number;
478 }
479
480
482 break;
483
485
486 if (Channel->CursorCol <
Number)
487 {
488
489 Channel->CursorCol = 0;
490 }
491 else
492 {
493
494 Channel->CursorCol -=
Number;
495 }
496
497
499 break;
500
502
504 {
505
507 }
508 else
509 {
510
511 Channel->CursorCol +=
Number;
512 }
513
514
516 break;
517
519
520 Channel->CellFlags = 0;
523 break;
524
526
528 break;
529
531
532 Channel->CellFlags &= ~SAC_CELL_FLAG_BLINK;
533 break;
534
536
538 break;
539
541
542 Channel->CellFlags &= ~SAC_CELL_FLAG_BOLD;
543 break;
544
546
548 break;
549
551
552 Channel->CellFlags &= ~SAC_CELL_FLAG_INVERTED;
553 break;
554
556
558 {
559
560 Screen->Cell[Channel->CursorRow][
i].CellFlags = Channel->CellFlags;
561 Screen->Cell[Channel->CursorRow][
i].CellBackColor = Channel->CellForeColor;
562 Screen->Cell[Channel->CursorRow][
i].CellForeColor = Channel->CellBackColor;
563 Screen->Cell[Channel->CursorRow][
i].Char =
L' ';
564 }
565 break;
566
568
569 for (
i = 0;
i < (Channel->CursorCol + 1);
i++)
570 {
571
572 Screen->Cell[Channel->CursorRow][
i].CellFlags = Channel->CellFlags;
573 Screen->Cell[Channel->CursorRow][
i].CellBackColor = Channel->CellForeColor;
574 Screen->Cell[Channel->CursorRow][
i].CellForeColor = Channel->CellBackColor;
575 Screen->Cell[Channel->CursorRow][
i].Char =
L' ';
576 }
577 break;
578
580
582 {
583
584 Screen->Cell[Channel->CursorRow][
i].CellFlags = Channel->CellFlags;
585 Screen->Cell[Channel->CursorRow][
i].CellBackColor = Channel->CellForeColor;
586 Screen->Cell[Channel->CursorRow][
i].CellForeColor = Channel->CellBackColor;
587 Screen->Cell[Channel->CursorRow][
i].Char =
L' ';
588 }
589 break;
590
593 break;
594
597 break;
598
601 break;
602
605 break;
606
609 break;
610
612
613 Channel->CellForeColor =
Number;
614 Channel->CellBackColor = Number2;
615 break;
616
618
619 Channel->CellBackColor =
Number;
620 break;
621
623
624 Channel->CellForeColor =
Number;
625 break;
626
628
629 Channel->CellFlags =
Number;
630 Channel->CellForeColor = Number2;
631 Channel->CellBackColor = Number3;
632 break;
633
634 default:
635
636 break;
637 }
638
639
641}
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
_In_opt_ PENTER_STATE_SYSTEM_HANDLER _In_opt_ PVOID _In_ LONG _In_opt_ LONG volatile * Number
#define VT_ANSI_ERASE_LINE_CHAR
#define VT_ANSI_CURSOR_LEFT_CHAR
#define VT_ANSI_CURSOR_RIGHT_CHAR
#define VT_ANSI_CURSOR_UP_CHAR
#define SAC_CELL_FLAG_INVERTED
#define SAC_CELL_FLAG_BOLD
#define VT_ANSI_CURSOR_DOWN_CHAR
#define VT_ANSI_CUP_CURSOR_CHAR
#define VT_ANSI_SET_ATTRIBUTE_CHAR
#define VT_ANSI_HVP_CURSOR_CHAR
#define VT_ANSI_SCROLL_CHAR
@ SacSetColorsAndAttributes
struct _SAC_VTUTF8_SCREEN * PSAC_VTUTF8_SCREEN
#define VT_ANSI_SEPARATOR_CHAR
#define SAC_CELL_FLAG_BLINK
_Check_return_ _CRTIMP int __cdecl wcsncmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
FORCEINLINE VOID VTUTF8ChannelAssertCursor(IN PSAC_CHANNEL Channel)
BOOLEAN NTAPI VTUTF8ChannelScanForNumber(IN PWCHAR String, OUT PULONG Number)
SAC_STATIC_ESCAPE_STRING SacStaticEscapeStrings[]
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action
_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