From 709d2f325db0490016807b8fa6f49d1c867b6bd8 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 3 Feb 2017 23:25:42 +0100 Subject: [PATCH] fixes #0002887: add FC logo (watermark) in Save Picture Tool --- src/Gui/CommandView.cpp | 40 +++++++++++++++++++++++++++++++++ src/Gui/DlgSettingsImage.ui | 7 ++++++ src/Gui/DlgSettingsImageImp.cpp | 5 +++++ src/Gui/DlgSettingsImageImp.h | 1 + 4 files changed, 53 insertions(+) diff --git a/src/Gui/CommandView.cpp b/src/Gui/CommandView.cpp index a81a156b3..09a919392 100644 --- a/src/Gui/CommandView.cpp +++ b/src/Gui/CommandView.cpp @@ -29,7 +29,11 @@ # include # include # include +# include +# include +# include # include +# include # include # include #endif @@ -1680,6 +1684,42 @@ void StdViewScreenShot::activated(int iMsg) doCommand(Gui,"Gui.activeDocument().activeView().saveImage('%s',%d,%d,'%s')", fn.toUtf8().constData(),w,h,background); } + + // When adding a watermark check if the image could be created + if (opt->addWatermark()) { + QFileInfo fi(fn); + QPixmap pixmap; + if (fi.exists() && pixmap.load(fn)) { + QString name = qApp->applicationName(); + std::map& config = App::Application::Config(); + QString url = QString::fromLatin1(config["MaintainerUrl"].c_str()); + url = QUrl(url).host(); + + QPixmap appicon = Gui::BitmapFactory().pixmap(config["AppIcon"].c_str()); + + QPainter painter; + painter.begin(&pixmap); + + painter.drawPixmap(8, h-15-appicon.height(), appicon); + + QFont font = painter.font(); + font.setPointSize(20); + + int n = QFontMetrics(font).width(name); + int h = pixmap.height(); + + painter.setFont(font); + painter.drawText(8+appicon.width(), h-24, name); + + font.setPointSize(12); + int u = QFontMetrics(font).width(url); + painter.setFont(font); + painter.drawText(8+appicon.width()+n-u, h-9, url); + + painter.end(); + pixmap.save(fn); + } + } } } } diff --git a/src/Gui/DlgSettingsImage.ui b/src/Gui/DlgSettingsImage.ui index ea478962b..575fb71de 100644 --- a/src/Gui/DlgSettingsImage.ui +++ b/src/Gui/DlgSettingsImage.ui @@ -411,6 +411,13 @@ + + + + Add watermark + + + diff --git a/src/Gui/DlgSettingsImageImp.cpp b/src/Gui/DlgSettingsImageImp.cpp index c9965bc99..0256c8120 100644 --- a/src/Gui/DlgSettingsImageImp.cpp +++ b/src/Gui/DlgSettingsImageImp.cpp @@ -139,6 +139,11 @@ int DlgSettingsImageImp::backgroundType() const return comboBackground->currentIndex(); } +bool DlgSettingsImageImp::addWatermark() const +{ + return checkWatermark->isChecked(); +} + void DlgSettingsImageImp::onSelectedFilter(const QString& filter) { bool ok = (filter.startsWith(QLatin1String("JPG")) || diff --git a/src/Gui/DlgSettingsImageImp.h b/src/Gui/DlgSettingsImageImp.h index 13ed757db..8421f723b 100644 --- a/src/Gui/DlgSettingsImageImp.h +++ b/src/Gui/DlgSettingsImageImp.h @@ -57,6 +57,7 @@ public: //@{ QString comment() const; int backgroundType() const; + bool addWatermark() const; //@} public Q_SLOTS: