common lcd: simplify lcd_display
authorNikita Kiryanov <nikita@compulab.co.il>
Thu, 9 Aug 2012 00:14:51 +0000 (00:14 +0000)
committerAnatolij Gustschin <agust@denx.de>
Wed, 5 Sep 2012 08:27:57 +0000 (10:27 +0200)
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>
common/lcd.c

index 8890635..4a5c8d5 100644 (file)
@@ -607,6 +607,22 @@ static inline void bitmap_plot(int x, int y) {}
 
 #ifdef CONFIG_SPLASH_SCREEN_ALIGN
 #define BMP_ALIGN_CENTER       0x7FFF
+
+static void splash_align_axis(int *axis, unsigned long panel_size,
+                                       unsigned long picture_size)
+{
+       unsigned long panel_picture_delta = panel_size - picture_size;
+       unsigned long axis_alignment;
+
+       if (*axis == BMP_ALIGN_CENTER)
+               axis_alignment = panel_picture_delta / 2;
+       else if (*axis < 0)
+               axis_alignment = panel_picture_delta + *axis + 1;
+       else
+               return;
+
+       *axis = max(0, axis_alignment);
+}
 #endif
 
 int lcd_display_bitmap(ulong bmp_image, int x, int y)
@@ -722,15 +738,8 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
        padded_line = (width&0x3) ? ((width&~0x3)+4) : (width);
 
 #ifdef CONFIG_SPLASH_SCREEN_ALIGN
-       if (x == BMP_ALIGN_CENTER)
-               x = max(0, (pwidth - width) / 2);
-       else if (x < 0)
-               x = max(0, pwidth - width + x + 1);
-
-       if (y == BMP_ALIGN_CENTER)
-               y = max(0, (panel_info.vl_row - height) / 2);
-       else if (y < 0)
-               y = max(0, panel_info.vl_row - height + y + 1);
+       splash_align_axis(&x, pwidth, width);
+       splash_align_axis(&y, panel_info.vl_row, height);
 #endif /* CONFIG_SPLASH_SCREEN_ALIGN */
 
        if ((x + width) > pwidth)