* [U-Boot] [PATCH RESEND] Added support for splash screen positioning
@ 2009-07-01 15:01 Matthias Weisser
2009-07-04 23:49 ` Wolfgang Denk
2009-07-06 9:23 ` Matthias Fuchs
0 siblings, 2 replies; 9+ messages in thread
From: Matthias Weisser @ 2009-07-01 15:01 UTC (permalink / raw)
To: u-boot
This patch adds support splash image positioning by
optinally adding x and y coordinates to the splashimage
environment variable.
Signed-off-by: Matthias Weisser <matthias.weisser@graf-syteco.de>
---
README | 8 ++++++--
common/lcd.c | 11 +++++++++--
drivers/video/cfb_console.c | 9 ++++++++-
3 files changed, 23 insertions(+), 5 deletions(-)
mode change 100644 => 100755 README
mode change 100644 => 100755 common/lcd.c
mode change 100644 => 100755 drivers/video/cfb_console.c
diff --git a/README b/README
old mode 100644
new mode 100755
index 561c100..dd47a83
--- a/README
+++ b/README
@@ -1069,8 +1069,12 @@ The following options need to be configured:
a variable "splashimage". If found, the usual display
of logo, copyright and system information on the LCD
is suppressed and the BMP image at the address
- specified in "splashimage" is loaded instead. The
- console is redirected to the "nulldev", too. This
+ specified in "splashimage" is loaded instead.
+ The logo can be positioned on any position by
+ (optionally) adding the x and y coordinates after the
+ address in the environment variable "splashimage"
+ sperated by a space. "splashimage=0x10060000 160 120"
+ The console is redirected to the "nulldev", too. This
allows for a "silent" boot where a splash screen is
loaded very quickly after power-on.
diff --git a/common/lcd.c b/common/lcd.c
old mode 100644
new mode 100755
index 74a5c77..160f08a
--- a/common/lcd.c
+++ b/common/lcd.c
@@ -809,9 +809,16 @@ static void *lcd_logo (void)
static int do_splash = 1;
if (do_splash && (s = getenv("splashimage")) != NULL) {
- addr = simple_strtoul(s, NULL, 16);
+ int x = 0, y = 0;
do_splash = 0;
+ addr = simple_strtoul (s, NULL, 16);
+ if ((s = strchr (s, ' ')) != NULL) {
+ x = simple_strtoul (s + 1, NULL, 0);
+ if ((s = strchr (s + 1, ' ')) != NULL)
+ y = simple_strtoul (s + 1, NULL, 0);
+ }
+
#ifdef CONFIG_VIDEO_BMP_GZIP
bmp_image_t *bmp = (bmp_image_t *)addr;
unsigned long len;
@@ -822,7 +829,7 @@ static void *lcd_logo (void)
}
#endif
- if (lcd_display_bitmap (addr, 0, 0) == 0) {
+ if (lcd_display_bitmap (addr, x, y) == 0) {
return ((void *)lcd_base);
}
}
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
old mode 100644
new mode 100755
index bcafb27..528349a
--- a/drivers/video/cfb_console.c
+++ b/drivers/video/cfb_console.c
@@ -1188,9 +1188,16 @@ static void *video_logo (void)
ulong addr;
if ((s = getenv ("splashimage")) != NULL) {
+ int x = 0, y = 0;
+
addr = simple_strtoul (s, NULL, 16);
+ if ((s = strchr (s, ' ')) != NULL) {
+ x = simple_strtoul (s + 1, NULL, 0);
+ if ((s = strchr (s + 1, ' ')) != NULL)
+ y = simple_strtoul (s + 1, NULL, 0);
+ }
- if (video_display_bitmap (addr, 0, 0) == 0) {
+ if (video_display_bitmap (addr, x, y) == 0) {
return ((void *) (video_fb_address));
}
}
--
1.5.6.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH RESEND] Added support for splash screen positioning
2009-07-01 15:01 Matthias Weisser
@ 2009-07-04 23:49 ` Wolfgang Denk
2009-07-06 9:23 ` Matthias Fuchs
1 sibling, 0 replies; 9+ messages in thread
From: Wolfgang Denk @ 2009-07-04 23:49 UTC (permalink / raw)
To: u-boot
Dear Matthias Weisser,
In message <1246460471-12737-1-git-send-email-matthias.weisser@graf-syteco.de> you wrote:
> This patch adds support splash image positioning by
> optinally adding x and y coordinates to the splashimage
> environment variable.
>
> Signed-off-by: Matthias Weisser <matthias.weisser@graf-syteco.de>
> ---
> README | 8 ++++++--
> common/lcd.c | 11 +++++++++--
> drivers/video/cfb_console.c | 9 ++++++++-
> 3 files changed, 23 insertions(+), 5 deletions(-)
> mode change 100644 => 100755 README
> mode change 100644 => 100755 common/lcd.c
> mode change 100644 => 100755 drivers/video/cfb_console.c
>
> diff --git a/README b/README
> old mode 100644
> new mode 100755
> index 561c100..dd47a83
> --- a/README
> +++ b/README
> @@ -1069,8 +1069,12 @@ The following options need to be configured:
> a variable "splashimage". If found, the usual display
> of logo, copyright and system information on the LCD
> is suppressed and the BMP image at the address
> - specified in "splashimage" is loaded instead. The
> - console is redirected to the "nulldev", too. This
> + specified in "splashimage" is loaded instead.
> + The logo can be positioned on any position by
> + (optionally) adding the x and y coordinates after the
> + address in the environment variable "splashimage"
> + sperated by a space. "splashimage=0x10060000 160 120"
> + The console is redirected to the "nulldev", too. This
> allows for a "silent" boot where a splash screen is
> loaded very quickly after power-on.
This is a bogus user interface. I will not accept this. Please
redesign (probably use separate variable(s) for the coordinates).
NAK.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
You can love it, change it, or leave it. There is NO other option.
But do not complain - it is your own choice... -- wd
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH RESEND] Added support for splash screen positioning
2009-07-01 15:01 Matthias Weisser
2009-07-04 23:49 ` Wolfgang Denk
@ 2009-07-06 9:23 ` Matthias Fuchs
2009-07-06 11:10 ` Wolfgang Denk
2009-07-09 9:45 ` Matthias Weisser
1 sibling, 2 replies; 9+ messages in thread
From: Matthias Fuchs @ 2009-07-06 9:23 UTC (permalink / raw)
To: u-boot
Hi,
I posted a similiar patch a long time ago:
http://lists.denx.de/pipermail/u-boot/2007-July/022741.html
It's also a little bit more powerful because is supports alignment
on top/center/bottom and right/center/left on the screen.
I couldn't find the answer posting on my patch. But I think it
was rejected because of some planned changes in the video subsystem.
If we can use a powerful splashimage variable, I would vote for my patch
and check it on top of git.
I can understand Wolfgang's objection but please keep the amount of
variables for positioning on a reasonable level. Just one for the stuff
behind the address (see my proposed format) would be ok for me.
Matthias
On Wednesday 01 July 2009 17:01, Matthias Weisser wrote:
> This patch adds support splash image positioning by
> optinally adding x and y coordinates to the splashimage
> environment variable.
>
> Signed-off-by: Matthias Weisser <matthias.weisser@graf-syteco.de>
> ---
> README | 8 ++++++--
> common/lcd.c | 11 +++++++++--
> drivers/video/cfb_console.c | 9 ++++++++-
> 3 files changed, 23 insertions(+), 5 deletions(-)
> mode change 100644 => 100755 README
> mode change 100644 => 100755 common/lcd.c
> mode change 100644 => 100755 drivers/video/cfb_console.c
>
> diff --git a/README b/README
> old mode 100644
> new mode 100755
> index 561c100..dd47a83
> --- a/README
> +++ b/README
> @@ -1069,8 +1069,12 @@ The following options need to be configured:
> a variable "splashimage". If found, the usual display
> of logo, copyright and system information on the LCD
> is suppressed and the BMP image at the address
> - specified in "splashimage" is loaded instead. The
> - console is redirected to the "nulldev", too. This
> + specified in "splashimage" is loaded instead.
> + The logo can be positioned on any position by
> + (optionally) adding the x and y coordinates after the
> + address in the environment variable "splashimage"
> + sperated by a space. "splashimage=0x10060000 160 120"
> + The console is redirected to the "nulldev", too. This
> allows for a "silent" boot where a splash screen is
> loaded very quickly after power-on.
>
> diff --git a/common/lcd.c b/common/lcd.c
> old mode 100644
> new mode 100755
> index 74a5c77..160f08a
> --- a/common/lcd.c
> +++ b/common/lcd.c
> @@ -809,9 +809,16 @@ static void *lcd_logo (void)
> static int do_splash = 1;
>
> if (do_splash && (s = getenv("splashimage")) != NULL) {
> - addr = simple_strtoul(s, NULL, 16);
> + int x = 0, y = 0;
> do_splash = 0;
>
> + addr = simple_strtoul (s, NULL, 16);
> + if ((s = strchr (s, ' ')) != NULL) {
> + x = simple_strtoul (s + 1, NULL, 0);
> + if ((s = strchr (s + 1, ' ')) != NULL)
> + y = simple_strtoul (s + 1, NULL, 0);
> + }
> +
> #ifdef CONFIG_VIDEO_BMP_GZIP
> bmp_image_t *bmp = (bmp_image_t *)addr;
> unsigned long len;
> @@ -822,7 +829,7 @@ static void *lcd_logo (void)
> }
> #endif
>
> - if (lcd_display_bitmap (addr, 0, 0) == 0) {
> + if (lcd_display_bitmap (addr, x, y) == 0) {
> return ((void *)lcd_base);
> }
> }
> diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
> old mode 100644
> new mode 100755
> index bcafb27..528349a
> --- a/drivers/video/cfb_console.c
> +++ b/drivers/video/cfb_console.c
> @@ -1188,9 +1188,16 @@ static void *video_logo (void)
> ulong addr;
>
> if ((s = getenv ("splashimage")) != NULL) {
> + int x = 0, y = 0;
> +
> addr = simple_strtoul (s, NULL, 16);
> + if ((s = strchr (s, ' ')) != NULL) {
> + x = simple_strtoul (s + 1, NULL, 0);
> + if ((s = strchr (s + 1, ' ')) != NULL)
> + y = simple_strtoul (s + 1, NULL, 0);
> + }
>
> - if (video_display_bitmap (addr, 0, 0) == 0) {
> + if (video_display_bitmap (addr, x, y) == 0) {
> return ((void *) (video_fb_address));
> }
> }
--
-------------------------------------------------------------------------
Dipl.-Ing. Matthias Fuchs
Head of System Design
esd electronic system design gmbh
Vahrenwalder Str. 207 - 30165 Hannover - GERMANY
Phone: +49-511-37298-0 - Fax: +49-511-37298-68
Please visit our homepage http://www.esd.eu
Quality Products - Made in Germany
-------------------------------------------------------------------------
Gesch?ftsf?hrer: Klaus Detering, Dr. Werner Schulze
Amtsgericht Hannover HRB 51373 - VAT-ID DE 115672832
-------------------------------------------------------------------------
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH RESEND] Added support for splash screen positioning
2009-07-06 9:23 ` Matthias Fuchs
@ 2009-07-06 11:10 ` Wolfgang Denk
2009-07-09 9:45 ` Matthias Weisser
1 sibling, 0 replies; 9+ messages in thread
From: Wolfgang Denk @ 2009-07-06 11:10 UTC (permalink / raw)
To: u-boot
Dear Matthias Fuchs,
In message <200907061123.07261.matthias.fuchs@esd.eu> you wrote:
>
> I posted a similiar patch a long time ago:
>
> http://lists.denx.de/pipermail/u-boot/2007-July/022741.html
Hmm... seems it got lost in the mists of time...
> It's also a little bit more powerful because is supports alignment
> on top/center/bottom and right/center/left on the screen.
>
> I couldn't find the answer posting on my patch. But I think it
> was rejected because of some planned changes in the video subsystem.
>
> If we can use a powerful splashimage variable, I would vote for my patch
> and check it on top of git.
>
> I can understand Wolfgang's objection but please keep the amount of
> variables for positioning on a reasonable level. Just one for the stuff
> behind the address (see my proposed format) would be ok for me.
Agreed on minimizing the number of needed variables, but (last but not
least in the interest of backward compatibility) I would like to keep
storage address and on-screen positioning information separated.
Your patch reads:
+ When CONFIG_SPLASH_SCREEN_ALIGN is additionally defined,
+ it is possible to align a small splashimage on a huge
+ display. This option extends the splashimage variable
+ syntax with an x and y position suffix. Beside absolute
+ positioning the characters 'l' (left), 'r' (right),
+ 't' (top), 'b' (bottom) and 'c' (center) are supported:
+
+ splashimage=<address>[,<xpos>[,<pos>]]
+
+ Example:
+ splashimage=fff00000,c,c
I would like to see the position information handled with a separate
variable, and I think the format should be changed / extended as
well. If we go to the extent to allowing such positioning, then we
should allow numeric coordinates as well; this kind of conflicts with
your syntax where "c,c" would mean "0xC,0xC" :-)
Maybe you can extend and rebase your patch against current code?
TIA.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
f u cn rd ths, itn tyg h myxbl cd.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH RESEND] Added support for splash screen positioning
2009-07-06 9:23 ` Matthias Fuchs
2009-07-06 11:10 ` Wolfgang Denk
@ 2009-07-09 9:45 ` Matthias Weisser
2009-07-09 10:18 ` Matthias Fuchs
1 sibling, 1 reply; 9+ messages in thread
From: Matthias Weisser @ 2009-07-09 9:45 UTC (permalink / raw)
To: u-boot
Hi Matthias
>>> Matthias Fuchs <matthias.fuchs@esd.eu> schrieb am 06.07.2009 um
11:23:
> Hi,
>
> I posted a similiar patch a long time ago:
>
> http://lists.denx.de/pipermail/u-boot/2007-July/022741.html
Missed that. Sorry.
> If we can use a powerful splashimage variable, I would vote for my
patch
> and check it on top of git.
I would also vote for that one, but...
> I can understand Wolfgang's objection but please keep the amount of
> variables for positioning on a reasonable level. Just one for the
stuff
> behind the address (see my proposed format) would be ok for me.
I would also prefer the additional variable. I would propose
splashpos=x,y
where x and y could be:
l -> Left
m -> Center (not c because of clash with hex numbers)
r -> Right
number -> Exact positioning
If you don't have the time to implement this I could add this to my
patch (which also adds this to the lcd code).
Matthias
------------------------------------
Amtsgericht Freiburg HRA 602707
Ust. ID-Nr.: DE232464428
Gesch?ftsf?hrer:
Dipl. Ing. (FH) Martin Graf
Dipl. Ing. (FH) David Graf
Dipl. Inf. Fabian Graf
Komplement?rin:
GRAF-SYTECO Verwaltungs-GmbH
Amtsgericht Freiburg HRB 602868
------------------------------------
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH RESEND] Added support for splash screen positioning
2009-07-09 9:45 ` Matthias Weisser
@ 2009-07-09 10:18 ` Matthias Fuchs
0 siblings, 0 replies; 9+ messages in thread
From: Matthias Fuchs @ 2009-07-09 10:18 UTC (permalink / raw)
To: u-boot
On Thursday 09 July 2009 11:45, Matthias Weisser wrote:
> Hi Matthias
>
> >>> Matthias Fuchs <matthias.fuchs@esd.eu> schrieb am 06.07.2009 um
> 11:23:
> > Hi,
> >
> > I posted a similiar patch a long time ago:
> >
> > http://lists.denx.de/pipermail/u-boot/2007-July/022741.html
>
> Missed that. Sorry.
>
> > If we can use a powerful splashimage variable, I would vote for my
> patch
> > and check it on top of git.
>
> I would also vote for that one, but...
Cool.
>
> > I can understand Wolfgang's objection but please keep the amount of
> > variables for positioning on a reasonable level. Just one for the
> stuff
> > behind the address (see my proposed format) would be ok for me.
>
> I would also prefer the additional variable. I would propose
>
> splashpos=x,y
I thought about that name also :-)
>
> where x and y could be:
>
> l -> Left
> m -> Center (not c because of clash with hex numbers)
Good idea.
> r -> Right
Don't forget t (top) and b (bottom).
> number -> Exact positioning
What about [-]number? Could be used to position from the opposite side.
With this syntax we even do not need l/r/t/b at all. E.g.:
splashpos=m,-20 # x'centered and 20 pixel from bottom
splashpos=-0,-0 # rigth, bottom screen corner
Just an idea :-)
> If you don't have the time to implement this I could add this to my
> patch (which also adds this to the lcd code).
Yes please. I will do some testing on my board.
Matthias
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH RESEND] Added support for splash screen positioning
@ 2009-07-09 14:07 Matthias Weisser
2009-07-13 9:07 ` Matthias Fuchs
2009-07-16 11:20 ` Anatolij Gustschin
0 siblings, 2 replies; 9+ messages in thread
From: Matthias Weisser @ 2009-07-09 14:07 UTC (permalink / raw)
To: u-boot
This patch adds support splash image positioning by adding an
additional variable "splashpos" to the environment. Please see
README for details.
Signed-off-by: Matthias Weisser <matthias.weisser@graf-syteco.de>
---
README | 19 +++++++++++++++++++
common/lcd.c | 39 +++++++++++++++++++++++++++++++++++++--
drivers/video/cfb_console.c | 36 +++++++++++++++++++++++++++++++++++-
3 files changed, 91 insertions(+), 3 deletions(-)
diff --git a/README b/README
index 561c100..bbc9e06
--- a/README
+++ b/README
@@ -1074,6 +1074,25 @@ The following options need to be configured:
allows for a "silent" boot where a splash screen is
loaded very quickly after power-on.
+ CONFIG_SPLASH_SCREEN_ALIGN
+
+ If this option is set the splash image can be freely positioned
+ on the screen. Environment variable "splashpos=x,y" specifies
+ the position. If a positive number is given it is used as
+ number of pixel from left/top. If a negativ number is given it
+ is used as number of pixel from right/bottom. You can also
+ specify 'm' for centering the image.
+
+ Example:
+ setenv splashpos=m,m
+ => Image at center of screen
+
+ setenv splashpos=30,20
+ => Image at x = 20 and y = 30
+
+ setenv splashpos=-10,m
+ => Image at x = dspWidth - bmpWidth - 9 and y = center
+
- Gzip compressed BMP image support: CONFIG_VIDEO_BMP_GZIP
If this option is set, additionally to standard BMP
diff --git a/common/lcd.c b/common/lcd.c
index 74a5c77..b9a698d
--- a/common/lcd.c
+++ b/common/lcd.c
@@ -620,6 +620,11 @@ void bitmap_plot (int x, int y)
* Display the BMP file located at address bmp_image.
* Only uncompressed.
*/
+
+#ifdef CONFIG_SPLASH_SCREEN_ALIGN
+#define BMP_ALIGN_CENTER 0x7FFF
+#endif
+
int lcd_display_bitmap(ulong bmp_image, int x, int y)
{
#if !defined(CONFIG_MCC200)
@@ -731,6 +736,19 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
#endif
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)
width = pwidth - x;
if ((y + height)>panel_info.vl_row)
@@ -809,9 +827,26 @@ static void *lcd_logo (void)
static int do_splash = 1;
if (do_splash && (s = getenv("splashimage")) != NULL) {
- addr = simple_strtoul(s, NULL, 16);
+ int x = 0, y = 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
bmp_image_t *bmp = (bmp_image_t *)addr;
unsigned long len;
@@ -822,7 +857,7 @@ static void *lcd_logo (void)
}
#endif
- if (lcd_display_bitmap (addr, 0, 0) == 0) {
+ if (lcd_display_bitmap (addr, x, y) == 0) {
return ((void *)lcd_base);
}
}
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
index bcafb27..6adce19
--- a/drivers/video/cfb_console.c
+++ b/drivers/video/cfb_console.c
@@ -193,6 +193,11 @@ CONFIG_VIDEO_HW_CURSOR: - Uses the hardware cursor capability of the
#if defined(CONFIG_CMD_BMP) || defined(CONFIG_SPLASH_SCREEN)
#include <watchdog.h>
#include <bmp_layout.h>
+
+#ifdef CONFIG_SPLASH_SCREEN_ALIGN
+#define BMP_ALIGN_CENTER 0x7FFF
+#endif
+
#endif
/*****************************************************************************/
@@ -877,6 +882,18 @@ int video_display_bitmap (ulong bmp_image, int x, int y)
padded_line = (((width * bpp + 7) / 8) + 3) & ~0x3;
+#ifdef CONFIG_SPLASH_SCREEN_ALIGN
+ if (x == BMP_ALIGN_CENTER)
+ x = max(0, (VIDEO_VISIBLE_COLS - width) / 2);
+ else if (x < 0)
+ x = max(0, VIDEO_VISIBLE_COLS - width + x + 1);
+
+ if (y == BMP_ALIGN_CENTER)
+ y = max(0, (VIDEO_VISIBLE_ROWS - height) / 2);
+ else if (y < 0)
+ y = max(0, VIDEO_VISIBLE_ROWS - height + y + 1);
+#endif /* CONFIG_SPLASH_SCREEN_ALIGN */
+
if ((x + width) > VIDEO_VISIBLE_COLS)
width = VIDEO_VISIBLE_COLS - x;
if ((y + height) > VIDEO_VISIBLE_ROWS)
@@ -1188,9 +1205,26 @@ static void *video_logo (void)
ulong addr;
if ((s = getenv ("splashimage")) != NULL) {
+ int x = 0, y = 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 */
- if (video_display_bitmap (addr, 0, 0) == 0) {
+ if (video_display_bitmap (addr, x, y) == 0) {
return ((void *) (video_fb_address));
}
}
--
1.5.6.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH RESEND] Added support for splash screen positioning
2009-07-09 14:07 [U-Boot] [PATCH RESEND] Added support for splash screen positioning Matthias Weisser
@ 2009-07-13 9:07 ` Matthias Fuchs
2009-07-16 11:20 ` Anatolij Gustschin
1 sibling, 0 replies; 9+ messages in thread
From: Matthias Fuchs @ 2009-07-13 9:07 UTC (permalink / raw)
To: u-boot
On Thursday 09 July 2009 16:07, Matthias Weisser wrote:
> This patch adds support splash image positioning by adding an
> additional variable "splashpos" to the environment. Please see
> README for details.
>
> Signed-off-by: Matthias Weisser <matthias.weisser@graf-syteco.de>
Works fine!
Acked-by: Matthias Fuchs <matthias.fuchs@esd.eu>
> ---
> README | 19 +++++++++++++++++++
> common/lcd.c | 39 +++++++++++++++++++++++++++++++++++++--
> drivers/video/cfb_console.c | 36 +++++++++++++++++++++++++++++++++++-
> 3 files changed, 91 insertions(+), 3 deletions(-)
>
> diff --git a/README b/README
> index 561c100..bbc9e06
> --- a/README
> +++ b/README
> @@ -1074,6 +1074,25 @@ The following options need to be configured:
> allows for a "silent" boot where a splash screen is
> loaded very quickly after power-on.
>
> + CONFIG_SPLASH_SCREEN_ALIGN
> +
> + If this option is set the splash image can be freely positioned
> + on the screen. Environment variable "splashpos=x,y" specifies
> + the position. If a positive number is given it is used as
> + number of pixel from left/top. If a negativ number is given it
> + is used as number of pixel from right/bottom. You can also
> + specify 'm' for centering the image.
> +
> + Example:
> + setenv splashpos=m,m
> + => Image at center of screen
> +
> + setenv splashpos=30,20
> + => Image at x = 20 and y = 30
> +
> + setenv splashpos=-10,m
> + => Image at x = dspWidth - bmpWidth - 9 and y = center
> +
> - Gzip compressed BMP image support: CONFIG_VIDEO_BMP_GZIP
>
> If this option is set, additionally to standard BMP
> diff --git a/common/lcd.c b/common/lcd.c
> index 74a5c77..b9a698d
> --- a/common/lcd.c
> +++ b/common/lcd.c
> @@ -620,6 +620,11 @@ void bitmap_plot (int x, int y)
> * Display the BMP file located at address bmp_image.
> * Only uncompressed.
> */
> +
> +#ifdef CONFIG_SPLASH_SCREEN_ALIGN
> +#define BMP_ALIGN_CENTER 0x7FFF
> +#endif
> +
> int lcd_display_bitmap(ulong bmp_image, int x, int y)
> {
> #if !defined(CONFIG_MCC200)
> @@ -731,6 +736,19 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
> #endif
>
> 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)
> width = pwidth - x;
> if ((y + height)>panel_info.vl_row)
> @@ -809,9 +827,26 @@ static void *lcd_logo (void)
> static int do_splash = 1;
>
> if (do_splash && (s = getenv("splashimage")) != NULL) {
> - addr = simple_strtoul(s, NULL, 16);
> + int x = 0, y = 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
> bmp_image_t *bmp = (bmp_image_t *)addr;
> unsigned long len;
> @@ -822,7 +857,7 @@ static void *lcd_logo (void)
> }
> #endif
>
> - if (lcd_display_bitmap (addr, 0, 0) == 0) {
> + if (lcd_display_bitmap (addr, x, y) == 0) {
> return ((void *)lcd_base);
> }
> }
> diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
> index bcafb27..6adce19
> --- a/drivers/video/cfb_console.c
> +++ b/drivers/video/cfb_console.c
> @@ -193,6 +193,11 @@ CONFIG_VIDEO_HW_CURSOR: - Uses the hardware cursor capability of the
> #if defined(CONFIG_CMD_BMP) || defined(CONFIG_SPLASH_SCREEN)
> #include <watchdog.h>
> #include <bmp_layout.h>
> +
> +#ifdef CONFIG_SPLASH_SCREEN_ALIGN
> +#define BMP_ALIGN_CENTER 0x7FFF
> +#endif
> +
> #endif
>
> /*****************************************************************************/
> @@ -877,6 +882,18 @@ int video_display_bitmap (ulong bmp_image, int x, int y)
>
> padded_line = (((width * bpp + 7) / 8) + 3) & ~0x3;
>
> +#ifdef CONFIG_SPLASH_SCREEN_ALIGN
> + if (x == BMP_ALIGN_CENTER)
> + x = max(0, (VIDEO_VISIBLE_COLS - width) / 2);
> + else if (x < 0)
> + x = max(0, VIDEO_VISIBLE_COLS - width + x + 1);
> +
> + if (y == BMP_ALIGN_CENTER)
> + y = max(0, (VIDEO_VISIBLE_ROWS - height) / 2);
> + else if (y < 0)
> + y = max(0, VIDEO_VISIBLE_ROWS - height + y + 1);
> +#endif /* CONFIG_SPLASH_SCREEN_ALIGN */
> +
> if ((x + width) > VIDEO_VISIBLE_COLS)
> width = VIDEO_VISIBLE_COLS - x;
> if ((y + height) > VIDEO_VISIBLE_ROWS)
> @@ -1188,9 +1205,26 @@ static void *video_logo (void)
> ulong addr;
>
> if ((s = getenv ("splashimage")) != NULL) {
> + int x = 0, y = 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 */
>
> - if (video_display_bitmap (addr, 0, 0) == 0) {
> + if (video_display_bitmap (addr, x, y) == 0) {
> return ((void *) (video_fb_address));
> }
> }
--
-------------------------------------------------------------------------
Dipl.-Ing. Matthias Fuchs
Head of System Design
esd electronic system design gmbh
Vahrenwalder Str. 207 - 30165 Hannover - GERMANY
Phone: +49-511-37298-0 - Fax: +49-511-37298-68
Please visit our homepage http://www.esd.eu
Quality Products - Made in Germany
-------------------------------------------------------------------------
Gesch?ftsf?hrer: Klaus Detering, Dr. Werner Schulze
Amtsgericht Hannover HRB 51373 - VAT-ID DE 115672832
-------------------------------------------------------------------------
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH RESEND] Added support for splash screen positioning
2009-07-09 14:07 [U-Boot] [PATCH RESEND] Added support for splash screen positioning Matthias Weisser
2009-07-13 9:07 ` Matthias Fuchs
@ 2009-07-16 11:20 ` Anatolij Gustschin
1 sibling, 0 replies; 9+ messages in thread
From: Anatolij Gustschin @ 2009-07-16 11:20 UTC (permalink / raw)
To: u-boot
Matthias Weisser wrote:
> This patch adds support splash image positioning by adding an
> additional variable "splashpos" to the environment. Please see
> README for details.
>
> Signed-off-by: Matthias Weisser <matthias.weisser@graf-syteco.de>
> ---
> README | 19 +++++++++++++++++++
> common/lcd.c | 39 +++++++++++++++++++++++++++++++++++++--
> drivers/video/cfb_console.c | 36 +++++++++++++++++++++++++++++++++++-
> 3 files changed, 91 insertions(+), 3 deletions(-)
Applied to u-boot-video. Thanks! Note that I slightly modified the
description in README, hope this is okay.
Best regards,
Anatolij
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2009-07-16 11:20 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-09 14:07 [U-Boot] [PATCH RESEND] Added support for splash screen positioning Matthias Weisser
2009-07-13 9:07 ` Matthias Fuchs
2009-07-16 11:20 ` Anatolij Gustschin
-- strict thread matches above, loose matches on Subject: below --
2009-07-01 15:01 Matthias Weisser
2009-07-04 23:49 ` Wolfgang Denk
2009-07-06 9:23 ` Matthias Fuchs
2009-07-06 11:10 ` Wolfgang Denk
2009-07-09 9:45 ` Matthias Weisser
2009-07-09 10:18 ` Matthias Fuchs
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox