diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2010-06-04 13:22:50 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2010-06-04 13:22:50 +0000 |
commit | e63e84a5dfb18e9b7eca8dabcd2d58ceac342529 (patch) | |
tree | 25989313fa6d7ea9f59ae8bdb1e56fe69f5e1a24 /apps/plugins/lib | |
parent | bc26fe7a96d6f5e443003cb871dcb4bfba525352 (diff) | |
download | rockbox-e63e84a5dfb18e9b7eca8dabcd2d58ceac342529.tar.gz rockbox-e63e84a5dfb18e9b7eca8dabcd2d58ceac342529.zip |
Convert some more stuff to mylcd_ and support pgfx as well.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26543 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/lib')
-rw-r--r-- | apps/plugins/lib/mylcd.h | 91 |
1 files changed, 66 insertions, 25 deletions
diff --git a/apps/plugins/lib/mylcd.h b/apps/plugins/lib/mylcd.h index 8b6223c30b..48e8ca1d47 100644 --- a/apps/plugins/lib/mylcd.h +++ b/apps/plugins/lib/mylcd.h | |||
@@ -9,7 +9,7 @@ | |||
9 | * | 9 | * |
10 | * Copyright (c) 2010 Michael Sevakis | 10 | * Copyright (c) 2010 Michael Sevakis |
11 | * | 11 | * |
12 | * Helper defines for writing code for both grey and color targets. | 12 | * Helper defines for writing code for pgfx, grey and color targets. |
13 | * | 13 | * |
14 | * This program is free software; you can redistribute it and/or | 14 | * This program is free software; you can redistribute it and/or |
15 | * modify it under the terms of the GNU General Public License | 15 | * modify it under the terms of the GNU General Public License |
@@ -24,63 +24,90 @@ | |||
24 | #define MYLCD_H | 24 | #define MYLCD_H |
25 | 25 | ||
26 | /*** | 26 | /*** |
27 | * Most functions are, other than color depth, equivalent between grey, lcd | 27 | * Most functions are, other than color depth, equivalent between pgfx, grey, |
28 | * and xlcd and most of the time the caller need not be concerned with which | 28 | * lcd and xlcd and most of the time the caller need not be concerned with |
29 | * is actually called, making code nicer to read and maintain. | 29 | * which is actually called, making code nicer to read and maintain. |
30 | * | 30 | * |
31 | * Unbuffered routines revert to standard rb->lcd_XXXX funtions on color | 31 | * Unbuffered routines revert to standard rb->lcd_XXXX funtions on color |
32 | * targets. On color, mylcd_ub_update_XXXX refer to the proper update | 32 | * targets. On color, mylcd_ub_update_XXXX refer to the proper update |
33 | * functions, otherwise they are no-ops. | 33 | * functions, otherwise they are no-ops. |
34 | * | ||
35 | * lib/playergfx.h or lib/grey.h should be included before including this | ||
36 | * header. For bitmap LCD's, defaults to rb->lcd_XXXX otherwise. | ||
34 | */ | 37 | */ |
38 | #if defined (HAVE_LCD_CHARCELLS) && defined(__PGFX_H__) | ||
39 | #define MYLCD_CFG_PGFX /* using PGFX */ | ||
40 | #define mylcd_(fn) pgfx_##fn | ||
41 | #define mylcd_ub_(fn) pgfx_##fn | ||
35 | 42 | ||
36 | #ifdef HAVE_LCD_COLOR | 43 | #elif defined (HAVE_LCD_BITMAP) && (LCD_DEPTH < 8) && defined(__GREY_H__) |
37 | #define mylcd_(fn) rb->lcd_##fn | 44 | #define MYLCD_CFG_GREYLIB /* using greylib */ |
38 | #define myxlcd_(fn) xlcd_##fn | ||
39 | #define mylcd_ub_(fn) rb->lcd_##fn | ||
40 | #define myxlcd_ub_(fn) xlcd_##fn | ||
41 | #else | ||
42 | #define mylcd_(fn) grey_##fn | 45 | #define mylcd_(fn) grey_##fn |
43 | #define myxlcd_(fn) grey_##fn | 46 | #define myxlcd_(fn) grey_##fn |
44 | #define mylcd_ub_(fn) grey_ub_##fn | 47 | #define mylcd_ub_(fn) grey_ub_##fn |
45 | #define myxlcd_ub_(fn) grey_ub_##fn | 48 | #define myxlcd_ub_(fn) grey_ub_##fn |
46 | #endif | ||
47 | 49 | ||
48 | /* Common colors */ | 50 | /* Common colors */ |
49 | #ifdef HAVE_LCD_COLOR | 51 | #define MYLCD_BLACK GREY_BLACK |
52 | #define MYLCD_DARKGRAY GREY_DARKGRAY | ||
53 | #define MYLCD_LIGHTGRAY GREY_LIGHTGRAY | ||
54 | #define MYLCD_WHITE GREY_WHITE | ||
55 | #define MYLCD_DEFAULT_FG GREY_BLACK | ||
56 | #define MYLCD_DEFAULT_BG GREY_WHITE | ||
57 | |||
58 | #elif defined (HAVE_LCD_BITMAP) | ||
59 | #define MYLCD_CFG_RB_XLCD /* using standard (X)LCD routines */ | ||
60 | #define mylcd_(fn) rb->lcd_##fn | ||
61 | #define myxlcd_(fn) xlcd_##fn | ||
62 | #define mylcd_ub_(fn) rb->lcd_##fn | ||
63 | #define myxlcd_ub_(fn) xlcd_##fn | ||
64 | |||
65 | /* Common colors */ | ||
50 | #define MYLCD_BLACK LCD_BLACK | 66 | #define MYLCD_BLACK LCD_BLACK |
51 | #define MYLCD_DARKGRAY LCD_DARKGRAY | 67 | #define MYLCD_DARKGRAY LCD_DARKGRAY |
52 | #define MYLCD_LIGHTGRAY LCD_LIGHTGRAY | 68 | #define MYLCD_LIGHTGRAY LCD_LIGHTGRAY |
53 | #define MYLCD_WHITE LCD_WHITE | 69 | #define MYLCD_WHITE LCD_WHITE |
54 | #define MYLCD_DEFAULT_FG LCD_DEFAULT_FG | 70 | #define MYLCD_DEFAULT_FG LCD_DEFAULT_FG |
55 | #define MYLCD_DEFAULT_BG LCD_DEFAULT_BG | 71 | #define MYLCD_DEFAULT_BG LCD_DEFAULT_BG |
72 | |||
56 | #else | 73 | #else |
57 | #define MYLCD_BLACK GREY_BLACK | 74 | #error Configuration not supported! Did you forget to include the correct lib header? |
58 | #define MYLCD_DARKGRAY GREY_DARKGRAY | 75 | #endif /* end LCD type selection */ |
59 | #define MYLCD_LIGHTGRAY GREY_LIGHTGRAY | ||
60 | #define MYLCD_WHITE GREY_WHITE | ||
61 | #define MYLCD_DEFAULT_FG GREY_BLACK | ||
62 | #define MYLCD_DEFAULT_BG GREY_WHITE | ||
63 | #endif /* HAVE_LCD_COLOR */ | ||
64 | 76 | ||
65 | /* Update functions */ | 77 | /* Update functions */ |
66 | #define mylcd_update mylcd_(update) | 78 | #define mylcd_update mylcd_(update) |
79 | #ifdef HAVE_LCD_BITMAP | ||
67 | #define mylcd_update_rect mylcd_(update_rect) | 80 | #define mylcd_update_rect mylcd_(update_rect) |
68 | |||
69 | /* Update functions - unbuffered : special handling for these */ | ||
70 | #ifdef HAVE_LCD_COLOR | ||
71 | #define mylcd_ub_update() rb->lcd_update() | ||
72 | #define mylcd_ub_update_rect(...) rb->lcd_update_rect(__VA_ARGS__) | ||
73 | #else | 81 | #else |
74 | /* Still evaluate args like functions */ | 82 | static inline void mylcd_update_rect(int x, int y, int w, int h) |
83 | { (void)x; (void)y; (void)w; (void)h; pgfx_update(); } | ||
84 | #endif /* HAVE_LCD_BITMAP */ | ||
85 | |||
86 | /* Update functions - unbuffered : special handling for these | ||
87 | * It is desirable to still evaluate arguments even if there will | ||
88 | * be no function call, just in case they have side-effects. | ||
89 | */ | ||
90 | #if defined (MYLCD_CFG_PGFX) | ||
91 | #define mylcd_ub_update pgfx_update | ||
92 | static inline void mylcd_ub_update_rect(int x, int y, int w, int h) | ||
93 | { (void)x; (void)y; (void)w; (void)h; pgfx_update(); } | ||
94 | |||
95 | #elif defined (MYLCD_CFG_GREYLIB) | ||
75 | static inline void mylcd_ub_update(void) | 96 | static inline void mylcd_ub_update(void) |
76 | {} | 97 | {} |
77 | static inline void mylcd_ub_update_rect(int x, int y, int w, int h) | 98 | static inline void mylcd_ub_update_rect(int x, int y, int w, int h) |
78 | { (void)x; (void)y; (void)w; (void)h; } | 99 | { (void)x; (void)y; (void)w; (void)h; } |
100 | |||
101 | #else /* color or RB default */ | ||
102 | #define mylcd_ub_update rb->lcd_update | ||
103 | #define mylcd_ub_update_rect rb->lcd_update_rect | ||
79 | #endif | 104 | #endif |
80 | 105 | ||
81 | /* Parameter handling */ | 106 | /* Parameter handling */ |
82 | #define mylcd_set_drawmode mylcd_(set_drawmode) | 107 | #define mylcd_set_drawmode mylcd_(set_drawmode) |
83 | #define mylcd_get_drawmode mylcd_(get_drawmode) | 108 | #define mylcd_get_drawmode mylcd_(get_drawmode) |
109 | |||
110 | #ifdef HAVE_LCD_BITMAP | ||
84 | #define mylcd_set_foreground mylcd_(set_foreground) | 111 | #define mylcd_set_foreground mylcd_(set_foreground) |
85 | #define mylcd_get_foreground mylcd_(get_foreground) | 112 | #define mylcd_get_foreground mylcd_(get_foreground) |
86 | #define mylcd_set_background mylcd_(set_background) | 113 | #define mylcd_set_background mylcd_(set_background) |
@@ -88,6 +115,7 @@ static inline void mylcd_ub_update_rect(int x, int y, int w, int h) | |||
88 | #define mylcd_set_drawinfo mylcd_(set_drawinfo) | 115 | #define mylcd_set_drawinfo mylcd_(set_drawinfo) |
89 | #define mylcd_setfont mylcd_(setfont) | 116 | #define mylcd_setfont mylcd_(setfont) |
90 | #define mylcd_getstringsize mylcd_(getstringsize) | 117 | #define mylcd_getstringsize mylcd_(getstringsize) |
118 | #endif /* HAVE_LCD_BITMAP */ | ||
91 | 119 | ||
92 | /* Whole display */ | 120 | /* Whole display */ |
93 | #define mylcd_clear_display mylcd_(clear_display) | 121 | #define mylcd_clear_display mylcd_(clear_display) |
@@ -106,37 +134,50 @@ static inline void mylcd_ub_update_rect(int x, int y, int w, int h) | |||
106 | 134 | ||
107 | /* Filled Primitives */ | 135 | /* Filled Primitives */ |
108 | #define mylcd_fillrect mylcd_(fillrect) | 136 | #define mylcd_fillrect mylcd_(fillrect) |
137 | #ifdef HAVE_LCD_BITMAP | ||
109 | #define mylcd_filltriangle myxlcd_(filltriangle) | 138 | #define mylcd_filltriangle myxlcd_(filltriangle) |
139 | #endif /* HAVE_LCD_BITMAP */ | ||
110 | 140 | ||
111 | /* Bitmaps */ | 141 | /* Bitmaps */ |
112 | #define mylcd_mono_bitmap_part mylcd_(mono_bitmap_part) | 142 | #define mylcd_mono_bitmap_part mylcd_(mono_bitmap_part) |
113 | #define mylcd_mono_bitmap mylcd_(mono_bitmap) | 143 | #define mylcd_mono_bitmap mylcd_(mono_bitmap) |
144 | |||
145 | #ifdef HAVE_LCD_BITMAP | ||
114 | #define mylcd_gray_bitmap_part myxlcd_(gray_bitmap_part) | 146 | #define mylcd_gray_bitmap_part myxlcd_(gray_bitmap_part) |
115 | #define mylcd_gray_bitmap myxlcd_(gray_bitmap) | 147 | #define mylcd_gray_bitmap myxlcd_(gray_bitmap) |
116 | #if 0 /* possible, but not implemented in greylib */ | 148 | #if 0 /* possible, but not implemented in greylib */ |
117 | #define mylcd_color_bitmap_part myxlcd_(color_bitmap_part) | 149 | #define mylcd_color_bitmap_part myxlcd_(color_bitmap_part) |
118 | #define mylcd_color_bitmap myxlcd_(color_bitmap) | 150 | #define mylcd_color_bitmap myxlcd_(color_bitmap) |
119 | #endif | 151 | #endif |
152 | #endif /* HAVE_LCD_BITMAP */ | ||
120 | 153 | ||
121 | /* Bitmaps - unbuffered */ | 154 | /* Bitmaps - unbuffered */ |
155 | #ifdef HAVE_LCD_BITMAP | ||
122 | #define mylcd_ub_gray_bitmap_part myxlcd_ub_(gray_bitmap_part) | 156 | #define mylcd_ub_gray_bitmap_part myxlcd_ub_(gray_bitmap_part) |
123 | #define mylcd_ub_gray_bitmap myxlcd_ub_(gray_bitmap) | 157 | #define mylcd_ub_gray_bitmap myxlcd_ub_(gray_bitmap) |
158 | #endif /* HAVE_LCD_BITMAP */ | ||
124 | 159 | ||
125 | /* Text */ | 160 | /* Text */ |
126 | /* lcd_putsxyofs is static'ed in the core for now on color */ | 161 | /* lcd_putsxyofs is static'ed in the core for now on color */ |
162 | #ifdef HAVE_LCD_BITMAP | ||
127 | #define mylcd_putsxyofs mylcd_(putsxyofs) | 163 | #define mylcd_putsxyofs mylcd_(putsxyofs) |
128 | #define mylcd_putsxy mylcd_(putsxy) | 164 | #define mylcd_putsxy mylcd_(putsxy) |
165 | #endif /* HAVE_LCD_BITMAP */ | ||
129 | 166 | ||
130 | /* Scrolling */ | 167 | /* Scrolling */ |
168 | #ifdef HAVE_LCD_BITMAP | ||
131 | #define mylcd_scroll_left myxlcd_(scroll_left) | 169 | #define mylcd_scroll_left myxlcd_(scroll_left) |
132 | #define mylcd_scroll_right myxlcd_(scroll_right) | 170 | #define mylcd_scroll_right myxlcd_(scroll_right) |
133 | #define mylcd_scroll_up myxlcd_(scroll_up) | 171 | #define mylcd_scroll_up myxlcd_(scroll_up) |
134 | #define mylcd_scroll_down myxlcd_(scroll_down) | 172 | #define mylcd_scroll_down myxlcd_(scroll_down) |
173 | #endif /* HAVE_LCD_BITMAP */ | ||
135 | 174 | ||
136 | /* Scrolling - unbuffered */ | 175 | /* Scrolling - unbuffered */ |
176 | #ifdef HAVE_LCD_BITMAP | ||
137 | #define mylcd_ub_scroll_left myxlcd_ub_(scroll_left) | 177 | #define mylcd_ub_scroll_left myxlcd_ub_(scroll_left) |
138 | #define mylcd_ub_scroll_right myxlcd_ub_(scroll_right) | 178 | #define mylcd_ub_scroll_right myxlcd_ub_(scroll_right) |
139 | #define mylcd_ub_scroll_up myxlcd_ub_(scroll_up) | 179 | #define mylcd_ub_scroll_up myxlcd_ub_(scroll_up) |
140 | #define mylcd_ub_scroll_down myxlcd_ub_(scroll_down) | 180 | #define mylcd_ub_scroll_down myxlcd_ub_(scroll_down) |
181 | #endif /* HAVE_LCD_BITMAP */ | ||
141 | 182 | ||
142 | #endif /* MYLCD_H */ | 183 | #endif /* MYLCD_H */ |