| Index: target/dartuinoP0/display/memory_lcd_mono.c
|
| diff --git a/target/dartuinoP0/display/memory_lcd_mono.c b/target/dartuinoP0/display/memory_lcd_mono.c
|
| index 7c09c07bad28eafe1f42b621a711f3251ab72c9c..959afee4dd6565cec76a95a5bca724287d3e6a67 100644
|
| --- a/target/dartuinoP0/display/memory_lcd_mono.c
|
| +++ b/target/dartuinoP0/display/memory_lcd_mono.c
|
| @@ -32,26 +32,23 @@
|
| #include <string.h>
|
| #include <assert.h>
|
|
|
| -#define SET_BIT(BUF, BITNUM) ((BUF)[(BITNUM) >> 3] |= (0xff & (0x1 << ((BITNUM) & 0x07))))
|
| +#define SET_BIT(BUF, BITNUM) ((BUF)[(BITNUM) >> 3] |= (0x1 << ((BITNUM) & 0x07)))
|
|
|
| -uint8_t lcd_get_line(uint8_t *framebuffer, uint8_t idx, uint8_t *result)
|
| +uint8_t lcd_get_line(struct display_image *image, uint8_t idx, uint8_t *result)
|
| {
|
| - framebuffer += FB_STRIDE * idx;
|
| -
|
| -#if FB_FORMAT == DISPLAY_FORMAT_MONO_1
|
| - memcpy(result, framebuffer, MLCD_BYTES_LINE);
|
| -
|
| -#elif FB_FORMAT == DISPLAY_FORMAT_MONO_8
|
| - memset(result, 0, MLCD_BYTES_LINE);
|
| - for (uint i = 0; i < MLCD_WIDTH; ++i) {
|
| - if (framebuffer[i] > 128) {
|
| - SET_BIT(result, i);
|
| + uint8_t *framebuffer = (uint8_t *) image->pixels + image->rowbytes * idx;
|
| +
|
| + if (image->format == IMAGE_FORMAT_MONO_1) {
|
| + memcpy(result, framebuffer, MLCD_BYTES_LINE);
|
| + } else if (image->format == IMAGE_FORMAT_MONO_8) {
|
| + memset(result, 0, MLCD_BYTES_LINE);
|
| + for (uint i = 0; i < MLCD_WIDTH; ++i) {
|
| + if (framebuffer[i] > 128) {
|
| + SET_BIT(result, i);
|
| + }
|
| }
|
| + } else {
|
| + DEBUG_ASSERT(false);
|
| }
|
| -
|
| -#else
|
| -#error Unhandled FB_FORMAT
|
| -#endif
|
| -
|
| return MLCD_BYTES_LINE;
|
| }
|
|
|