dm: video: correctly set the cursor position
PATCH v3 1/1 dm: video: correctly set the cursor position
The terminal escape sequence ESC [ <x> ; <y> H is used to set the cursor position. According to the ECMA 48 standard the upper left corner in the escape sequences is [1, 1]. The video uclass uses [0, 0] as upper left corner.
---
v3:
update unit test
v2
remove trailing whitespace
--- drivers/video/vidconsole-uclass.c | 8 ++++++++ test/dm/video.c | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-)
drivers/video/vidconsole-uclass.c +8 -0
@@ -272,6 +272,14 @@ static void vidconsole_escape_char(struct udevice *dev, char ch) s++;/* ; */ s =parsenum (s, &col); +/* +* Video origin is [0, 0], terminal origin is [1, 1]. +*/ +if (row) + --row; +if (col) + --col; +set_cursor_position (priv, row, col);break ;
test/dm/video.c +2 -2
@@ -178,12 +178,12 @@ static int dm_test_video_ansi(struct unit_test_state *uts)/* test set-cursor: [%d;%df */ vidconsole_put_string (con,"abc" ANSI_ESC "[2;2fab" ANSI_ESC "[4;4fcd" ); -ut_asserteq (142 ,compress_frame_buffer (dev)); +ut_asserteq (143 ,compress_frame_buffer (dev));/* test colors (30-37 fg color, 40-47 bg color) */ vidconsole_put_string (con,ANSI_ESC "[30;41mfoo" );/* black on red */ vidconsole_put_string (con,ANSI_ESC "[33;44mbar" );/* yellow on blue */ -ut_asserteq (265 ,compress_frame_buffer (dev)); +ut_asserteq (272 ,compress_frame_buffer (dev));return 0 ; }
Signature · 1 line
2.19.1
PATCH v3 1/1 dm: video: correctly set the cursor position
Quoted 11 lines · Heinrich Schuchardt
The terminal escape sequence ESC [ <x> ; <y> H is used to set the cursor position. According to the ECMA 48 standard the upper left corner in the escape sequences is [1, 1]. The video uclass uses [0, 0] as upper left corner.
Signed-off-by Heinrich Schuchardt <[email protected]>---
v3:
update unit test
v2
remove trailing whitespace
Quoted 4 lines
--- drivers/video/vidconsole-uclass.c | 8 ++++++++ test/dm/video.c | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-)
PATCH v3 1/1 dm: video: correctly set the cursor position
In reply to Heinrich SchuchardtQuoted 11 lines · On Sat, 10 Nov 2018 19:55:48 +0100 Heinrich Schuchardt xypron.glpk at gmx.de…
The terminal escape sequence ESC [ <x> ; <y> H is used to set the cursor position. According to the ECMA 48 standard the upper left corner in the escape sequences is [1, 1]. The video uclass uses [0, 0] as upper left corner.
Signed-off-by Heinrich Schuchardt <[email protected]>---
v3:
update unit test
v2
remove trailing whitespace
Quoted 4 lines
--- drivers/video/vidconsole-uclass.c | 8 ++++++++ test/dm/video.c | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-)
Applied to u-boot-video/master, thanks!
--
Anatolij