summaryrefslogtreecommitdiff
path: root/firmware/drivers/lcd-charcell.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/lcd-charcell.c')
-rw-r--r--firmware/drivers/lcd-charcell.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/firmware/drivers/lcd-charcell.c b/firmware/drivers/lcd-charcell.c
index c3b1482a3b..6a6e57e992 100644
--- a/firmware/drivers/lcd-charcell.c
+++ b/firmware/drivers/lcd-charcell.c
@@ -477,10 +477,25 @@ void lcd_putsxyf(int x, int y, const unsigned char *fmt, ...)
477 477
478/*** Line oriented text output ***/ 478/*** Line oriented text output ***/
479 479
480/* Put a string at a given char position, skipping first offset chars */
481void lcd_putsofs(int x, int y, const unsigned char *str, int offset)
482{
483 if ((unsigned)y >= (unsigned)current_vp->height)
484 return;
485
486 /* make sure scrolling is turned off on the line we are updating */
487 lcd_scroll_stop_viewport_rect(current_vp, x, y, current_vp->width - x, 1);
488
489 x = lcd_putsxyofs(x, y, offset, str);
490 while (x < current_vp->width)
491 lcd_putxchar(x++, y, xspace);
492}
493
494
480/* Put a string at a given char position */ 495/* Put a string at a given char position */
481void lcd_puts(int x, int y, const unsigned char *str) 496void lcd_puts(int x, int y, const unsigned char *str)
482{ 497{
483 lcd_puts_offset(x, y, str, 0); 498 lcd_putsofs(x, y, str, 0);
484} 499}
485 500
486/* Formatting version of lcd_puts */ 501/* Formatting version of lcd_puts */
@@ -494,20 +509,6 @@ void lcd_putsf(int x, int y, const unsigned char *fmt, ...)
494 lcd_puts(x, y, buf); 509 lcd_puts(x, y, buf);
495} 510}
496 511
497/* Put a string at a given char position, skipping first offset chars */
498void lcd_puts_offset(int x, int y, const unsigned char *str, int offset)
499{
500 if ((unsigned)y >= (unsigned)current_vp->height)
501 return;
502
503 /* make sure scrolling is turned off on the line we are updating */
504 lcd_scroll_stop_viewport_rect(current_vp, x, y, current_vp->width - x, 1);
505
506 x = lcd_putsxyofs(x, y, offset, str);
507 while (x < current_vp->width)
508 lcd_putxchar(x++, y, xspace);
509}
510
511/** scrolling **/ 512/** scrolling **/
512 513
513void lcd_puts_scroll_worker(int x, int y, const unsigned char *string, 514void lcd_puts_scroll_worker(int x, int y, const unsigned char *string,
@@ -529,7 +530,7 @@ void lcd_puts_scroll_worker(int x, int y, const unsigned char *string,
529 530
530 s->start_tick = current_tick + lcd_scroll_info.delay; 531 s->start_tick = current_tick + lcd_scroll_info.delay;
531 532
532 lcd_puts_offset(x, y, string, offset); 533 lcd_putsofs(x, y, string, offset);
533 len = utf8length(string); 534 len = utf8length(string);
534 535
535 if (current_vp->width - x >= len) 536 if (current_vp->width - x >= len)