|
@@ -620,6 +620,11 @@ void bitmap_plot (int x, int y)
|
|
* Display the BMP file located at address bmp_image.
|
|
* Display the BMP file located at address bmp_image.
|
|
* Only uncompressed.
|
|
* Only uncompressed.
|
|
*/
|
|
*/
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_SPLASH_SCREEN_ALIGN
|
|
|
|
+#define BMP_ALIGN_CENTER 0x7FFF
|
|
|
|
+#endif
|
|
|
|
+
|
|
int lcd_display_bitmap(ulong bmp_image, int x, int y)
|
|
int lcd_display_bitmap(ulong bmp_image, int x, int y)
|
|
{
|
|
{
|
|
#if !defined(CONFIG_MCC200)
|
|
#if !defined(CONFIG_MCC200)
|
|
@@ -731,6 +736,19 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
|
|
#endif
|
|
#endif
|
|
|
|
|
|
padded_line = (width&0x3) ? ((width&~0x3)+4) : (width);
|
|
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);
|
|
|
|
+#endif /* CONFIG_SPLASH_SCREEN_ALIGN */
|
|
|
|
+
|
|
if ((x + width)>pwidth)
|
|
if ((x + width)>pwidth)
|
|
width = pwidth - x;
|
|
width = pwidth - x;
|
|
if ((y + height)>panel_info.vl_row)
|
|
if ((y + height)>panel_info.vl_row)
|
|
@@ -809,9 +827,26 @@ static void *lcd_logo (void)
|
|
static int do_splash = 1;
|
|
static int do_splash = 1;
|
|
|
|
|
|
if (do_splash && (s = getenv("splashimage")) != NULL) {
|
|
if (do_splash && (s = getenv("splashimage")) != NULL) {
|
|
- addr = simple_strtoul(s, NULL, 16);
|
|
|
|
|
|
+ int x = 0, y = 0;
|
|
do_splash = 0;
|
|
do_splash = 0;
|
|
|
|
|
|
|
|
+ addr = simple_strtoul (s, NULL, 16);
|
|
|
|
+#ifdef CONFIG_SPLASH_SCREEN_ALIGN
|
|
|
|
+ if ((s = getenv ("splashpos")) != NULL) {
|
|
|
|
+ if (s[0] == 'm')
|
|
|
|
+ x = BMP_ALIGN_CENTER;
|
|
|
|
+ else
|
|
|
|
+ x = simple_strtol (s, NULL, 0);
|
|
|
|
+
|
|
|
|
+ if ((s = strchr (s + 1, ',')) != NULL) {
|
|
|
|
+ if (s[1] == 'm')
|
|
|
|
+ y = BMP_ALIGN_CENTER;
|
|
|
|
+ else
|
|
|
|
+ y = simple_strtol (s + 1, NULL, 0);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+#endif /* CONFIG_SPLASH_SCREEN_ALIGN */
|
|
|
|
+
|
|
#ifdef CONFIG_VIDEO_BMP_GZIP
|
|
#ifdef CONFIG_VIDEO_BMP_GZIP
|
|
bmp_image_t *bmp = (bmp_image_t *)addr;
|
|
bmp_image_t *bmp = (bmp_image_t *)addr;
|
|
unsigned long len;
|
|
unsigned long len;
|
|
@@ -822,7 +857,7 @@ static void *lcd_logo (void)
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
|
|
- if (lcd_display_bitmap (addr, 0, 0) == 0) {
|
|
|
|
|
|
+ if (lcd_display_bitmap (addr, x, y) == 0) {
|
|
return ((void *)lcd_base);
|
|
return ((void *)lcd_base);
|
|
}
|
|
}
|
|
}
|
|
}
|