From 15ea0440adce7b16577444acb71c74973c03bb47 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sat, 20 May 2023 14:46:58 +0200 Subject: [PATCH] profile: read DPR from QML page This is needed on mobile, where some screens have a high DPR. Signed-off-by: Berthold Stoeger --- profile-widget/profileview.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/profile-widget/profileview.cpp b/profile-widget/profileview.cpp index 4a9e4735b..935125a71 100644 --- a/profile-widget/profileview.cpp +++ b/profile-widget/profileview.cpp @@ -24,8 +24,7 @@ ProfileView::ProfileView(QQuickItem *parent) : ChartView(parent, ProfileZValue:: zoomLevel(0), zoomedPosition(0.0), empty(true), - shouldCalculateMax(true), - profileScene(std::make_unique(1.0, false, false)) + shouldCalculateMax(true) { setBackgroundColor(Qt::black); setFlag(ItemHasContents, true); @@ -57,7 +56,8 @@ void ProfileView::clear() { //clearPictures(); //disconnectPlannerConnections(); - profileScene->clear(); + if (profileScene) + profileScene->clear(); //handles.clear(); //gases.clear(); empty = true; @@ -74,6 +74,11 @@ void ProfileView::plotDive(const struct dive *dIn, int dcIn, int flags) return; } + // We can't create the scene in the constructor, because we can't get the DPR property there. Oh joy! + if (!profileScene) { + double dpr = std::clamp(property("dpr").toReal(), 1.0, 100.0); + profileScene = std::make_unique(dpr, false, false); + } // If there was no previously displayed dive, turn off animations if (empty) flags |= RenderFlags::Instant;