Commit 7c7e280aa6766ac34c6dbf4a5a2c6b14554ccc3f
Committed by
Anatolij Gustschin
1 parent
d3a555eddb
Exists in
master
and in
54 other branches
common lcd: simplify lcd_display
Simplify lcd_display by centralizing code into a funciton Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il> Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
Showing 1 changed file with 18 additions and 9 deletions Side-by-side Diff
common/lcd.c
... | ... | @@ -607,6 +607,22 @@ |
607 | 607 | |
608 | 608 | #ifdef CONFIG_SPLASH_SCREEN_ALIGN |
609 | 609 | #define BMP_ALIGN_CENTER 0x7FFF |
610 | + | |
611 | +static void splash_align_axis(int *axis, unsigned long panel_size, | |
612 | + unsigned long picture_size) | |
613 | +{ | |
614 | + unsigned long panel_picture_delta = panel_size - picture_size; | |
615 | + unsigned long axis_alignment; | |
616 | + | |
617 | + if (*axis == BMP_ALIGN_CENTER) | |
618 | + axis_alignment = panel_picture_delta / 2; | |
619 | + else if (*axis < 0) | |
620 | + axis_alignment = panel_picture_delta + *axis + 1; | |
621 | + else | |
622 | + return; | |
623 | + | |
624 | + *axis = max(0, axis_alignment); | |
625 | +} | |
610 | 626 | #endif |
611 | 627 | |
612 | 628 | int lcd_display_bitmap(ulong bmp_image, int x, int y) |
... | ... | @@ -722,15 +738,8 @@ |
722 | 738 | padded_line = (width&0x3) ? ((width&~0x3)+4) : (width); |
723 | 739 | |
724 | 740 | #ifdef CONFIG_SPLASH_SCREEN_ALIGN |
725 | - if (x == BMP_ALIGN_CENTER) | |
726 | - x = max(0, (pwidth - width) / 2); | |
727 | - else if (x < 0) | |
728 | - x = max(0, pwidth - width + x + 1); | |
729 | - | |
730 | - if (y == BMP_ALIGN_CENTER) | |
731 | - y = max(0, (panel_info.vl_row - height) / 2); | |
732 | - else if (y < 0) | |
733 | - y = max(0, panel_info.vl_row - height + y + 1); | |
741 | + splash_align_axis(&x, pwidth, width); | |
742 | + splash_align_axis(&y, panel_info.vl_row, height); | |
734 | 743 | #endif /* CONFIG_SPLASH_SCREEN_ALIGN */ |
735 | 744 | |
736 | 745 | if ((x + width) > pwidth) |