From 02088c2f89adf9b5a61a0220498e12fb45c8b6cc Mon Sep 17 00:00:00 2001 From: Rafael Date: Tue, 26 Apr 2016 23:12:17 +0200 Subject: [PATCH] scaling pictures at export --- OptionsDialog.cpp | 16 ++++++++++++ OptionsDialog.ui | 2 +- PictureExport.cpp | 66 ++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 77 insertions(+), 7 deletions(-) diff --git a/OptionsDialog.cpp b/OptionsDialog.cpp index 7bfd1bb..fba64bd 100755 --- a/OptionsDialog.cpp +++ b/OptionsDialog.cpp @@ -314,6 +314,22 @@ void OptionsDialog::setupPictureSettings() // Size Settings cusExportSize = settings->value("CustomSize", defExportSize).toSize(); + if (cusExportSize.width() > 3840) + { + cusExportSize.setWidth(3840); + } + else if (cusExportSize.height() > 2160) + { + cusExportSize.setHeight(2160); + } + if (cusExportSize.width() < 1) + { + cusExportSize.setWidth(1); + } + else if (cusExportSize.height() < 1) + { + cusExportSize.setHeight(1); + } ui->sbPicExportWidth->setValue(cusExportSize.width()); ui->sbPicExportHeight->setValue(cusExportSize.height()); diff --git a/OptionsDialog.ui b/OptionsDialog.ui index 2000a78..1cb3d1b 100755 --- a/OptionsDialog.ui +++ b/OptionsDialog.ui @@ -20,7 +20,7 @@ - 1 + 0 diff --git a/PictureExport.cpp b/PictureExport.cpp index f0cda66..5d47da1 100755 --- a/PictureExport.cpp +++ b/PictureExport.cpp @@ -21,6 +21,8 @@ #include "PictureDialog.h" #include "StandardPaths.h" #include "SidebarGenerator.h" +#include +#include #include #include #include @@ -34,6 +36,41 @@ PictureExport::PictureExport() void PictureExport::exportPicture(QWidget *parent, SnapmaticPicture *picture) { QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + + // Picture Settings + // Quality Settings + settings.beginGroup("Pictures"); + int defaultQuality = 100; + QSize defExportSize = QSize(960, 536); + int customQuality = settings.value("CustomQuality", defaultQuality).toInt(); + if (customQuality < 1 || customQuality > 100) + { + customQuality = 100; + } + bool useCustomQuality = settings.value("CustomQualityEnabled", false).toBool(); + + // Size Settings + QSize cusExportSize = settings.value("CustomSize", defExportSize).toSize(); + if (cusExportSize.width() > 3840) + { + cusExportSize.setWidth(3840); + } + else if (cusExportSize.height() > 2160) + { + cusExportSize.setHeight(2160); + } + if (cusExportSize.width() < 1) + { + cusExportSize.setWidth(1); + } + else if (cusExportSize.height() < 1) + { + cusExportSize.setHeight(1); + } + QString sizeMode = settings.value("ExportSizeMode", "Default").toString(); + settings.endGroup(); + // End Picture Settings + settings.beginGroup("FileDialogs"); settings.beginGroup("ExportPicture"); @@ -60,11 +97,8 @@ fileDialogPreSave: fileDialog.setDirectory(settings.value("Directory", StandardPaths::picturesLocation()).toString()); fileDialog.restoreGeometry(settings.value(parent->objectName() + "+Geomtery", "").toByteArray()); - if (picture != 0) - { - QString newPictureFileName = getPictureFileName(picture); - fileDialog.selectFile(newPictureFileName); - } + QString newPictureFileName = getPictureFileName(picture); + fileDialog.selectFile(newPictureFileName); if (fileDialog.exec()) { @@ -118,7 +152,27 @@ fileDialogPreSave: } } - bool isSaved = picture->getPicture().save(selectedFile, saveFileFormat.toStdString().c_str(), 100); + // Scale Picture + QImage exportPicture = picture->getPicture(); + if (sizeMode == "Desktop") + { + QRect desktopResolution = QApplication::desktop()->screenGeometry(); + exportPicture = exportPicture.scaled(desktopResolution.width(), desktopResolution.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + } + else if (sizeMode == "Custom") + { + exportPicture = exportPicture.scaled(cusExportSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + } + + bool isSaved; + if (useCustomQuality) + { + isSaved = exportPicture.save(selectedFile, saveFileFormat.toStdString().c_str(), customQuality); + } + else + { + isSaved = exportPicture.save(selectedFile, saveFileFormat.toStdString().c_str(), 100); + } if (!isSaved) {