···366366#if LCD_DEPTH < 8
367367#define USEGSLIB
368368#include <lib/grey.h>
369369-#define MYLCD(fn) grey_ub_ ## fn
370370-#define MYLCD_UPDATE()
371371-#define MYXLCD(fn) grey_ub_ ## fn
372369#else
373370#include <lib/xlcd.h>
374374-#define MYLCD(fn) rb->lcd_ ## fn
375375-#define MYLCD_UPDATE() rb->lcd_update();
376376-#define MYXLCD(fn) xlcd_ ## fn
377371#endif
372372+373373+#include <lib/mylcd.h>
378374379375/* Min memory allowing us to use the plugin buffer
380376 * and thus not stopping the music
+1-1
apps/plugins/imageviewer/jpeg/jpeg.c
···9494 width, height,
9595 settings.jpeg_colour_mode, settings.jpeg_dither_mode);
9696#else
9797- MYXLCD(gray_bitmap_part)(
9797+ mylcd_ub_gray_bitmap_part(
9898 pdisp->bitmap[0], info->x + x, info->y + y, pdisp->stride,
9999 x + MAX(0, (LCD_WIDTH-info->width)/2),
100100 y + MAX(0, (LCD_HEIGHT-info->height)/2),
+66-25
apps/plugins/lib/mylcd.h
···99 *
1010 * Copyright (c) 2010 Michael Sevakis
1111 *
1212- * Helper defines for writing code for both grey and color targets.
1212+ * Helper defines for writing code for pgfx, grey and color targets.
1313 *
1414 * This program is free software; you can redistribute it and/or
1515 * modify it under the terms of the GNU General Public License
···2424#define MYLCD_H
25252626/***
2727- * Most functions are, other than color depth, equivalent between grey, lcd
2828- * and xlcd and most of the time the caller need not be concerned with which
2929- * is actually called, making code nicer to read and maintain.
2727+ * Most functions are, other than color depth, equivalent between pgfx, grey,
2828+ * lcd and xlcd and most of the time the caller need not be concerned with
2929+ * which is actually called, making code nicer to read and maintain.
3030 *
3131 * Unbuffered routines revert to standard rb->lcd_XXXX funtions on color
3232 * targets. On color, mylcd_ub_update_XXXX refer to the proper update
3333 * functions, otherwise they are no-ops.
3434+ *
3535+ * lib/playergfx.h or lib/grey.h should be included before including this
3636+ * header. For bitmap LCD's, defaults to rb->lcd_XXXX otherwise.
3437 */
3838+#if defined (HAVE_LCD_CHARCELLS) && defined(__PGFX_H__)
3939+#define MYLCD_CFG_PGFX /* using PGFX */
4040+#define mylcd_(fn) pgfx_##fn
4141+#define mylcd_ub_(fn) pgfx_##fn
35423636-#ifdef HAVE_LCD_COLOR
3737-#define mylcd_(fn) rb->lcd_##fn
3838-#define myxlcd_(fn) xlcd_##fn
3939-#define mylcd_ub_(fn) rb->lcd_##fn
4040-#define myxlcd_ub_(fn) xlcd_##fn
4141-#else
4343+#elif defined (HAVE_LCD_BITMAP) && (LCD_DEPTH < 8) && defined(__GREY_H__)
4444+#define MYLCD_CFG_GREYLIB /* using greylib */
4245#define mylcd_(fn) grey_##fn
4346#define myxlcd_(fn) grey_##fn
4447#define mylcd_ub_(fn) grey_ub_##fn
4548#define myxlcd_ub_(fn) grey_ub_##fn
4646-#endif
4949+5050+/* Common colors */
5151+#define MYLCD_BLACK GREY_BLACK
5252+#define MYLCD_DARKGRAY GREY_DARKGRAY
5353+#define MYLCD_LIGHTGRAY GREY_LIGHTGRAY
5454+#define MYLCD_WHITE GREY_WHITE
5555+#define MYLCD_DEFAULT_FG GREY_BLACK
5656+#define MYLCD_DEFAULT_BG GREY_WHITE
5757+5858+#elif defined (HAVE_LCD_BITMAP)
5959+#define MYLCD_CFG_RB_XLCD /* using standard (X)LCD routines */
6060+#define mylcd_(fn) rb->lcd_##fn
6161+#define myxlcd_(fn) xlcd_##fn
6262+#define mylcd_ub_(fn) rb->lcd_##fn
6363+#define myxlcd_ub_(fn) xlcd_##fn
47644865/* Common colors */
4949-#ifdef HAVE_LCD_COLOR
5066#define MYLCD_BLACK LCD_BLACK
5167#define MYLCD_DARKGRAY LCD_DARKGRAY
5268#define MYLCD_LIGHTGRAY LCD_LIGHTGRAY
5369#define MYLCD_WHITE LCD_WHITE
5470#define MYLCD_DEFAULT_FG LCD_DEFAULT_FG
5571#define MYLCD_DEFAULT_BG LCD_DEFAULT_BG
7272+5673#else
5757-#define MYLCD_BLACK GREY_BLACK
5858-#define MYLCD_DARKGRAY GREY_DARKGRAY
5959-#define MYLCD_LIGHTGRAY GREY_LIGHTGRAY
6060-#define MYLCD_WHITE GREY_WHITE
6161-#define MYLCD_DEFAULT_FG GREY_BLACK
6262-#define MYLCD_DEFAULT_BG GREY_WHITE
6363-#endif /* HAVE_LCD_COLOR */
7474+#error Configuration not supported! Did you forget to include the correct lib header?
7575+#endif /* end LCD type selection */
64766577/* Update functions */
6678#define mylcd_update mylcd_(update)
7979+#ifdef HAVE_LCD_BITMAP
6780#define mylcd_update_rect mylcd_(update_rect)
8181+#else
8282+static inline void mylcd_update_rect(int x, int y, int w, int h)
8383+ { (void)x; (void)y; (void)w; (void)h; pgfx_update(); }
8484+#endif /* HAVE_LCD_BITMAP */
68856969-/* Update functions - unbuffered : special handling for these */
7070-#ifdef HAVE_LCD_COLOR
7171-#define mylcd_ub_update() rb->lcd_update()
7272-#define mylcd_ub_update_rect(...) rb->lcd_update_rect(__VA_ARGS__)
7373-#else
7474-/* Still evaluate args like functions */
8686+/* Update functions - unbuffered : special handling for these
8787+ * It is desirable to still evaluate arguments even if there will
8888+ * be no function call, just in case they have side-effects.
8989+ */
9090+#if defined (MYLCD_CFG_PGFX)
9191+#define mylcd_ub_update pgfx_update
9292+static inline void mylcd_ub_update_rect(int x, int y, int w, int h)
9393+ { (void)x; (void)y; (void)w; (void)h; pgfx_update(); }
9494+9595+#elif defined (MYLCD_CFG_GREYLIB)
7596static inline void mylcd_ub_update(void)
7697 {}
7798static inline void mylcd_ub_update_rect(int x, int y, int w, int h)
7899 { (void)x; (void)y; (void)w; (void)h; }
100100+101101+#else /* color or RB default */
102102+#define mylcd_ub_update rb->lcd_update
103103+#define mylcd_ub_update_rect rb->lcd_update_rect
79104#endif
8010581106/* Parameter handling */
82107#define mylcd_set_drawmode mylcd_(set_drawmode)
83108#define mylcd_get_drawmode mylcd_(get_drawmode)
109109+110110+#ifdef HAVE_LCD_BITMAP
84111#define mylcd_set_foreground mylcd_(set_foreground)
85112#define mylcd_get_foreground mylcd_(get_foreground)
86113#define mylcd_set_background mylcd_(set_background)
···88115#define mylcd_set_drawinfo mylcd_(set_drawinfo)
89116#define mylcd_setfont mylcd_(setfont)
90117#define mylcd_getstringsize mylcd_(getstringsize)
118118+#endif /* HAVE_LCD_BITMAP */
9111992120/* Whole display */
93121#define mylcd_clear_display mylcd_(clear_display)
···106134107135/* Filled Primitives */
108136#define mylcd_fillrect mylcd_(fillrect)
137137+#ifdef HAVE_LCD_BITMAP
109138#define mylcd_filltriangle myxlcd_(filltriangle)
139139+#endif /* HAVE_LCD_BITMAP */
110140111141/* Bitmaps */
112142#define mylcd_mono_bitmap_part mylcd_(mono_bitmap_part)
113143#define mylcd_mono_bitmap mylcd_(mono_bitmap)
144144+145145+#ifdef HAVE_LCD_BITMAP
114146#define mylcd_gray_bitmap_part myxlcd_(gray_bitmap_part)
115147#define mylcd_gray_bitmap myxlcd_(gray_bitmap)
116148#if 0 /* possible, but not implemented in greylib */
117149#define mylcd_color_bitmap_part myxlcd_(color_bitmap_part)
118150#define mylcd_color_bitmap myxlcd_(color_bitmap)
119151#endif
152152+#endif /* HAVE_LCD_BITMAP */
120153121154/* Bitmaps - unbuffered */
155155+#ifdef HAVE_LCD_BITMAP
122156#define mylcd_ub_gray_bitmap_part myxlcd_ub_(gray_bitmap_part)
123157#define mylcd_ub_gray_bitmap myxlcd_ub_(gray_bitmap)
158158+#endif /* HAVE_LCD_BITMAP */
124159125160/* Text */
126161/* lcd_putsxyofs is static'ed in the core for now on color */
162162+#ifdef HAVE_LCD_BITMAP
127163#define mylcd_putsxyofs mylcd_(putsxyofs)
128164#define mylcd_putsxy mylcd_(putsxy)
165165+#endif /* HAVE_LCD_BITMAP */
129166130167/* Scrolling */
168168+#ifdef HAVE_LCD_BITMAP
131169#define mylcd_scroll_left myxlcd_(scroll_left)
132170#define mylcd_scroll_right myxlcd_(scroll_right)
133171#define mylcd_scroll_up myxlcd_(scroll_up)
134172#define mylcd_scroll_down myxlcd_(scroll_down)
173173+#endif /* HAVE_LCD_BITMAP */
135174136175/* Scrolling - unbuffered */
176176+#ifdef HAVE_LCD_BITMAP
137177#define mylcd_ub_scroll_left myxlcd_ub_(scroll_left)
138178#define mylcd_ub_scroll_right myxlcd_ub_(scroll_right)
139179#define mylcd_ub_scroll_up myxlcd_ub_(scroll_up)
140180#define mylcd_ub_scroll_down myxlcd_ub_(scroll_down)
181181+#endif /* HAVE_LCD_BITMAP */
141182142183#endif /* MYLCD_H */