Changeset 3957
- Timestamp:
- Nov 19, 2009, 2:31:37 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
neercs/trunk/src/term.c
r3956 r3957 181 181 skip += 1; 182 182 } 183 183 /* Reverse Index (RI) go up one line, reverse scroll if necessary */ 184 else if(buffer[i] == '\033' && buffer[i + 1] == 'M') 185 { 186 /* FIXME : not sure about the meaning of 'go up one line' and 187 * 'if necessary' words. Implemented as a scroller only. */ 188 for(j = height; j > 0; j--) 189 { 190 for(k = 0; k < width; k++) 191 { 192 caca_put_char(sc->cv, k, j, caca_get_char(sc->cv, k, j-1)); 193 caca_put_attr(sc->cv, k, j, caca_get_attr(sc->cv, k, j-1)); 194 } 195 } 196 caca_draw_line(sc->cv, 0, 0, width, 0, ' '); 197 skip += 1; 198 } 199 184 200 /* Single Shift Select of G3 Character Set (SS2: 0x8f): 185 201 * affects next character only */ … … 387 403 switch(buffer[i + final]) 388 404 { 389 case 'H': /* CUP (0x48) - Cursor Position */390 x = (argc > 1 && argv[1] > 0) ? argv[1] - 1 : 0;391 y = (argc > 0 && argv[0] > 0) ? argv[0] - 1 : 0;392 break;393 405 case 'A': /* CUU (0x41) - Cursor Up */ 394 406 y -= argc ? argv[0] : 1; … … 400 412 break; 401 413 case 'C': /* CUF (0x43) - Cursor Right */ 402 debug("Cursor right %d\n", argc);403 414 x += argc ? argv[0] : 1; 404 415 break; … … 411 422 x = (argc && argv[0] > 0) ? argv[0] - 1 : 0; 412 423 break; 424 case 'H': /* CUP (0x48) - Cursor Position */ 425 x = (argc > 1 && argv[1] > 0) ? argv[1] - 1 : 0; 426 y = (argc > 0 && argv[0] > 0) ? argv[0] - 1 : 0; 427 break; 413 428 case 'J': /* ED (0x4a) - Erase In Page */ 414 429 savedattr = caca_get_attr(sc->cv, -1, -1); … … 432 447 break; 433 448 case 'K': /* EL (0x4b) - Erase In Line */ 434 if(!argc || argv[0] == 0) 449 if(!argc || argv[0] == 0) 450 { 435 451 caca_draw_line(sc->cv, x, y, width, y, ' '); 452 } 436 453 else if(argv[0] == 1) 454 { 437 455 caca_draw_line(sc->cv, 0, y, x, y, ' '); 456 } 438 457 else if(argv[0] == 2) 458 { 439 459 if((unsigned int)x < width) 440 460 caca_draw_line(sc->cv, x, y, width - 1, y, ' '); 461 } 441 462 //x = width; 442 463 break; … … 459 480 if(!argc || argv[0] == 0) 460 481 argv[0] = 1; /* echo -ne 'foobar\r\e[0P\n' */ 461 482 /* Jylam : Start from x, not 0 */ 462 483 for(j = x; (unsigned int)(j + argv[0]) < width; j++) 463 484 { … … 576 597 size_t bytes; 577 598 578 if(i + 6 < size) 599 if(i + 6 < size) { 579 600 ch = caca_utf8_to_utf32((char const *)(buffer + i), &bytes); 580 else601 } else 581 602 { 582 603 /* Add a trailing zero to what we're going to read */ … … 613 634 614 635 wch = caca_utf32_is_fullwidth(ch) ? 2 : 1; 636 615 637 skip += bytes - 1; 616 638 }
Note: See TracChangeset
for help on using the changeset viewer.