diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2019-06-25 21:04:53 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2019-06-25 21:04:53 +0200 |
commit | f166d006330c788c8706c93d3290eff6265cde58 (patch) | |
tree | 627ff129532d71116fa21ae670062868309d3d3e /spline | |
parent | 0b7de47259713acef2682755cc79263883741bf1 (diff) |
spline: fix text going out of bounds
Diffstat (limited to 'spline')
-rw-r--r-- | spline/spline-widget.cpp | 27 | ||||
-rw-r--r-- | spline/spline-widget.hpp | 2 |
2 files changed, 12 insertions, 17 deletions
diff --git a/spline/spline-widget.cpp b/spline/spline-widget.cpp index 363720c8..8f8bdfb4 100644 --- a/spline/spline-widget.cpp +++ b/spline/spline-widget.cpp @@ -96,7 +96,6 @@ void spline_widget::drawBackground() font.setStyleHint(QFont::Monospace, QFont::PreferAntialias); painter.setFont(font); const QFontMetricsF metrics(font); - const double height = metrics.height(); QColor color__(176, 190, 209, 127); @@ -109,6 +108,8 @@ void spline_widget::drawBackground() const double maxx = config->max_input(); const double maxy = config->max_output(); + const double space_width = metrics.horizontalAdvance(' '); + // vertical grid for (int i = 0; i <= maxy; i += ystep) { @@ -117,11 +118,11 @@ void spline_widget::drawBackground() QPointF(pixel_bounds.x(), y), QPointF(pixel_bounds.x() + pixel_bounds.width(), y), pen); - painter.drawText(QRectF(10, - y - height/2, - pixel_bounds.left(), - height), - QString::number(i)); + QString text = QString::number(i); + QRectF rect = metrics.boundingRect(text); + painter.drawText(QPointF(pixel_bounds.x() - metrics.horizontalAdvance(text) - space_width, + y - rect.height()/2 - rect.top()), + text); } // horizontal grid @@ -135,16 +136,10 @@ void spline_widget::drawBackground() const QString text = QString::number(i); - const double width = -#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0) - metrics.horizontalAdvance(text); -#else - metrics.width(text); -#endif + QRectF rect = metrics.boundingRect(text); - painter.drawText(QRectF{x - width/2, - pixel_bounds.height() + 10 + height, - width, height}, + painter.drawText(QPointF(x - rect.width()/2 - rect.left(), + pixel_bounds.height() - rect.top() + rect.height() + metrics.descent()/4), text); } } @@ -188,7 +183,7 @@ void spline_widget::drawFunction() } ); - painter.setPen(QPen(color_, 1.75, Qt::SolidLine, Qt::FlatCap)); + painter.setPen(QPen(color_, 2, Qt::SolidLine, Qt::FlatCap)); const double dpr = devicePixelRatioF(); const double line_length_pixels = std::fmax(1, 2 * dpr); diff --git a/spline/spline-widget.hpp b/spline/spline-widget.hpp index ab0060f2..f1523361 100644 --- a/spline/spline-widget.hpp +++ b/spline/spline-widget.hpp @@ -107,7 +107,7 @@ private: bool draw_function = true, preview_only = false; // point's circle radius on the widget - static constexpr int point_size_in_pixels_ = 4; + static constexpr int point_size_in_pixels_ = 5; const double point_size_in_pixels = point_size_in_pixels_ * screen_dpi(); }; |