Overview
Comment: | OFStdIOStream: Implement cursor movement on MS-DOS |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
943e9c0956369c287ae0493cf93ecca1 |
User & Date: | js on 2024-03-27 23:45:55 |
Other Links: | manifest | tags |
Context
2024-03-28
| ||
14:33 | OFStdIOStream: Handle colors properly on MS-DOS check-in: 831e85a953 user: js tags: trunk | |
2024-03-27
| ||
23:45 | OFStdIOStream: Implement cursor movement on MS-DOS check-in: 943e9c0956 user: js tags: trunk | |
23:33 | OFColor: Use roundf instead of nearbyintf check-in: 69931b1982 user: js tags: trunk | |
Changes
Modified src/OFStdIOStream.m from [4e9d096bab] to [2764157a42].
︙ | ︙ | |||
49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #ifdef OF_AMIGAOS # define Class IntuitionClass # include <proto/exec.h> # include <proto/dos.h> # undef Class # undef HAVE_ISATTY #endif #ifdef OF_WII_U # define BOOL WUT_BOOL # include <coreinit/debug.h> # undef BOOL #endif | > > > > | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #ifdef OF_AMIGAOS # define Class IntuitionClass # include <proto/exec.h> # include <proto/dos.h> # undef Class # undef HAVE_ISATTY #endif #ifdef OF_MSDOS # include <conio.h> #endif #ifdef OF_WII_U # define BOOL WUT_BOOL # include <coreinit/debug.h> # undef BOOL #endif |
︙ | ︙ | |||
438 439 440 441 442 443 444 | #else return false; #endif } - (int)columns { | > > > > > > | > > > > > > | | 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 | #else return false; #endif } - (int)columns { #if defined(OF_MSDOS) struct text_info ti; gettextinfo(&ti); return ti.screenwidth; #elif defined(HAVE_IOCTL) && defined(TIOCGWINSZ) && \ !defined(OF_AMIGAOS) && !defined(OF_WII_U) struct winsize ws; if (ioctl(_fd, TIOCGWINSZ, &ws) != 0) return -1; return ws.ws_col; #else return -1; #endif } - (int)rows { #if defined(OF_MSDOS) struct text_info ti; gettextinfo(&ti); return ti.screenwidth; #elif defined(HAVE_IOCTL) && defined(TIOCGWINSZ) && \ !defined(OF_AMIGAOS) && !defined(OF_WII_U) struct winsize ws; if (ioctl(_fd, TIOCGWINSZ, &ws) != 0) return -1; return ws.ws_row; |
︙ | ︙ | |||
521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 | } - (void)setCursorColumn: (unsigned int)column { if (!self.hasTerminal) return; [self writeFormat: @"\033[%uG", column + 1]; } - (void)setCursorPosition: (OFPoint)position { if (position.x < 0 || position.y < 0) @throw [OFInvalidArgumentException exception]; if (!self.hasTerminal) return; [self writeFormat: @"\033[%u;%uH", (unsigned)position.y + 1, (unsigned)position.x + 1]; } - (void)setRelativeCursorPosition: (OFPoint)position { if (!self.hasTerminal) return; if (position.x > 0) [self writeFormat: @"\033[%uC", (unsigned)position.x]; else if (position.x < 0) [self writeFormat: @"\033[%uD", (unsigned)-position.x]; if (position.y > 0) [self writeFormat: @"\033[%uB", (unsigned)position.y]; else if (position.y < 0) [self writeFormat: @"\033[%uA", (unsigned)-position.y]; } @end | > > > > > > > > > > > > | 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 | } - (void)setCursorColumn: (unsigned int)column { if (!self.hasTerminal) return; #ifdef OF_MSDOS gotoxy(column + 1, wherey()); #else [self writeFormat: @"\033[%uG", column + 1]; #endif } - (void)setCursorPosition: (OFPoint)position { if (position.x < 0 || position.y < 0) @throw [OFInvalidArgumentException exception]; if (!self.hasTerminal) return; #ifdef OF_MSDOS gotoxy(position.x + 1, position.y + 1); #else [self writeFormat: @"\033[%u;%uH", (unsigned)position.y + 1, (unsigned)position.x + 1]; #endif } - (void)setRelativeCursorPosition: (OFPoint)position { if (!self.hasTerminal) return; #ifdef OF_MSDOS gotoxy(wherex() + position.x, wherey() + position.y); #else if (position.x > 0) [self writeFormat: @"\033[%uC", (unsigned)position.x]; else if (position.x < 0) [self writeFormat: @"\033[%uD", (unsigned)-position.x]; if (position.y > 0) [self writeFormat: @"\033[%uB", (unsigned)position.y]; else if (position.y < 0) [self writeFormat: @"\033[%uA", (unsigned)-position.y]; #endif } @end |