Skip to content

Commit 83e8ece

Browse files
committedMay 9, 2017
[FEATURE] Add outline and color opacity settings for scale bar decoration
1 parent 1445505 commit 83e8ece

File tree

4 files changed

+48
-19
lines changed

4 files changed

+48
-19
lines changed
 

‎src/app/qgsdecorationscalebar.cpp

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ email : sbr00pwb@users.sourceforge.net
3333
#include "qgsproject.h"
3434
#include "qgsunittypes.h"
3535
#include "qgssettings.h"
36+
#include "qgssymbollayerutils.h"
3637

3738
#include <QPainter>
3839
#include <QAction>
@@ -75,10 +76,8 @@ void QgsDecorationScaleBar::projectRead()
7576
mPreferredSize = QgsProject::instance()->readNumEntry( mNameConfig, QStringLiteral( "/PreferredSize" ), 30 );
7677
mStyleIndex = QgsProject::instance()->readNumEntry( mNameConfig, QStringLiteral( "/Style" ), 0 );
7778
mSnapping = QgsProject::instance()->readBoolEntry( mNameConfig, QStringLiteral( "/Snapping" ), true );
78-
int myRedInt = QgsProject::instance()->readNumEntry( mNameConfig, QStringLiteral( "/ColorRedPart" ), 0 );
79-
int myGreenInt = QgsProject::instance()->readNumEntry( mNameConfig, QStringLiteral( "/ColorGreenPart" ), 0 );
80-
int myBlueInt = QgsProject::instance()->readNumEntry( mNameConfig, QStringLiteral( "/ColorBluePart" ), 0 );
81-
mColor = QColor( myRedInt, myGreenInt, myBlueInt );
79+
mColor = QgsSymbolLayerUtils::decodeColor( QgsProject::instance()->readEntry( mNameConfig, QStringLiteral( "/Color" ), QStringLiteral( "#000000" ) ) );
80+
mOutlineColor = QgsSymbolLayerUtils::decodeColor( QgsProject::instance()->readEntry( mNameConfig, QStringLiteral( "/OutlineColor" ), QStringLiteral( "#FFFFFF" ) ) );
8281
mMarginHorizontal = QgsProject::instance()->readNumEntry( mNameConfig, QStringLiteral( "/MarginH" ), 0 );
8382
mMarginVertical = QgsProject::instance()->readNumEntry( mNameConfig, QStringLiteral( "/MarginV" ), 0 );
8483
}
@@ -89,9 +88,8 @@ void QgsDecorationScaleBar::saveToProject()
8988
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/PreferredSize" ), mPreferredSize );
9089
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/Snapping" ), mSnapping );
9190
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/Style" ), mStyleIndex );
92-
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/ColorRedPart" ), mColor.red() );
93-
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/ColorGreenPart" ), mColor.green() );
94-
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/ColorBluePart" ), mColor.blue() );
91+
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/Color" ), QgsSymbolLayerUtils::encodeColor( mColor ) );
92+
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/OutlineColor" ), QgsSymbolLayerUtils::encodeColor( mOutlineColor ) );
9593
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/MarginH" ), mMarginHorizontal );
9694
QgsProject::instance()->writeEntry( mNameConfig, QStringLiteral( "/MarginV" ), mMarginVertical );
9795
}
@@ -311,7 +309,7 @@ void QgsDecorationScaleBar::render( const QgsMapSettings &mapSettings, QgsRender
311309

312310
//Set pen to draw with
313311
QPen myForegroundPen( mColor, 2 );
314-
QPen myBackgroundPen( Qt::white, 4 );
312+
QPen myBackgroundPen( mOutlineColor, 4 );
315313

316314
//Cast myScaleBarWidth to int for drawing
317315
int myScaleBarWidthInt = static_cast< int >( myScaleBarWidth );
@@ -434,8 +432,8 @@ void QgsDecorationScaleBar::render( const QgsMapSettings &mapSettings, QgsRender
434432
//Do drawing of scale bar text
435433
//
436434

437-
QColor myBackColor = Qt::white;
438-
QColor myForeColor = Qt::black;
435+
QColor myBackColor = mOutlineColor;
436+
QColor myForeColor = mColor;
439437

440438
//Draw the minimum label buffer
441439
context.painter()->setPen( myBackColor );

‎src/app/qgsdecorationscalebar.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,12 @@ class APP_EXPORT QgsDecorationScaleBar: public QgsDecorationItem
5858
//! Style of scale bar. An index and the translated text
5959
int mStyleIndex;
6060
QStringList mStyleLabels;
61+
6162
//! The scale bar color
6263
QColor mColor;
64+
//! The scale bar otuline color
65+
QColor mOutlineColor;
66+
6367
//! Margin percentage values
6468
int mMarginHorizontal;
6569
int mMarginVertical;

‎src/app/qgsdecorationscalebardialog.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,15 @@ QgsDecorationScaleBarDialog::QgsDecorationScaleBarDialog( QgsDecorationScaleBar
7171

7272
cboStyle->setCurrentIndex( mDeco.mStyleIndex );
7373

74+
pbnChangeColor->setAllowAlpha( true );
7475
pbnChangeColor->setColor( mDeco.mColor );
7576
pbnChangeColor->setContext( QStringLiteral( "gui" ) );
76-
pbnChangeColor->setColorDialogTitle( tr( "Select scalebar color" ) );
77+
pbnChangeColor->setColorDialogTitle( tr( "Select scale bar fill color" ) );
78+
79+
pbnChangeOutlineColor->setAllowAlpha( true );
80+
pbnChangeOutlineColor->setColor( mDeco.mOutlineColor );
81+
pbnChangeOutlineColor->setContext( QStringLiteral( "gui" ) );
82+
pbnChangeOutlineColor->setColorDialogTitle( tr( "Select scale bar outline color" ) );
7783
}
7884

7985
QgsDecorationScaleBarDialog::~QgsDecorationScaleBarDialog()
@@ -98,6 +104,7 @@ void QgsDecorationScaleBarDialog::apply()
98104
mDeco.setEnabled( grpEnable->isChecked() );
99105
mDeco.mStyleIndex = cboStyle->currentIndex();
100106
mDeco.mColor = pbnChangeColor->color();
107+
mDeco.mOutlineColor = pbnChangeOutlineColor->color();
101108
mDeco.update();
102109
}
103110

‎src/ui/qgsdecorationscalebardialog.ui

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,14 @@
5353
</property>
5454
<layout class="QGridLayout" name="gridLayout_2">
5555
<item row="3" column="1">
56-
<layout class="QHBoxLayout" name="horizontalLayout">
56+
<layout class="QHBoxLayout" name="colorLayout">
57+
<item>
58+
<widget class="QLabel" name="fillLabel">
59+
<property name="text">
60+
<string>Fill</string>
61+
</property>
62+
</widget>
63+
</item>
5764
<item>
5865
<widget class="QgsColorButton" name="pbnChangeColor">
5966
<property name="minimumSize">
@@ -74,17 +81,30 @@
7481
</widget>
7582
</item>
7683
<item>
77-
<spacer name="horizontalSpacer_2">
78-
<property name="orientation">
79-
<enum>Qt::Horizontal</enum>
84+
<widget class="QLabel" name="outlineLabel">
85+
<property name="text">
86+
<string>Outline</string>
8087
</property>
81-
<property name="sizeHint" stdset="0">
88+
</widget>
89+
</item>
90+
<item>
91+
<widget class="QgsColorButton" name="pbnChangeOutlineColor">
92+
<property name="minimumSize">
8293
<size>
83-
<width>40</width>
84-
<height>20</height>
94+
<width>150</width>
95+
<height>0</height>
8596
</size>
8697
</property>
87-
</spacer>
98+
<property name="maximumSize">
99+
<size>
100+
<width>120</width>
101+
<height>16777215</height>
102+
</size>
103+
</property>
104+
<property name="text">
105+
<string/>
106+
</property>
107+
</widget>
88108
</item>
89109
</layout>
90110
</item>

0 commit comments

Comments
 (0)
Please sign in to comment.