diff options
Diffstat (limited to 'apps/plugins/lib')
-rw-r--r-- | apps/plugins/lib/mylcd.h | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/apps/plugins/lib/mylcd.h b/apps/plugins/lib/mylcd.h new file mode 100644 index 0000000000..8b6223c30b --- /dev/null +++ b/apps/plugins/lib/mylcd.h | |||
@@ -0,0 +1,142 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (c) 2010 Michael Sevakis | ||
11 | * | ||
12 | * Helper defines for writing code for both grey and color targets. | ||
13 | * | ||
14 | * This program is free software; you can redistribute it and/or | ||
15 | * modify it under the terms of the GNU General Public License | ||
16 | * as published by the Free Software Foundation; either version 2 | ||
17 | * of the License, or (at your option) any later version. | ||
18 | * | ||
19 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
20 | * KIND, either express or implied. | ||
21 | * | ||
22 | ****************************************************************************/ | ||
23 | #ifndef MYLCD_H | ||
24 | #define MYLCD_H | ||
25 | |||
26 | /*** | ||
27 | * Most functions are, other than color depth, equivalent between grey, lcd | ||
28 | * and xlcd and most of the time the caller need not be concerned with which | ||
29 | * is actually called, making code nicer to read and maintain. | ||
30 | * | ||
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 | ||
33 | * functions, otherwise they are no-ops. | ||
34 | */ | ||
35 | |||
36 | #ifdef HAVE_LCD_COLOR | ||
37 | #define mylcd_(fn) rb->lcd_##fn | ||
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 | ||
43 | #define myxlcd_(fn) grey_##fn | ||
44 | #define mylcd_ub_(fn) grey_ub_##fn | ||
45 | #define myxlcd_ub_(fn) grey_ub_##fn | ||
46 | #endif | ||
47 | |||
48 | /* Common colors */ | ||
49 | #ifdef HAVE_LCD_COLOR | ||
50 | #define MYLCD_BLACK LCD_BLACK | ||
51 | #define MYLCD_DARKGRAY LCD_DARKGRAY | ||
52 | #define MYLCD_LIGHTGRAY LCD_LIGHTGRAY | ||
53 | #define MYLCD_WHITE LCD_WHITE | ||
54 | #define MYLCD_DEFAULT_FG LCD_DEFAULT_FG | ||
55 | #define MYLCD_DEFAULT_BG LCD_DEFAULT_BG | ||
56 | #else | ||
57 | #define MYLCD_BLACK GREY_BLACK | ||
58 | #define MYLCD_DARKGRAY GREY_DARKGRAY | ||
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 | |||
65 | /* Update functions */ | ||
66 | #define mylcd_update mylcd_(update) | ||
67 | #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 | ||
74 | /* Still evaluate args like functions */ | ||
75 | static inline void mylcd_ub_update(void) | ||
76 | {} | ||
77 | static inline void mylcd_ub_update_rect(int x, int y, int w, int h) | ||
78 | { (void)x; (void)y; (void)w; (void)h; } | ||
79 | #endif | ||
80 | |||
81 | /* Parameter handling */ | ||
82 | #define mylcd_set_drawmode mylcd_(set_drawmode) | ||
83 | #define mylcd_get_drawmode mylcd_(get_drawmode) | ||
84 | #define mylcd_set_foreground mylcd_(set_foreground) | ||
85 | #define mylcd_get_foreground mylcd_(get_foreground) | ||
86 | #define mylcd_set_background mylcd_(set_background) | ||
87 | #define mylcd_get_background mylcd_(get_background) | ||
88 | #define mylcd_set_drawinfo mylcd_(set_drawinfo) | ||
89 | #define mylcd_setfont mylcd_(setfont) | ||
90 | #define mylcd_getstringsize mylcd_(getstringsize) | ||
91 | |||
92 | /* Whole display */ | ||
93 | #define mylcd_clear_display mylcd_(clear_display) | ||
94 | |||
95 | /* Whole display - unbuffered */ | ||
96 | #define mylcd_ub_clear_display mylcd_ub_(clear_display) | ||
97 | |||
98 | /* Pixel */ | ||
99 | #define mylcd_drawpixel mylcd_(drawpixel) | ||
100 | |||
101 | /* Lines */ | ||
102 | #define mylcd_drawline mylcd_(drawline) | ||
103 | #define mylcd_hline mylcd_(hline) | ||
104 | #define mylcd_vline mylcd_(vline) | ||
105 | #define mylcd_drawrect mylcd_(drawrect) | ||
106 | |||
107 | /* Filled Primitives */ | ||
108 | #define mylcd_fillrect mylcd_(fillrect) | ||
109 | #define mylcd_filltriangle myxlcd_(filltriangle) | ||
110 | |||
111 | /* Bitmaps */ | ||
112 | #define mylcd_mono_bitmap_part mylcd_(mono_bitmap_part) | ||
113 | #define mylcd_mono_bitmap mylcd_(mono_bitmap) | ||
114 | #define mylcd_gray_bitmap_part myxlcd_(gray_bitmap_part) | ||
115 | #define mylcd_gray_bitmap myxlcd_(gray_bitmap) | ||
116 | #if 0 /* possible, but not implemented in greylib */ | ||
117 | #define mylcd_color_bitmap_part myxlcd_(color_bitmap_part) | ||
118 | #define mylcd_color_bitmap myxlcd_(color_bitmap) | ||
119 | #endif | ||
120 | |||
121 | /* Bitmaps - unbuffered */ | ||
122 | #define mylcd_ub_gray_bitmap_part myxlcd_ub_(gray_bitmap_part) | ||
123 | #define mylcd_ub_gray_bitmap myxlcd_ub_(gray_bitmap) | ||
124 | |||
125 | /* Text */ | ||
126 | /* lcd_putsxyofs is static'ed in the core for now on color */ | ||
127 | #define mylcd_putsxyofs mylcd_(putsxyofs) | ||
128 | #define mylcd_putsxy mylcd_(putsxy) | ||
129 | |||
130 | /* Scrolling */ | ||
131 | #define mylcd_scroll_left myxlcd_(scroll_left) | ||
132 | #define mylcd_scroll_right myxlcd_(scroll_right) | ||
133 | #define mylcd_scroll_up myxlcd_(scroll_up) | ||
134 | #define mylcd_scroll_down myxlcd_(scroll_down) | ||
135 | |||
136 | /* Scrolling - unbuffered */ | ||
137 | #define mylcd_ub_scroll_left myxlcd_ub_(scroll_left) | ||
138 | #define mylcd_ub_scroll_right myxlcd_ub_(scroll_right) | ||
139 | #define mylcd_ub_scroll_up myxlcd_ub_(scroll_up) | ||
140 | #define mylcd_ub_scroll_down myxlcd_ub_(scroll_down) | ||
141 | |||
142 | #endif /* MYLCD_H */ | ||