summaryrefslogtreecommitdiff
path: root/apps/plugins/lib
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2010-06-04 13:22:50 +0000
committerMichael Sevakis <jethead71@rockbox.org>2010-06-04 13:22:50 +0000
commite63e84a5dfb18e9b7eca8dabcd2d58ceac342529 (patch)
tree25989313fa6d7ea9f59ae8bdb1e56fe69f5e1a24 /apps/plugins/lib
parentbc26fe7a96d6f5e443003cb871dcb4bfba525352 (diff)
downloadrockbox-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.h91
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 */ 82static 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
92static 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)
75static inline void mylcd_ub_update(void) 96static inline void mylcd_ub_update(void)
76 {} 97 {}
77static inline void mylcd_ub_update_rect(int x, int y, int w, int h) 98static 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 */