From 823fb8904d5aa1fb502255363a9ae48b9263d859 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Thu, 6 Mar 2025 19:58:43 -0600 Subject: [PATCH] Set scale-aware text size when initializing the object --- src/game/boe.text.cpp | 3 ++- src/gfx/render_text.cpp | 8 ++++---- src/gfx/render_text.hpp | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/game/boe.text.cpp b/src/game/boe.text.cpp index 14f70848..414c80ea 100644 --- a/src/game/boe.text.cpp +++ b/src/game/boe.text.cpp @@ -24,6 +24,7 @@ const int TEXT_BUF_LEN = 70; #include "fileio/resmgr/res_font.hpp" #include "spell.hpp" #include "tools/enum_map.hpp" +#include "tools/winutil.hpp" #include "replay.hpp" #include @@ -1089,7 +1090,7 @@ void print_buf () { location moveTo; while((line_to_print!= buf_pointer) && (num_lines_printed < LINES_IN_TEXT_WIN)) { moveTo = location(4, 1 + 12 * num_lines_printed); - sf::Text text(text_buffer[line_to_print].line, *ResMgr::fonts.get("plain"), 12); + sf::Text text(text_buffer[line_to_print].line, *ResMgr::fonts.get("plain"), 12 * get_ui_scale()); text.setColor(Colours::BLACK); text.setPosition(moveTo); draw_scale_aware_text(text_area_gworld(), text); diff --git a/src/gfx/render_text.cpp b/src/gfx/render_text.cpp index 748fa799..3a27aae1 100644 --- a/src/gfx/render_text.cpp +++ b/src/gfx/render_text.cpp @@ -14,7 +14,7 @@ #include #include "winutil.hpp" -void TextStyle::applyTo(sf::Text& text) { +void TextStyle::applyTo(sf::Text& text, double scale) { switch(font) { case FONT_PLAIN: text.setFont(*ResMgr::fonts.get("plain")); @@ -29,7 +29,7 @@ void TextStyle::applyTo(sf::Text& text) { text.setFont(*ResMgr::fonts.get("maidenword")); break; } - text.setCharacterSize(pointSize); + text.setCharacterSize(pointSize * scale); int style = sf::Text::Regular; if(italic) style |= sf::Text::Italic; if(underline) style |= sf::Text::Underlined; @@ -153,8 +153,6 @@ sf::Vector2f scaled_view_top_left(sf::RenderTarget& dest_window, sf::View& scale } void draw_scale_aware_text(sf::RenderTarget& dest_window, sf::Text str_to_draw) { - str_to_draw.setCharacterSize(str_to_draw.getCharacterSize() * get_ui_scale()); - if(dynamic_cast(&dest_window) != nullptr){ // Temporarily switch window to its unscaled view to draw scale-aware text sf::View scaled_view = dest_window.getView(); @@ -197,6 +195,8 @@ static void win_draw_string(sf::RenderTarget& dest_window,rectangle dest_rect,st str_to_draw.setString(str); short total_width = str_to_draw.getLocalBounds().width; + + options.style.applyTo(str_to_draw, get_ui_scale()); eTextMode mode = options.mode; if(mode == eTextMode::WRAP && total_width < dest_rect.width() && !options.right_align) diff --git a/src/gfx/render_text.hpp b/src/gfx/render_text.hpp index b518cfa4..e1c4a7a1 100644 --- a/src/gfx/render_text.hpp +++ b/src/gfx/render_text.hpp @@ -36,7 +36,7 @@ struct TextStyle { int pointSize = 10, lineHeight = 10; sf::Color colour; TextStyle() : colour(sf::Color::Black) {} - void applyTo(sf::Text& text); + void applyTo(sf::Text& text, double scale = 1.0); }; // elements: std::make_tuple(last_line_break, last_word_break, line_width)