summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMats Lidell <matsl@rockbox.org>2003-08-18 05:27:13 +0000
committerMats Lidell <matsl@rockbox.org>2003-08-18 05:27:13 +0000
commit37982493c266d9912dd2192b510a31b0f44d5d29 (patch)
treeea57ebfc722bcf53841584970224cff57c95fcf0
parentc0879d11995b854c75b445827cd91edb10a7e0d7 (diff)
downloadrockbox-37982493c266d9912dd2192b510a31b0f44d5d29.tar.gz
rockbox-37982493c266d9912dd2192b510a31b0f44d5d29.zip
Smarter jumpscroll.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3931 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/drivers/lcd-player.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/firmware/drivers/lcd-player.c b/firmware/drivers/lcd-player.c
index bbb157a94f..3344a7478a 100644
--- a/firmware/drivers/lcd-player.c
+++ b/firmware/drivers/lcd-player.c
@@ -626,12 +626,27 @@ static void scroll_thread(void)
626 int jumping_scroll=s->jump_scroll; 626 int jumping_scroll=s->jump_scroll;
627 update = true; 627 update = true;
628 if (s->jump_scroll) { 628 if (s->jump_scroll) {
629 s->offset+=s->jump_scroll_steps; 629
630 /* Find new position to start jump scroll by
631 * finding last white space within
632 * jump_scroll_steps */
633 int i;
634 o = s->offset = s->offset + s->jump_scroll_steps;
635 for (i = 0; i < s->jump_scroll_steps; i++, o--) {
636 if (o < s->textlen &&
637 ((0x20 <= s->text[o] && s->text[o] <= 0x2f) || s->text[o] == '_'))
638 {
639 s->offset = o;
640 break;
641 }
642 }
643
630 s->scroll_start_tick = current_tick + 644 s->scroll_start_tick = current_tick +
631 jump_scroll_delay; 645 jump_scroll_delay;
632 /* Eat space */ 646 /* Eat space */
633 while (s->offset < s->textlen && 647 while (s->offset < s->textlen &&
634 s->text[s->offset] == ' ') { 648 ((0x20 <= s->text[s->offset] && s->text[s->offset] <= 0x2f) ||
649 s->text[s->offset] == '_')) {
635 s->offset++; 650 s->offset++;
636 } 651 }
637 if (s->offset >= s->textlen) { 652 if (s->offset >= s->textlen) {
@@ -667,7 +682,7 @@ static void scroll_thread(void)
667 o=s->offset; 682 o=s->offset;
668 while (i<11) { 683 while (i<11) {
669 buffer[i++]=s->text[o++]; 684 buffer[i++]=s->text[o++];
670 if (o==s->textlen) 685 if (o==s->textlen /* || (jump_scroll && buffer[i-1] == ' ') */)
671 break; 686 break;
672 } 687 }
673 o=0; 688 o=0;