diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2019-01-16 06:20:17 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2019-01-16 07:49:13 +0100 |
commit | d4fbad4d2931aa45308270eb995567314390e334 (patch) | |
tree | 927ea207ec81bb959fa72e95ed5d90ea43e3d479 /pose-widget | |
parent | 07b45ca4578ccaed91f7f3c70e82dc7ffbdf47ab (diff) |
pose-widget: enable hidpi
Diffstat (limited to 'pose-widget')
-rw-r--r-- | pose-widget/pose-widget.cpp | 13 | ||||
-rw-r--r-- | pose-widget/pose-widget.hpp | 15 |
2 files changed, 13 insertions, 15 deletions
diff --git a/pose-widget/pose-widget.cpp b/pose-widget/pose-widget.cpp index 9a097340..ff65d43a 100644 --- a/pose-widget/pose-widget.cpp +++ b/pose-widget/pose-widget.cpp @@ -24,14 +24,11 @@ using namespace pose_widget_impl; -pose_transform::pose_transform(QWidget* dst) : - dst(dst), - front(QImage{":/images/side1.png"}.convertToFormat(QImage::Format_ARGB32)), - back(QImage{":/images/side6.png"}.convertToFormat(QImage::Format_ARGB32)), - image(w, h, QImage::Format_ARGB32), - image2(w, h, QImage::Format_ARGB32), - fresh(false) +pose_transform::pose_transform(QWidget* dst, double dpr) : dst(dst) { + for (QImage* img : { &image, &image2, &front, &back }) + img->setDevicePixelRatio(dpr); + image.fill(Qt::transparent); image2.fill(Qt::transparent); } @@ -79,7 +76,7 @@ end: } } -pose_widget::pose_widget(QWidget* parent) : QWidget(parent), xform(this) +pose_widget::pose_widget(QWidget* parent) : QWidget(parent), xform{this, devicePixelRatioF()} { rotate_sync(0,0,0, 0,0,0); } diff --git a/pose-widget/pose-widget.hpp b/pose-widget/pose-widget.hpp index 87367b96..aa51957e 100644 --- a/pose-widget/pose-widget.hpp +++ b/pose-widget/pose-widget.hpp @@ -47,7 +47,7 @@ public: struct pose_transform final : QThread { - pose_transform(QWidget* dst); + pose_transform(QWidget* dst, double device_pixel_ratio); ~pose_transform() override; void rotate_async(double xAngle, double yAngle, double zAngle, double x, double y, double z); @@ -63,8 +63,7 @@ struct pose_transform final : QThread void project_quad_texture(); std::pair<vec2i, vec2i> get_bounds(const vec2& size); - template<typename F> - inline void with_image_lock(F&& fun); + template<typename F> inline void with_image_lock(F&& fun); rmat rotation, rotation_; vec3 translation, translation_; @@ -73,8 +72,10 @@ struct pose_transform final : QThread QWidget* dst; - QImage front, back; - QImage image, image2; + QImage front{QImage{":/images/side1.png"}.convertToFormat(QImage::Format_ARGB32)}; + QImage back{QImage{":/images/side6.png"}.convertToFormat(QImage::Format_ARGB32)}; + QImage image{w, h, QImage::Format_ARGB32}; + QImage image2{w, h, QImage::Format_ARGB32}; struct uv_ // NOLINT(cppcoreguidelines-pro-type-member-init) { @@ -83,7 +84,7 @@ struct pose_transform final : QThread }; std::vector<uv_> uv_vec; - std::atomic<bool> fresh; + std::atomic<bool> fresh{false}; static constexpr int w = 320, h = 240; }; @@ -103,4 +104,4 @@ private: } -using pose_widget_impl::pose_widget; +using pose_widget = pose_widget_impl::pose_widget; |