overlays: Fix text rendering position

- It should be offset by one line, not half
- Also tweak every overlay element affected by this
  to look as it used to
This commit is contained in:
VelocityRa 2018-06-17 19:43:46 +03:00 committed by kd-11
parent 44449dd9e9
commit 07731d0228
2 changed files with 18 additions and 21 deletions

View file

@ -794,9 +794,9 @@ namespace rsx
text_extents_w = std::max(v.values[0], text_extents_w); text_extents_w = std::max(v.values[0], text_extents_w);
//Apply transform. //Apply transform.
//(0, 0) has text sitting 50% off the top left corner (text is outside the rect) hence the offset by text height / 2 //(0, 0) has text sitting one line off the top left corner (text is outside the rect) hence the offset by text height
v.values[0] += x + padding_left; v.values[0] += x + padding_left;
v.values[1] += y + padding_top + (f32)renderer->size_px * 0.5f; v.values[1] += y + padding_top + (f32)renderer->size_px;
} }
if (alignment == center) if (alignment == center)
@ -1201,7 +1201,8 @@ namespace rsx
struct image_button : public image_view struct image_button : public image_view
{ {
u16 text_offset = 0; const u16 text_horizontal_offset = 25;
u16 m_text_offset = 0;
image_button() image_button()
{ {
@ -1219,7 +1220,7 @@ namespace rsx
void set_size(u16 /*w*/, u16 h) override void set_size(u16 /*w*/, u16 h) override
{ {
image_view::set_size(h, h); image_view::set_size(h, h);
text_offset = (h / 2) + 10; //By default text is at the horizontal center m_text_offset = (h / 2) + text_horizontal_offset; //By default text is at the horizontal center
} }
compiled_resource& get_compiled() override compiled_resource& get_compiled() override
@ -1227,18 +1228,14 @@ namespace rsx
if (!is_compiled) if (!is_compiled)
{ {
auto& compiled = image_view::get_compiled(); auto& compiled = image_view::get_compiled();
for (auto &cmd : compiled.draw_commands) for (auto& cmd : compiled.draw_commands)
{ {
if (cmd.config.texture_ref == image_resource_id::font_file) if (cmd.config.texture_ref == image_resource_id::font_file)
{ {
//Text, translate geometry to the right //Text, translate geometry to the right
const f32 text_height = font_ref ? font_ref->size_px : 16.f;
const f32 offset_y = (h > text_height) ? (f32)(h - text_height) : ((f32)h - text_height);
for (auto &v : cmd.verts) for (auto &v : cmd.verts)
{ {
v.values[0] += text_offset + 15.f; v.values[0] += m_text_offset;
v.values[1] += offset_y + 5.f;
} }
} }
} }
@ -1317,7 +1314,7 @@ namespace rsx
{ {
u16 text_w, text_h; u16 text_w, text_h;
text_view.measure_text(text_w, text_h); text_view.measure_text(text_w, text_h);
text_h += 5; text_h += 13;
overlay_element::set_pos(_x, _y + text_h); overlay_element::set_pos(_x, _y + text_h);
indicator.set_pos(_x, _y + text_h); indicator.set_pos(_x, _y + text_h);

View file

@ -491,7 +491,7 @@ namespace rsx
std::unique_ptr<overlay_element> header_text = std::make_unique<label>(text1); std::unique_ptr<overlay_element> header_text = std::make_unique<label>(text1);
std::unique_ptr<overlay_element> subtext = std::make_unique<label>(text2); std::unique_ptr<overlay_element> subtext = std::make_unique<label>(text2);
padding->set_size(1, 10); padding->set_size(1, 1);
header_text->set_size(800, 40); header_text->set_size(800, 40);
header_text->text = text1; header_text->text = text1;
header_text->set_font("Arial", 16); header_text->set_font("Arial", 16);
@ -550,11 +550,11 @@ namespace rsx
m_list->set_pos(20, 85); m_list->set_pos(20, 85);
m_description->set_font("Arial", 20); m_description->set_font("Arial", 20);
m_description->set_pos(20, 50); m_description->set_pos(20, 37);
m_description->text = "Save Dialog"; m_description->text = "Save Dialog";
m_time_thingy->set_font("Arial", 14); m_time_thingy->set_font("Arial", 14);
m_time_thingy->set_pos(1000, 40); m_time_thingy->set_pos(1000, 30);
m_time_thingy->text = current_time(); m_time_thingy->text = current_time();
static_cast<label*>(m_description.get())->auto_resize(); static_cast<label*>(m_description.get())->auto_resize();
@ -736,7 +736,7 @@ namespace rsx
background.back_color.a = 0.85f; background.back_color.a = 0.85f;
text_display.set_size(1100, 40); text_display.set_size(1100, 40);
text_display.set_pos(90, 375); text_display.set_pos(90, 364);
text_display.set_font("Arial", 16); text_display.set_font("Arial", 16);
text_display.align_text(overlay_element::text_align::center); text_display.align_text(overlay_element::text_align::center);
text_display.set_wrap_text(true); text_display.set_wrap_text(true);
@ -844,13 +844,13 @@ namespace rsx
num_progress_bars = type.progress_bar_count; num_progress_bars = type.progress_bar_count;
if (num_progress_bars) if (num_progress_bars)
{ {
u16 offset = 50; u16 offset = 58;
progress_1.set_pos(240, 420); progress_1.set_pos(240, 412);
if (num_progress_bars > 1) if (num_progress_bars > 1)
{ {
progress_2.set_pos(240, 470); progress_2.set_pos(240, 462);
offset = 90; offset = 98;
} }
//Push the other stuff down //Push the other stuff down
@ -1003,7 +1003,7 @@ namespace rsx
image.back_color.a = 0.f; image.back_color.a = 0.f;
text_view.set_pos(85, 0); text_view.set_pos(85, 0);
text_view.set_padding(0.f, 0.f, 30.f, 0.f); text_view.set_padding(0.f, 0.f, 24.f, 0.f);
text_view.set_font("Arial", 8); text_view.set_font("Arial", 8);
text_view.align_text(overlay_element::text_align::center); text_view.align_text(overlay_element::text_align::center);
text_view.back_color.a = 0.f; text_view.back_color.a = 0.f;
@ -1072,7 +1072,7 @@ namespace rsx
m_text.set_font("Arial", 16); m_text.set_font("Arial", 16);
m_text.set_text("Compiling shaders"); m_text.set_text("Compiling shaders");
m_text.auto_resize(); m_text.auto_resize();
m_text.set_pos(20, 700); m_text.set_pos(20, 690);
m_text.back_color.a = 0.f; m_text.back_color.a = 0.f;