From 9ea3ed47a68150907e229b96df8d5025ea41b9f1 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Tue, 12 Sep 2023 23:55:00 -0500 Subject: [PATCH] Use unit library to perform font size conversions --- scwx-qt/source/scwx/qt/main/main.cpp | 2 ++ scwx-qt/source/scwx/qt/types/font_types.hpp | 26 +++++++++++++++++++++ scwx-qt/source/scwx/qt/util/tooltip.cpp | 14 ++++++----- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/scwx-qt/source/scwx/qt/main/main.cpp b/scwx-qt/source/scwx/qt/main/main.cpp index 274c13ca..b841b846 100644 --- a/scwx-qt/source/scwx/qt/main/main.cpp +++ b/scwx-qt/source/scwx/qt/main/main.cpp @@ -1,3 +1,5 @@ +#define NOMINMAX + #include #include #include diff --git a/scwx-qt/source/scwx/qt/types/font_types.hpp b/scwx-qt/source/scwx/qt/types/font_types.hpp index c6f42506..6fc8c506 100644 --- a/scwx-qt/source/scwx/qt/types/font_types.hpp +++ b/scwx-qt/source/scwx/qt/types/font_types.hpp @@ -1,5 +1,31 @@ #pragma once +#include + +namespace units +{ + +namespace dimension +{ + +struct font_size_tag +{ + static constexpr const char* const name = "font size"; + static constexpr const char* const abbreviation = "px"; +}; + +using font_size = make_dimension; + +} // namespace dimension + +UNIT_ADD(font_size, + pixels, + px, + conversion_factor, dimension::font_size>) +UNIT_ADD(font_size, points, pt, conversion_factor, pixels<>>) + +} // namespace units + namespace scwx { namespace qt diff --git a/scwx-qt/source/scwx/qt/util/tooltip.cpp b/scwx-qt/source/scwx/qt/util/tooltip.cpp index cc5d0ff1..6145225a 100644 --- a/scwx-qt/source/scwx/qt/util/tooltip.cpp +++ b/scwx-qt/source/scwx/qt/util/tooltip.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include @@ -101,21 +102,22 @@ void Show(const std::string& text, const QPointF& mouseGlobalPos) else if (tooltipMethod_ == TooltipMethod::QLabel) { // Get monospace font size - std::size_t fontSize = 16; - auto fontSizes = + units::font_size::pixels fontSize {16}; + auto fontSizes = manager::SettingsManager::general_settings().font_sizes().GetValue(); if (fontSizes.size() > 1) { - fontSize = fontSizes[1]; + fontSize = units::font_size::pixels {fontSizes[1]}; } else if (fontSizes.size() > 0) { - fontSize = fontSizes[0]; + fontSize = units::font_size::pixels {fontSizes[0]}; } // Configure the label - tooltipLabel_->setFont( - QFont("Inconsolata", static_cast(std::round(fontSize * 0.72)))); + QFont font("Inconsolata"); + font.setPointSizeF(units::font_size::points(fontSize).value()); + tooltipLabel_->setFont(font); tooltipLabel_->setText(QString::fromStdString(displayText)); // Get the screen the label will be displayed on