summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Robert C. Helling <helling@atdotde.de>2020-08-07 11:43:49 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-09-03 11:46:17 -0700
commitc6fa41588067b3c9787ded63207014ee5ae4d2d8 (patch)
treec00172a7e7b5401db4ea4a566870eba893410ecc
parent8f6d05414050a52209556576816ec10cc041e547 (diff)
downloadsubsurface-c6fa41588067b3c9787ded63207014ee5ae4d2d8.tar.gz
Improve resolution of profile export
The way we export the profile image (as direct export but also used for printing) is that we render the profile from the screen to a Pixmap and save that to a file. Unfortunately this results in very bad resultion and a blurred image. This is an attempt to improve that situation but it's still far from perfect: Rather than a QPixmap and grab, I now use a QImage (where I can set the size) and render, and indeed the picture resolution (when vied at fixed size) get's better this way. The disadvantage is that icons get smaller at the same rate und so there is a natural limit on how big we can get. Maybe somebody with better Qt knowledge can take off from here. In my opinion this is already a step in the right direction. Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--CHANGELOG.md1
-rw-r--r--desktop-widgets/divelogexportdialog.cpp12
2 files changed, 11 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c3b746606..e92bb5e60 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,7 @@ core: add support for Shearwater Peregrine (requires firmware V79 or newer)
core: fix renumbering of imported dives [#2731]
mobile: fix editing tank information
planner: Handle zero length segments gracefully when replanning
+profile: improve resolution in printing and export
mobile: disable download button if no connection is selected
mobile: fix incorrect time stamps on GPS track points created via location service
core: correctly recognize A1 as BLE dive computer
diff --git a/desktop-widgets/divelogexportdialog.cpp b/desktop-widgets/divelogexportdialog.cpp
index dec79113a..3204842ee 100644
--- a/desktop-widgets/divelogexportdialog.cpp
+++ b/desktop-widgets/divelogexportdialog.cpp
@@ -227,7 +227,15 @@ void exportProfile(const struct dive *dive, const QString filename)
ProfileWidget2 *profile = MainWindow::instance()->graphics;
profile->plotDive(dive, true, false, true);
profile->setToolTipVisibile(false);
- QPixmap pix = profile->grab();
+ profile->setPrintMode(true);
+ double scale = profile->getFontPrintScale();
+ profile->setFontPrintScale(4 * scale);
+ QImage image = QImage(profile->size() * 4, QImage::Format_RGB32);
+ QPainter paint;
+ paint.begin(&image);
+ profile->render(&paint);
+ image.save(filename);
profile->setToolTipVisibile(true);
- pix.save(filename);
+ profile->setFontPrintScale(scale);
+ profile->setPrintMode(false);
}