expo: video: Correct kerning output in console_truetype_putc_xy()
While the text is measured correctly, taking account of kerning information, this is not used when actually displaying the text. This results in a mismatch between the measurement and the output. Fix this by adding the kerning offset to each character position. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -271,7 +271,7 @@ static int cedit_render(struct unit_test_state *uts)
|
||||
ut_asserteq(ID_AC_OFF, menu->cur_item_id);
|
||||
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(4888, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(4926, video_compress_fb(uts, dev, false));
|
||||
ut_assertok(video_check_copy_fb(uts, dev));
|
||||
|
||||
/* move to the second menu */
|
||||
@@ -279,54 +279,54 @@ static int cedit_render(struct unit_test_state *uts)
|
||||
act.select.id = ID_POWER_LOSS;
|
||||
ut_assertok(cedit_do_action(exp, scn, vid_priv, &act));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(4967, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(5000, video_compress_fb(uts, dev, false));
|
||||
|
||||
/* open the menu */
|
||||
act.type = EXPOACT_OPEN;
|
||||
act.select.id = ID_POWER_LOSS;
|
||||
ut_assertok(cedit_do_action(exp, scn, vid_priv, &act));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(5397, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(5390, video_compress_fb(uts, dev, false));
|
||||
|
||||
/* close the menu */
|
||||
act.type = EXPOACT_CLOSE;
|
||||
act.select.id = ID_POWER_LOSS;
|
||||
ut_assertok(cedit_do_action(exp, scn, vid_priv, &act));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(4967, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(5000, video_compress_fb(uts, dev, false));
|
||||
|
||||
/* open the menu again to check it looks the same */
|
||||
act.type = EXPOACT_OPEN;
|
||||
act.select.id = ID_POWER_LOSS;
|
||||
ut_assertok(cedit_do_action(exp, scn, vid_priv, &act));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(5397, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(5390, video_compress_fb(uts, dev, false));
|
||||
|
||||
/* close the menu */
|
||||
act.type = EXPOACT_CLOSE;
|
||||
act.select.id = ID_POWER_LOSS;
|
||||
ut_assertok(cedit_do_action(exp, scn, vid_priv, &act));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(4967, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(5000, video_compress_fb(uts, dev, false));
|
||||
|
||||
act.type = EXPOACT_OPEN;
|
||||
act.select.id = ID_POWER_LOSS;
|
||||
ut_assertok(cedit_do_action(exp, scn, vid_priv, &act));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(5397, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(5390, video_compress_fb(uts, dev, false));
|
||||
|
||||
act.type = EXPOACT_POINT_ITEM;
|
||||
act.select.id = ID_AC_ON;
|
||||
ut_assertok(cedit_do_action(exp, scn, vid_priv, &act));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(5341, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(5363, video_compress_fb(uts, dev, false));
|
||||
|
||||
/* select it */
|
||||
act.type = EXPOACT_SELECT;
|
||||
act.select.id = ID_AC_ON;
|
||||
ut_assertok(cedit_do_action(exp, scn, vid_priv, &act));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(4939, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(4964, video_compress_fb(uts, dev, false));
|
||||
|
||||
ut_asserteq(ID_AC_ON, menu->cur_item_id);
|
||||
|
||||
@@ -335,14 +335,14 @@ static int cedit_render(struct unit_test_state *uts)
|
||||
act.select.id = ID_MACHINE_NAME;
|
||||
ut_assertok(cedit_do_action(exp, scn, vid_priv, &act));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(4850, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(4868, video_compress_fb(uts, dev, false));
|
||||
|
||||
/* open it */
|
||||
act.type = EXPOACT_OPEN;
|
||||
act.select.id = ID_MACHINE_NAME;
|
||||
ut_assertok(cedit_do_action(exp, scn, vid_priv, &act));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(4883, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(4871, video_compress_fb(uts, dev, false));
|
||||
|
||||
/*
|
||||
* Send some keypresses. Note that the console must be enabled so that
|
||||
@@ -358,7 +358,7 @@ static int cedit_render(struct unit_test_state *uts)
|
||||
ut_silence_console(uts);
|
||||
ut_assertok(cedit_arange(exp, vid_priv, scn->id));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(5033, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(5076, video_compress_fb(uts, dev, false));
|
||||
|
||||
expo_destroy(exp);
|
||||
cur_exp = NULL;
|
||||
@@ -401,7 +401,7 @@ static int cedit_render_lineedit(struct unit_test_state *uts)
|
||||
ut_asserteq(20, tline->pos);
|
||||
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(5315, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(5344, video_compress_fb(uts, dev, false));
|
||||
ut_assertok(video_check_copy_fb(uts, dev));
|
||||
|
||||
/* move to the line-edit field */
|
||||
@@ -409,14 +409,14 @@ static int cedit_render_lineedit(struct unit_test_state *uts)
|
||||
act.select.id = ID_MACHINE_NAME;
|
||||
ut_assertok(cedit_do_action(exp, scn, vid_priv, &act));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(5372, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(5408, video_compress_fb(uts, dev, false));
|
||||
|
||||
/* open it */
|
||||
act.type = EXPOACT_OPEN;
|
||||
act.select.id = ID_MACHINE_NAME;
|
||||
ut_assertok(cedit_do_action(exp, scn, vid_priv, &act));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(5259, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(5291, video_compress_fb(uts, dev, false));
|
||||
|
||||
/* delete some characters */
|
||||
ut_unsilence_console(uts);
|
||||
@@ -427,7 +427,7 @@ static int cedit_render_lineedit(struct unit_test_state *uts)
|
||||
|
||||
ut_assertok(cedit_arange(exp, vid_priv, scn->id));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(5126, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(5209, video_compress_fb(uts, dev, false));
|
||||
|
||||
expo_destroy(exp);
|
||||
cur_exp = NULL;
|
||||
|
||||
@@ -678,17 +678,17 @@ static int expo_render_image(struct unit_test_state *uts)
|
||||
/* render it */
|
||||
expo_set_scene_id(exp, SCENE1);
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(18786, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(18792, video_compress_fb(uts, dev, false));
|
||||
|
||||
ut_asserteq(0, scn->highlight_id);
|
||||
ut_assertok(scene_arrange(scn));
|
||||
ut_asserteq(0, scn->highlight_id);
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(20433, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(20401, video_compress_fb(uts, dev, false));
|
||||
|
||||
ut_assertok(scene_arrange(scn));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(20433, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(20401, video_compress_fb(uts, dev, false));
|
||||
|
||||
scene_set_highlight_id(scn, OBJ_MENU);
|
||||
ut_asserteq(OBJ_MENU, scn->highlight_id);
|
||||
@@ -700,7 +700,7 @@ static int expo_render_image(struct unit_test_state *uts)
|
||||
ut_assert(!(obj->flags & SCENEOF_HIDE));
|
||||
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(20433, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(20401, video_compress_fb(uts, dev, false));
|
||||
|
||||
/* move down */
|
||||
ut_assertok(expo_send_key(exp, BKEY_DOWN));
|
||||
@@ -713,7 +713,7 @@ static int expo_render_image(struct unit_test_state *uts)
|
||||
ut_asserteq(ITEM2, scene_menu_get_cur_item(scn, OBJ_MENU));
|
||||
ut_assertok(scene_arrange(scn));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(19673, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(19650, video_compress_fb(uts, dev, false));
|
||||
ut_assertok(video_check_copy_fb(uts, dev));
|
||||
|
||||
/* hide the text editor since the following tets don't need it */
|
||||
@@ -722,18 +722,18 @@ static int expo_render_image(struct unit_test_state *uts)
|
||||
/* do some alignment checks */
|
||||
ut_assertok(scene_obj_set_halign(scn, OBJ_TEXT3, SCENEOA_CENTRE));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(16368, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(16322, video_compress_fb(uts, dev, false));
|
||||
ut_assertok(scene_obj_set_halign(scn, OBJ_TEXT3, SCENEOA_RIGHT));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(16321, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(16276, video_compress_fb(uts, dev, false));
|
||||
|
||||
ut_assertok(scene_obj_set_halign(scn, OBJ_TEXT3, SCENEOA_LEFT));
|
||||
ut_assertok(scene_obj_set_valign(scn, OBJ_TEXT3, SCENEOA_CENTRE));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(18763, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(18753, video_compress_fb(uts, dev, false));
|
||||
ut_assertok(scene_obj_set_valign(scn, OBJ_TEXT3, SCENEOA_BOTTOM));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(18714, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(18696, video_compress_fb(uts, dev, false));
|
||||
|
||||
/* make sure only the preview for the second item is shown */
|
||||
obj = scene_obj_find(scn, ITEM1_PREVIEW, SCENEOBJT_NONE);
|
||||
@@ -759,7 +759,7 @@ static int expo_render_image(struct unit_test_state *uts)
|
||||
exp->show_highlight = true;
|
||||
ut_assertok(scene_arrange(scn));
|
||||
ut_assertok(expo_render(exp));
|
||||
ut_asserteq(18844, video_compress_fb(uts, dev, false));
|
||||
ut_asserteq(18805, video_compress_fb(uts, dev, false));
|
||||
|
||||
/* now try in text mode */
|
||||
expo_set_text_mode(exp, true);
|
||||
|
||||
Reference in New Issue
Block a user