summaryrefslogtreecommitdiff
path: root/apps/plugins/lib/xlcd_draw.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/lib/xlcd_draw.c')
-rw-r--r--apps/plugins/lib/xlcd_draw.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/apps/plugins/lib/xlcd_draw.c b/apps/plugins/lib/xlcd_draw.c
index b6ed403353..0bd1c7a9e2 100644
--- a/apps/plugins/lib/xlcd_draw.c
+++ b/apps/plugins/lib/xlcd_draw.c
@@ -349,6 +349,9 @@ static const fb_data graylut[256] = {
349void xlcd_gray_bitmap_part(const unsigned char *src, int src_x, int src_y, 349void xlcd_gray_bitmap_part(const unsigned char *src, int src_x, int src_y,
350 int stride, int x, int y, int width, int height) 350 int stride, int x, int y, int width, int height)
351{ 351{
352 size_t dst_stride;
353 fb_data *lcd_fb = get_framebuffer(NULL, &dst_stride);
354
352 const unsigned char *src_end; 355 const unsigned char *src_end;
353 fb_data *dst; 356 fb_data *dst;
354 357
@@ -377,7 +380,7 @@ void xlcd_gray_bitmap_part(const unsigned char *src, int src_x, int src_y,
377 380
378 src += stride * src_y + src_x; /* move starting point */ 381 src += stride * src_y + src_x; /* move starting point */
379 src_end = src + stride * height; 382 src_end = src + stride * height;
380 dst = *rb->lcd_framebuffer + LCD_WIDTH * y + x; 383 dst = lcd_fb + dst_stride * y + x;
381 384
382 do 385 do
383 { 386 {
@@ -398,7 +401,7 @@ void xlcd_gray_bitmap_part(const unsigned char *src, int src_x, int src_y,
398#endif 401#endif
399 402
400 src += stride; 403 src += stride;
401 dst += LCD_WIDTH; 404 dst += dst_stride;
402 } 405 }
403 while (src < src_end); 406 while (src < src_end);
404} 407}
@@ -416,6 +419,9 @@ void xlcd_gray_bitmap(const unsigned char *src, int x, int y, int width,
416void xlcd_color_bitmap_part(const unsigned char *src, int src_x, int src_y, 419void xlcd_color_bitmap_part(const unsigned char *src, int src_x, int src_y,
417 int stride, int x, int y, int width, int height) 420 int stride, int x, int y, int width, int height)
418{ 421{
422 size_t dst_stride;
423 fb_data *lcd_fb = get_framebuffer(NULL, &dst_stride);
424
419 const unsigned char *src_end; 425 const unsigned char *src_end;
420 fb_data *dst; 426 fb_data *dst;
421 427
@@ -444,7 +450,7 @@ void xlcd_color_bitmap_part(const unsigned char *src, int src_x, int src_y,
444 450
445 src += 3 * (stride * src_y + src_x); /* move starting point */ 451 src += 3 * (stride * src_y + src_x); /* move starting point */
446 src_end = src + 3 * stride * height; 452 src_end = src + 3 * stride * height;
447 dst = *rb->lcd_framebuffer + LCD_WIDTH * y + x; 453 dst = lcd_fb + dst_stride * y + x;
448 454
449 do 455 do
450 { 456 {
@@ -471,7 +477,7 @@ void xlcd_color_bitmap_part(const unsigned char *src, int src_x, int src_y,
471 while (src_row < row_end); 477 while (src_row < row_end);
472 478
473 src += 3 * stride; 479 src += 3 * stride;
474 dst += LCD_WIDTH; 480 dst += dst_stride;
475 } 481 }
476 while (src < src_end); 482 while (src < src_end);
477} 483}