diff mbox series

[U-Boot] cmd: bmp: manage centered display

Message ID 1542187102-20993-1-git-send-email-patrick.delaunay@st.com
State Superseded
Delegated to: Anatolij Gustschin
Headers show
Series [U-Boot] cmd: bmp: manage centered display | expand

Commit Message

Patrick DELAUNAY Nov. 14, 2018, 9:18 a.m. UTC
Allow to display BMP at the middle of the screen.

'm' means "middle" as it is done for the splashscreen variable:
splashpos=m,m

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
---
Example for command

load mmc 0:4 ${splashimage} splash.bmp
bmp display ${splashimage} m m

or function can be used directly

  bmp_display(0xC0000000, BMP_ALIGN_CENTER, BMP_ALIGN_CENTER)


 cmd/bmp.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

Comments

Anatolij Gustschin Dec. 1, 2018, 2:06 p.m. UTC | #1
Hi Patrick,

On Wed, 14 Nov 2018 10:18:22 +0100
Patrick Delaunay patrick.delaunay@st.com wrote:
...
> diff --git a/cmd/bmp.c b/cmd/bmp.c
> index 02bdf48..1ace8a8 100644
> --- a/cmd/bmp.c
> +++ b/cmd/bmp.c
> @@ -108,6 +108,7 @@ static int do_bmp_info(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[
>  	return (bmp_info(addr));
>  }
>  
> +#define BMP_ALIGN_CENTER	0x7FFF

this already exists when including splash.h, I dropped it in v2.

--
Anatolij
Patrick DELAUNAY Dec. 3, 2018, 8:45 a.m. UTC | #2
Hi Anatolij,

> From: Anatolij Gustschin <agust@denx.de>
> Sent: samedi 1 décembre 2018 15:06
> 
> Hi Patrick,
> 
> On Wed, 14 Nov 2018 10:18:22 +0100
> Patrick Delaunay patrick.delaunay@st.com wrote:
> ...
> >
> > +#define BMP_ALIGN_CENTER	0x7FFF
> 
> this already exists when including splash.h, I dropped it in v2.

Ok, I don't see that splash.h is included in cmd/bmp.c.

In fact I hesitate to move this define in commun bmp include (in include/lcd.h with bmp_display prototype for exmaple) 
to avoid a other double definition:

common/lcd.c:392 #define BMP_ALIGN_CENTER	0x7FFF
drivers/video/video_bmp.c:143:#define BMP_ALIGN_CENTER	0x7fff
include/splash.h:78:#define BMP_ALIGN_CENTER	0x7FFF

> --
> Anatolij
Anatolij Gustschin Dec. 3, 2018, 9:21 a.m. UTC | #3
Hi Patrick,

On Mon, 3 Dec 2018 08:45:57 +0000
Patrick DELAUNAY patrick.delaunay@st.com wrote:
...
> > > +#define BMP_ALIGN_CENTER	0x7FFF  
> > 
> > this already exists when including splash.h, I dropped it in v2.  
> 
> Ok, I don't see that splash.h is included in cmd/bmp.c.

In mainline U-Boot it is included, please see [1].

 
> In fact I hesitate to move this define in commun bmp include
> (in include/lcd.h with bmp_display prototype for exmaple) 
> to avoid a other double definition:
> 
> common/lcd.c:392 #define BMP_ALIGN_CENTER	0x7FFF
> drivers/video/video_bmp.c:143:#define BMP_ALIGN_CENTER	0x7fff
> include/splash.h:78:#define BMP_ALIGN_CENTER	0x7FFF

I've sent a patch cleaning up multiple defines, please see [2].

[1] http://git.denx.de/?p=u-boot.git;a=blob;f=cmd/bmp.c;h=02bdf48b4d422ced97dea7587f07d74c0aee6d6e;hb=HEAD#l20
[2] http://patchwork.ozlabs.org/patch/1006354

--
Anatolij
diff mbox series

Patch

diff --git a/cmd/bmp.c b/cmd/bmp.c
index 02bdf48..1ace8a8 100644
--- a/cmd/bmp.c
+++ b/cmd/bmp.c
@@ -108,6 +108,7 @@  static int do_bmp_info(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[
 	return (bmp_info(addr));
 }
 
+#define BMP_ALIGN_CENTER	0x7FFF
 static int do_bmp_display(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
 {
 	ulong addr;
@@ -124,8 +125,14 @@  static int do_bmp_display(cmd_tbl_t * cmdtp, int flag, int argc, char * const ar
 		break;
 	case 4:
 		addr = simple_strtoul(argv[1], NULL, 16);
-		x = simple_strtoul(argv[2], NULL, 10);
-		y = simple_strtoul(argv[3], NULL, 10);
+		if (!strcmp(argv[2], "m"))
+			x = BMP_ALIGN_CENTER;
+		else
+			x = simple_strtoul(argv[2], NULL, 10);
+		if (!strcmp(argv[3], "m"))
+			y = BMP_ALIGN_CENTER;
+		else
+			y = simple_strtoul(argv[3], NULL, 10);
 		break;
 	default:
 		return CMD_RET_USAGE;
@@ -249,9 +256,11 @@  int bmp_display(ulong addr, int x, int y)
 	if (!ret) {
 		bool align = false;
 
-# ifdef CONFIG_SPLASH_SCREEN_ALIGN
-		align = true;
-# endif /* CONFIG_SPLASH_SCREEN_ALIGN */
+		if (CONFIG_IS_ENABLED(SPLASH_SCREEN_ALIGN) ||
+		    x == BMP_ALIGN_CENTER ||
+		    y == BMP_ALIGN_CENTER)
+			align = true;
+
 		ret = video_bmp_display(dev, addr, x, y, align);
 	}
 #elif defined(CONFIG_LCD)