samples: display: Added support for BGR565

Added support for BGR565 to display sample

Signed-off-by: Jan Van Winkel <jan.van_winkel@dxplore.eu>
This commit is contained in:
Jan Van Winkel 2020-01-16 22:57:46 +01:00 committed by Maureen Helm
commit 6ebd0e3f02

View file

@ -102,8 +102,7 @@ static void fill_buffer_rgb888(enum corner corner, u8_t grey, u8_t *buf,
}
}
static void fill_buffer_rgb565(enum corner corner, u8_t grey, u8_t *buf,
size_t buf_size)
static u16_t get_rgb565_color(enum corner corner, u8_t grey)
{
u16_t color = 0;
u16_t grey_5bit;
@ -124,6 +123,13 @@ static void fill_buffer_rgb565(enum corner corner, u8_t grey, u8_t *buf,
color = grey_5bit << 11 | grey_5bit << (5 + 1) | grey_5bit;
break;
}
return color;
}
static void fill_buffer_rgb565(enum corner corner, u8_t grey, u8_t *buf,
size_t buf_size)
{
u16_t color = get_rgb565_color(corner, grey);
for (size_t idx = 0; idx < buf_size; idx += 2) {
*(buf + idx + 0) = (color >> 8) & 0xFFu;
@ -131,6 +137,16 @@ static void fill_buffer_rgb565(enum corner corner, u8_t grey, u8_t *buf,
}
}
static void fill_buffer_bgr565(enum corner corner, u8_t grey, u8_t *buf,
size_t buf_size)
{
u16_t color = get_rgb565_color(corner, grey);
for (size_t idx = 0; idx < buf_size; idx += 2) {
*(u16_t *)(buf + idx) = color;
}
}
static void fill_buffer_mono(enum corner corner, u8_t grey, u8_t *buf,
size_t buf_size)
{
@ -216,6 +232,10 @@ void main(void)
fill_buffer_fnc = fill_buffer_rgb565;
buf_size *= 2;
break;
case PIXEL_FORMAT_BGR_565:
fill_buffer_fnc = fill_buffer_bgr565;
buf_size *= 2;
break;
case PIXEL_FORMAT_MONO01:
case PIXEL_FORMAT_MONO10:
fill_buffer_fnc = fill_buffer_mono;