Skip to content

Commit cb23ebe

Browse files
committedMay 9, 2017
[FEATURE] Add opacity support to copyright decorator
1 parent 83e8ece commit cb23ebe

File tree

3 files changed

+20
-16
lines changed

3 files changed

+20
-16
lines changed
 

‎src/app/qgsdecorationcopyright.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,12 @@ email : tim@linfiniti.com
2424
#include "qgsdecorationcopyright.h"
2525
#include "qgsdecorationcopyrightdialog.h"
2626

27+
#include "qgisapp.h"
2728
#include "qgsapplication.h"
2829
#include "qgslogger.h"
2930
#include "qgsmapcanvas.h"
3031
#include "qgsproject.h"
31-
#include "qgisapp.h"
32+
#include "qgssymbollayerutils.h"
3233

3334
#include <QPainter>
3435
#include <QMenu>
@@ -64,23 +65,22 @@ void QgsDecorationCopyright::projectRead()
6465
// there is no font setting in the UI, so just use the Qt/QGIS default font (what mQFont gets when created)
6566
// mQFont.setFamily( QgsProject::instance()->readEntry( "CopyrightLabel", "/FontName", "Sans Serif" ) );
6667
// mQFont.setPointSize( QgsProject::instance()->readNumEntry( "CopyrightLabel", "/FontSize", 9 ) );
67-
QgsProject *prj = QgsProject::instance();
68-
mLabelQString = prj->readEntry( mNameConfig, QStringLiteral( "/Label" ), defString );
68+
69+
mLabelQString = QgsProject::instance()->readEntry( mNameConfig, QStringLiteral( "/Label" ), defString );
6970
mMarginHorizontal = QgsProject::instance()->readNumEntry( mNameConfig, QStringLiteral( "/MarginH" ), 0 );
7071
mMarginVertical = QgsProject::instance()->readNumEntry( mNameConfig, QStringLiteral( "/MarginV" ), 0 );
71-
mLabelQColor.setNamedColor( prj->readEntry( mNameConfig, QStringLiteral( "/Color" ), QStringLiteral( "#000000" ) ) ); // default color is black
72+
mColor = QgsSymbolLayerUtils::decodeColor( QgsProject::instance()->readEntry( mNameConfig, QStringLiteral( "/Color" ), QStringLiteral( "#000000" ) ) );
7273
}
7374

7475
void QgsDecorationCopyright::saveToProject()
7576
{
7677
QgsDecorationItem::saveToProject();
77-
QgsProject *prj = QgsProject::instance();
78-
prj->writeEntry( mNameConfig, QStringLiteral( "/FontName" ), mQFont.family() );
79-
prj->writeEntry( mNameConfig, QStringLiteral( "/FontSize" ), mQFont.pointSize() );
80-
prj->writeEntry( mNameConfig, QStringLiteral( "/Label" ), mLabelQString );
81-
prj->writeEntry( mNameConfig, QStringLiteral( "/Color" ), mLabelQColor.name() );
82-
prj->writeEntry( mNameConfig, QStringLiteral( "/MarginH" ), mMarginHorizontal );
83-
prj->writeEntry( mNameConfig, QStringLiteral( "/MarginV" ), mMarginVertical );
78+
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/FontName" ), mQFont.family() );
79+
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/FontSize" ), mQFont.pointSize() );
80+
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/Label" ), mLabelQString );
81+
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/Color" ), QgsSymbolLayerUtils::encodeColor( mColor ) );
82+
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/MarginH" ), mMarginHorizontal );
83+
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/MarginV" ), mMarginVertical );
8484
}
8585

8686
// Slot called when the buffer menu item is activated
@@ -104,8 +104,9 @@ void QgsDecorationCopyright::render( const QgsMapSettings &mapSettings, QgsRende
104104
QTextDocument text;
105105
text.setDefaultFont( mQFont );
106106
// To set the text color in a QTextDocument we use a CSS style
107+
107108
QString style = "<style type=\"text/css\"> p {color: " +
108-
mLabelQColor.name() + "}</style>";
109+
QString( "rgba( %1, %2, %3, %4 )" ).arg( mColor.red() ).arg( mColor.green() ).arg( mColor.blue() ).arg( QString::number( mColor.alphaF(), 'f', 2 ) ) + "}</style>";
109110
text.setHtml( style + "<p>" + mLabelQString + "</p>" );
110111
QSizeF size = text.size();
111112

‎src/app/qgsdecorationcopyright.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,10 @@ class APP_EXPORT QgsDecorationCopyright : public QgsDecorationItem
5454
QFont mQFont;
5555
//! This is the string that will be used for the copyright label
5656
QString mLabelQString;
57+
5758
//! This is the color for the copyright label
58-
QColor mLabelQColor;
59+
QColor mColor;
60+
5961
//! enable or disable use of position percentage for placement
6062
int mMarginHorizontal;
6163
int mMarginVertical;

‎src/app/qgsdecorationcopyrightdialog.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,14 @@ QgsDecorationCopyrightDialog::QgsDecorationCopyrightDialog( QgsDecorationCopyrig
5050
wgtUnitSelection->setUnit( mDeco.mMarginUnit );
5151

5252
// color
53-
pbnColorChooser->setColor( mDeco.mLabelQColor );
53+
pbnColorChooser->setAllowAlpha( true );
54+
pbnColorChooser->setColor( mDeco.mColor );
5455
pbnColorChooser->setContext( QStringLiteral( "gui" ) );
5556
pbnColorChooser->setColorDialogTitle( tr( "Select text color" ) );
5657

5758
QTextCursor cursor = txtCopyrightText->textCursor();
5859
txtCopyrightText->selectAll();
59-
txtCopyrightText->setTextColor( mDeco.mLabelQColor );
60+
txtCopyrightText->setTextColor( mDeco.mColor );
6061
txtCopyrightText->setTextCursor( cursor );
6162
}
6263

@@ -89,7 +90,7 @@ void QgsDecorationCopyrightDialog::apply()
8990
{
9091
mDeco.mQFont = txtCopyrightText->currentFont();
9192
mDeco.mLabelQString = txtCopyrightText->toPlainText();
92-
mDeco.mLabelQColor = pbnColorChooser->color();
93+
mDeco.mColor = pbnColorChooser->color();
9394
mDeco.setPlacement( static_cast< QgsDecorationItem::Placement>( cboPlacement->currentData().toInt() ) );
9495
mDeco.mMarginUnit = wgtUnitSelection->unit();
9596
mDeco.mMarginHorizontal = spnHorizontal->value();

0 commit comments

Comments
 (0)
Please sign in to comment.