Skip to contentSkip to conversation

cmp_bmp: allow negative X, Y values for display command

PATCH New Timur Tabi 4 participants 8 messages Aug 25, 2010 – Aug 27, 2010

lore
Share & tools
lore

Timur Tabi

author
#0 lore raw

PATCH 2/2 cmp_bmp: allow negative X, Y values for display command

The 'bmp display' command accepts optional X and Y values for the position of the image to be displayed. Change the code which parses the command line to accept negative values.

This feature is useful if you want to use a frame buffer for the console, and you want a banner displayed on the top of the screen that never scrolls off. This can be accomplished by declaring that the width and height of the video screen is smaller than it really is, and then drawing an image in the undeclared area.

For example, if you have 1280x1024 monitor, and you want to display a banner on the top of the screen that's 100 pixels tall, then video_hw_init() should say that display is really 1280x924, and then the banner should be drawn at position (0, -100).

---
 common/cmd_bmp.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
common/cmd_bmp.c +2 -2
index d51cc55..06c1547 100644
@@ -122,8 +122,8 @@ 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);
+	        x = simple_strtol(argv[2], NULL, 10);
+	        y = simple_strtol(argv[3], NULL, 10);
 	        break;
 	default:
 		return cmd_usage(cmdtp);
Signature · 1 line
1.7.2.1
#1 lore raw

PATCH 2/2 cmp_bmp: allow negative X, Y values for display command

Hi Timur,

Quoted 10 lines

The 'bmp display' command accepts optional X and Y values for the position of the image to be displayed. Change the code which parses the command line to accept negative values.

This feature is useful if you want to use a frame buffer for the console, and you want a banner displayed on the top of the screen that never scrolls off. This can be accomplished by declaring that the width and height of the video screen is smaller than it really is, and then drawing an image in the undeclared area.

Quoted 4 lines

For example, if you have 1280x1024 monitor, and you want to display a banner on the top of the screen that's 100 pixels tall, then video_hw_init() should say that display is really 1280x924, and then the banner should be drawn at position (0, -100).

Ugh. I have to admit that I really dislike this patch. What you effectively do is to erase the "aboluteness" of coordinates. Instead of the current 1:1 correspondence between a pixel coordinate and its location on the physical display, you introduce virtual coordinates without any possibility to inquire about the virtual coordinate system in use.

Currently if we display an image at (0, 0) we can be sure that it appears at the edge of the display. With your system one cannot tell without knowing the complete context.

Can't you come up with a scheme which does not destroy this valuable property of our coordinates?

Cheers
Detlev

Signature · 8 lines
When you  loosen yourself from  all the obvious delusions  - religion,
ideology,  Communism - you're  still left  with the  myth of  your own
goodness. Which is the final delusion.
                                          -- Philip Roth
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de
#2 lore raw

PATCH 2/2 cmp_bmp: allow negative X, Y values for display command

Quoted 2 lines · Detlev Zundel

Can't you come up with a scheme which does not destroy this valuable property of our coordinates?

I'm only doing two things:

1) Exposing a feature of the existing code. Notice that I only had to change two lines in the cmd_bmp code, not any of the core bitmap code, which already takes signed integers.

2) Trying to use the existing bitmap code to do the same thing that we do with the Freescale-specific bitmap code.

If you can tell me how I can display a logo on top of the screen, and have all of the boot text appear below the logo, I'll be happy to do that instead.
The logo will then scroll off the top of the screen, but that's okay.

Signature · 2 lines
Timur Tabi
Linux kernel developer
#3 lore raw

PATCH 2/2 cmp_bmp: allow negative X, Y values for display command

Hi Timur,

Quoted 10 lines
Quoted 2 lines · Detlev Zundel

Can't you come up with a scheme which does not destroy this valuable property of our coordinates?

I'm only doing two things:

1) Exposing a feature of the existing code. Notice that I only had to change two lines in the cmd_bmp code, not any of the core bitmap code, which already takes signed integers.

Yes, I fully expected such an answer. Please show me the "existing feature" which started to leak in such virtual coordinates into the code. We should take a look at this and re-evaluate it.

Quoted 6 lines

2) Trying to use the existing bitmap code to do the same thing that we do with the Freescale-specific bitmap code.

If you can tell me how I can display a logo on top of the screen, and have all of the boot text appear below the logo, I'll be happy to do that instead.
The logo will then scroll off the top of the screen, but that's okay.

We can discuss this once I see the code that makes virtual coordinates neccessary.

Cheers
Detlev

Signature · 8 lines
Quality isn't something you lay on top of subjects and objects like
tinsel on a christmas tree.  Real Quality must be the source of the
subjects and objects, the cone from which the tree must start.
                                        -- Robert M. Pirsig
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de
#4 lore raw

PATCH 2/2 cmp_bmp: allow negative X, Y values for display command

Quoted 2 lines · Detlev Zundel

We can discuss this once I see the code that makes virtual coordinates

If you can help me figure out how to get the boot text to appear below the logo, I won't need to use virtual coordinates.

Quoted 1 line
#5 lore raw

PATCH 2/2 cmp_bmp: allow negative X, Y values for display command

Dear Timur,

Quoted 6 lines · Detlev Zundel
Quoted 3 lines

We can discuss this once I see the code that makes virtual coordinates

If you can help me figure out how to get the boot text to appear below the logo, I won't need to use virtual coordinates.

1. would it be possible to output several line-feeds before u-boot starts its output?

2. would it be possible to just manipulate the initial Y for text output?

3. most elegant, however, would be to add a scroll area feature...

just my 0.001 ? ;)

Reinhard

#6 lore raw

PATCH 2/2 cmp_bmp: allow negative X, Y values for display command

Quoted 1 line · Reinhard Meyer

2. would it be possible to just manipulate the initial Y for text output?

I'll try this approach. It should be simple enough.

Quoted 1 line
author
#7 lore raw

PATCH 2/2 cmp_bmp: allow negative X, Y values for display command

In reply to Timur Tabi

I'm rescinding this patch. I have some new code that doesn't need this hack.

Quoted 16 lines · Timur Tabi

The 'bmp display' command accepts optional X and Y values for the position of the image to be displayed. ?Change the code which parses the command line to accept negative values.

This feature is useful if you want to use a frame buffer for the console, and you want a banner displayed on the top of the screen that never scrolls off. This can be accomplished by declaring that the width and height of the video screen is smaller than it really is, and then drawing an image in the undeclared area.

For example, if you have 1280x1024 monitor, and you want to display a banner on the top of the screen that's 100 pixels tall, then video_hw_init() should say that display is really 1280x924, and then the banner should be drawn at position (0, -100).

Signature · 2 lines
Timur Tabi
Linux kernel developer at Freescale