diff options
author | Antoine Cellerier <dionoea@videolan.org> | 2007-09-30 21:12:33 +0000 |
---|---|---|
committer | Antoine Cellerier <dionoea@videolan.org> | 2007-09-30 21:12:33 +0000 |
commit | 7b7b9310e70920ce399a1becf87cf15636431c0f (patch) | |
tree | 12469d222778c9c8c1b6ec0c49927e7d46d61303 /firmware | |
parent | 473b56bd30af40ee5c73ab1659af7555d54441e4 (diff) | |
download | rockbox-7b7b9310e70920ce399a1becf87cf15636431c0f.tar.gz rockbox-7b7b9310e70920ce399a1becf87cf15636431c0f.zip |
Save a few bytes in the line selector style handling code.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14927 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/drivers/lcd-16bit.c | 55 | ||||
-rw-r--r-- | firmware/export/lcd.h | 3 | ||||
-rw-r--r-- | firmware/export/scroll_engine.h | 7 | ||||
-rw-r--r-- | firmware/scroll_engine.c | 10 |
4 files changed, 39 insertions, 36 deletions
diff --git a/firmware/drivers/lcd-16bit.c b/firmware/drivers/lcd-16bit.c index f748b4027c..e838d5106c 100644 --- a/firmware/drivers/lcd-16bit.c +++ b/firmware/drivers/lcd-16bit.c | |||
@@ -910,16 +910,7 @@ void lcd_puts_scroll_style_offset(int x, int y, const unsigned char *string, | |||
910 | s = &lcd_scroll_info.scroll[y]; | 910 | s = &lcd_scroll_info.scroll[y]; |
911 | 911 | ||
912 | s->start_tick = current_tick + lcd_scroll_info.delay; | 912 | s->start_tick = current_tick + lcd_scroll_info.delay; |
913 | s->invert = false; | 913 | s->style = style; |
914 | if (style & STYLE_INVERT) { | ||
915 | s->invert = 1; | ||
916 | } | ||
917 | else if (style & STYLE_COLORBAR) { | ||
918 | s->invert = 2; | ||
919 | } | ||
920 | else if (style & STYLE_GRADIENT) { | ||
921 | s->invert = 3; | ||
922 | } | ||
923 | lcd_puts_style_offset(x,y,string,style,offset); | 914 | lcd_puts_style_offset(x,y,string,style,offset); |
924 | 915 | ||
925 | lcd_getstringsize(string, &w, &h); | 916 | lcd_getstringsize(string, &w, &h); |
@@ -956,8 +947,6 @@ void lcd_puts_scroll_style_offset(int x, int y, const unsigned char *string, | |||
956 | s->offset = offset; | 947 | s->offset = offset; |
957 | s->startx = xmargin + x * s->width / s->len; | 948 | s->startx = xmargin + x * s->width / s->len; |
958 | s->backward = false; | 949 | s->backward = false; |
959 | s->line_color = (style&STYLE_COLORED)? | ||
960 | (style&STYLE_COLOR_MASK): -1; | ||
961 | lcd_scroll_info.lines |= (1<<y); | 950 | lcd_scroll_info.lines |= (1<<y); |
962 | } | 951 | } |
963 | else | 952 | else |
@@ -986,13 +975,13 @@ void lcd_scroll_fn(void) | |||
986 | if (TIME_BEFORE(current_tick, s->start_tick)) | 975 | if (TIME_BEFORE(current_tick, s->start_tick)) |
987 | continue; | 976 | continue; |
988 | 977 | ||
989 | if (s->line_color >= 0) { | 978 | if (s->style&STYLE_COLORED) { |
990 | if (s->invert) { | 979 | if (s->style&STYLE_MODE_MASK) { |
991 | fg_pattern = old_fgcolor; | 980 | fg_pattern = old_fgcolor; |
992 | bg_pattern = s->line_color; | 981 | bg_pattern = s->style&STYLE_COLOR_MASK; |
993 | } | 982 | } |
994 | else { | 983 | else { |
995 | fg_pattern = s->line_color; | 984 | fg_pattern = s->style&STYLE_COLOR_MASK; |
996 | bg_pattern = old_bgcolor; | 985 | bg_pattern = old_bgcolor; |
997 | } | 986 | } |
998 | } | 987 | } |
@@ -1027,20 +1016,26 @@ void lcd_scroll_fn(void) | |||
1027 | } | 1016 | } |
1028 | 1017 | ||
1029 | lastmode = drawmode; | 1018 | lastmode = drawmode; |
1030 | drawmode = s->invert == 1 ? | 1019 | switch (s->style&STYLE_MODE_MASK) { |
1031 | (DRMODE_SOLID|DRMODE_INVERSEVID) : DRMODE_SOLID; | 1020 | case STYLE_INVERT: |
1032 | if (s->invert == 2) { | 1021 | drawmode = DRMODE_SOLID|DRMODE_INVERSEVID; |
1033 | /* Solid colour line selector */ | 1022 | break; |
1034 | drawmode = DRMODE_FG; | 1023 | case STYLE_COLORBAR: |
1035 | fg_pattern = lss_pattern; | 1024 | /* Solid colour line selector */ |
1036 | lcd_fillrect(0, ypos, LCD_WIDTH, pf->height); | 1025 | drawmode = DRMODE_FG; |
1037 | fg_pattern = lst_pattern; | 1026 | fg_pattern = lss_pattern; |
1038 | } | 1027 | lcd_fillrect(0, ypos, LCD_WIDTH, pf->height); |
1039 | else if (s->invert == 3) { | 1028 | fg_pattern = lst_pattern; |
1040 | /* Gradient line selector */ | 1029 | break; |
1041 | drawmode = DRMODE_FG; | 1030 | case STYLE_GRADIENT: |
1042 | lcd_gradient_rect(0, LCD_WIDTH, ypos, (signed)pf->height); | 1031 | /* Gradient line selector */ |
1043 | fg_pattern = lst_pattern; | 1032 | drawmode = DRMODE_FG; |
1033 | lcd_gradient_rect(0, LCD_WIDTH, ypos, (signed)pf->height); | ||
1034 | fg_pattern = lst_pattern; | ||
1035 | break; | ||
1036 | default: | ||
1037 | drawmode = DRMODE_SOLID; | ||
1038 | break; | ||
1044 | } | 1039 | } |
1045 | lcd_putsxyofs(xpos, ypos, s->offset, s->line); | 1040 | lcd_putsxyofs(xpos, ypos, s->offset, s->line); |
1046 | drawmode = lastmode; | 1041 | drawmode = lastmode; |
diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h index eb67a12211..b64e506981 100644 --- a/firmware/export/lcd.h +++ b/firmware/export/lcd.h | |||
@@ -25,10 +25,11 @@ | |||
25 | #include "config.h" | 25 | #include "config.h" |
26 | 26 | ||
27 | #define STYLE_DEFAULT 0x00000000 | 27 | #define STYLE_DEFAULT 0x00000000 |
28 | #define STYLE_INVERT 0x20000000 | ||
29 | #define STYLE_COLORED 0x10000000 | 28 | #define STYLE_COLORED 0x10000000 |
29 | #define STYLE_INVERT 0x20000000 | ||
30 | #define STYLE_COLORBAR 0x40000000 | 30 | #define STYLE_COLORBAR 0x40000000 |
31 | #define STYLE_GRADIENT 0x80000000 | 31 | #define STYLE_GRADIENT 0x80000000 |
32 | #define STYLE_MODE_MASK 0xF0000000 | ||
32 | #define STYLE_COLOR_MASK 0x0000FFFF | 33 | #define STYLE_COLOR_MASK 0x0000FFFF |
33 | 34 | ||
34 | #ifdef SIMULATOR | 35 | #ifdef SIMULATOR |
diff --git a/firmware/export/scroll_engine.h b/firmware/export/scroll_engine.h index f40a00f96c..238641c08c 100644 --- a/firmware/export/scroll_engine.h +++ b/firmware/export/scroll_engine.h | |||
@@ -44,17 +44,14 @@ struct scrollinfo | |||
44 | #ifdef HAVE_LCD_BITMAP | 44 | #ifdef HAVE_LCD_BITMAP |
45 | int width; /* length of line in pixels */ | 45 | int width; /* length of line in pixels */ |
46 | #ifdef HAVE_LCD_COLOR | 46 | #ifdef HAVE_LCD_COLOR |
47 | int invert; /* invert the scrolled text */ | 47 | int style; /* line style */ |
48 | #else | 48 | #else |
49 | bool invert; | 49 | bool invert; /* invert the scrolled text */ |
50 | #endif | 50 | #endif |
51 | #endif/* HAVE_LCD_BITMAP */ | 51 | #endif/* HAVE_LCD_BITMAP */ |
52 | bool backward; /* scroll presently forward or backward? */ | 52 | bool backward; /* scroll presently forward or backward? */ |
53 | bool bidir; | 53 | bool bidir; |
54 | long start_tick; | 54 | long start_tick; |
55 | #ifdef HAVE_LCD_COLOR | ||
56 | int line_color; | ||
57 | #endif | ||
58 | }; | 55 | }; |
59 | 56 | ||
60 | struct scroll_screen_info | 57 | struct scroll_screen_info |
diff --git a/firmware/scroll_engine.c b/firmware/scroll_engine.c index d4a2e174cc..e21cb8b3ae 100644 --- a/firmware/scroll_engine.c +++ b/firmware/scroll_engine.c | |||
@@ -99,7 +99,12 @@ void lcd_invertscroll(int x, int y) | |||
99 | if((unsigned)y>=LCD_SCROLLABLE_LINES) return; | 99 | if((unsigned)y>=LCD_SCROLLABLE_LINES) return; |
100 | 100 | ||
101 | s = &lcd_scroll_info.scroll[y]; | 101 | s = &lcd_scroll_info.scroll[y]; |
102 | #ifdef HAVE_LCD_COLOR | ||
103 | s->style = !s->style; /* FIXME: now that the setting isn't bool this seems | ||
104 | flawed. */ | ||
105 | #else | ||
102 | s->invert = !s->invert; | 106 | s->invert = !s->invert; |
107 | #endif | ||
103 | } | 108 | } |
104 | 109 | ||
105 | void lcd_scroll_step(int step) | 110 | void lcd_scroll_step(int step) |
@@ -142,7 +147,12 @@ void lcd_remote_invertscroll(int x, int y) | |||
142 | if((unsigned)y>=LCD_REMOTE_SCROLLABLE_LINES) return; | 147 | if((unsigned)y>=LCD_REMOTE_SCROLLABLE_LINES) return; |
143 | 148 | ||
144 | s = &lcd_remote_scroll_info.scroll[y]; | 149 | s = &lcd_remote_scroll_info.scroll[y]; |
150 | #ifdef HAVE_LCD_COLOR | ||
151 | s->style = !s->style; /* FIXME: now that the setting isn't bool this seems | ||
152 | flawed. */ | ||
153 | #else | ||
145 | s->invert = !s->invert; | 154 | s->invert = !s->invert; |
155 | #endif | ||
146 | } | 156 | } |
147 | 157 | ||
148 | void lcd_remote_stop_scroll(void) | 158 | void lcd_remote_stop_scroll(void) |