diff options
author | Robert C. Helling <helling@atdotde.de> | 2020-08-07 11:43:49 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-09-03 11:46:17 -0700 |
commit | c6fa41588067b3c9787ded63207014ee5ae4d2d8 (patch) | |
tree | c00172a7e7b5401db4ea4a566870eba893410ecc | |
parent | 8f6d05414050a52209556576816ec10cc041e547 (diff) | |
download | subsurface-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.md | 1 | ||||
-rw-r--r-- | desktop-widgets/divelogexportdialog.cpp | 12 |
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); } |