Skip to content

Commit d1be2ff

Browse files
committedOct 8, 2015
Fix hardcoded border for raster legend items (fix #13540)
Previously raster legend items always had a fixed black border. Now there's options to change the color/width of this border or disable it entirely.
1 parent 307806a commit d1be2ff

15 files changed

+444
-4
lines changed
 

‎python/core/composer/qgscomposeritemcommand.sip

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ class QgsComposerMergeCommand : QgsComposerItemCommand
6868
LegendIconSymbolSpace,
6969
LegendBoxSpace,
7070
LegendColumnSpace,
71+
LegendRasterBorderWidth,
7172
//composer picture
7273
ComposerPictureRotation,
7374
// composer scalebar

‎python/core/composer/qgscomposerlegend.sip

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,61 @@ class QgsComposerLegend : QgsComposerItem
129129
int equalColumnWidth() const;
130130
void setEqualColumnWidth( bool s );
131131

132+
/** Returns whether a border will be drawn around raster symbol items.
133+
* @see setDrawRasterBorder()
134+
* @see rasterBorderColor()
135+
* @see rasterBorderWidth()
136+
* @note added in QGIS 2.12
137+
*/
138+
bool drawRasterBorder() const;
139+
140+
/** Sets whether a border will be drawn around raster symbol items.
141+
* @param enabled set to true to draw borders
142+
* @see drawRasterBorder()
143+
* @see setRasterBorderColor()
144+
* @see setRasterBorderWidth()
145+
* @note added in QGIS 2.12
146+
*/
147+
void setDrawRasterBorder( bool enabled );
148+
149+
/** Returns the border color for the border drawn around raster symbol items. The border is
150+
* only drawn if drawRasterBorder() is true.
151+
* @see setRasterBorderColor()
152+
* @see drawRasterBorder()
153+
* @see rasterBorderWidth()
154+
* @note added in QGIS 2.12
155+
*/
156+
QColor rasterBorderColor() const;
157+
158+
/** Sets the border color for the border drawn around raster symbol items. The border is
159+
* only drawn if drawRasterBorder() is true.
160+
* @param color border color
161+
* @see rasterBorderColor()
162+
* @see setDrawRasterBorder()
163+
* @see setRasterBorderWidth()
164+
* @note added in QGIS 2.12
165+
*/
166+
void setRasterBorderColor( const QColor& color );
167+
168+
/** Returns the border width (in millimeters) for the border drawn around raster symbol items. The border is
169+
* only drawn if drawRasterBorder() is true.
170+
* @see setRasterBorderWidth()
171+
* @see drawRasterBorder()
172+
* @see rasterBorderColor()
173+
* @note added in QGIS 2.12
174+
*/
175+
double rasterBorderWidth() const;
176+
177+
/** Sets the border width for the border drawn around raster symbol items. The border is
178+
* only drawn if drawRasterBorder() is true.
179+
* @param width border width in millimeters
180+
* @see rasterBorderWidth()
181+
* @see setDrawRasterBorder()
182+
* @see setRasterBorderColor()
183+
* @note added in QGIS 2.12
184+
*/
185+
void setRasterBorderWidth( double width );
186+
132187
void setComposerMap( const QgsComposerMap* map );
133188
const QgsComposerMap* composerMap() const;
134189

‎python/core/qgslegendsettings.sip

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,61 @@ class QgsLegendSettings
5959
QSizeF symbolSize() const;
6060
void setSymbolSize( QSizeF s );
6161

62+
/** Returns whether a border will be drawn around raster symbol items.
63+
* @see setDrawRasterBorder()
64+
* @see rasterBorderColor()
65+
* @see rasterBorderWidth()
66+
* @note added in QGIS 2.12
67+
*/
68+
bool drawRasterBorder() const;
69+
70+
/** Sets whether a border will be drawn around raster symbol items.
71+
* @param enabled set to true to draw borders
72+
* @see drawRasterBorder()
73+
* @see setRasterBorderColor()
74+
* @see setRasterBorderWidth()
75+
* @note added in QGIS 2.12
76+
*/
77+
void setDrawRasterBorder( bool enabled );
78+
79+
/** Returns the border color for the border drawn around raster symbol items. The border is
80+
* only drawn if drawRasterBorder() is true.
81+
* @see setRasterBorderColor()
82+
* @see drawRasterBorder()
83+
* @see rasterBorderWidth()
84+
* @note added in QGIS 2.12
85+
*/
86+
QColor rasterBorderColor() const;
87+
88+
/** Sets the border color for the border drawn around raster symbol items. The border is
89+
* only drawn if drawRasterBorder() is true.
90+
* @param color border color
91+
* @see rasterBorderColor()
92+
* @see setDrawRasterBorder()
93+
* @see setRasterBorderWidth()
94+
* @note added in QGIS 2.12
95+
*/
96+
void setRasterBorderColor( const QColor& color );
97+
98+
/** Returns the border width (in millimeters) for the border drawn around raster symbol items. The border is
99+
* only drawn if drawRasterBorder() is true.
100+
* @see setRasterBorderWidth()
101+
* @see drawRasterBorder()
102+
* @see rasterBorderColor()
103+
* @note added in QGIS 2.12
104+
*/
105+
double rasterBorderWidth() const;
106+
107+
/** Sets the border width for the border drawn around raster symbol items. The border is
108+
* only drawn if drawRasterBorder() is true.
109+
* @param width border width in millimeters
110+
* @see rasterBorderWidth()
111+
* @see setDrawRasterBorder()
112+
* @see setRasterBorderColor()
113+
* @note added in QGIS 2.12
114+
*/
115+
void setRasterBorderWidth( double width );
116+
62117
QSizeF wmsLegendSize() const;
63118
void setWmsLegendSize( QSizeF s );
64119

‎src/app/composer/qgscomposerlegendwidget.cpp

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ QgsComposerLegendWidget::QgsComposerLegendWidget( QgsComposerLegend* legend )
103103
mFontColorButton->setColorDialogTitle( tr( "Select font color" ) );
104104
mFontColorButton->setContext( "composer" );
105105

106+
mRasterBorderColorButton->setColorDialogTitle( tr( "Select border color" ) );
107+
mRasterBorderColorButton->setAllowAlpha( true );
108+
mRasterBorderColorButton->setContext( "composer " );
109+
106110
//add widget for item properties
107111
QgsComposerItemWidget* itemPropertiesWidget = new QgsComposerItemWidget( this, legend );
108112
mainLayout->addWidget( itemPropertiesWidget );
@@ -161,6 +165,11 @@ void QgsComposerLegendWidget::setGuiElements()
161165
mIconLabelSpaceSpinBox->setValue( mLegend->style( QgsComposerLegendStyle::SymbolLabel ).margin( QgsComposerLegendStyle::Left ) );
162166
mBoxSpaceSpinBox->setValue( mLegend->boxSpace() );
163167
mColumnSpaceSpinBox->setValue( mLegend->columnSpace() );
168+
169+
mRasterBorderGroupBox->setChecked( mLegend->drawRasterBorder() );
170+
mRasterBorderWidthSpinBox->setValue( mLegend->rasterBorderWidth() );
171+
mRasterBorderColorButton->setColor( mLegend->rasterBorderColor() );
172+
164173
mCheckBoxAutoUpdate->setChecked( mLegend->autoUpdateModel() );
165174
refreshMapComboBox();
166175

@@ -613,6 +622,47 @@ void QgsComposerLegendWidget::on_mMapComboBox_currentIndexChanged( int index )
613622
}
614623
}
615624

625+
void QgsComposerLegendWidget::on_mRasterBorderGroupBox_toggled( bool state )
626+
{
627+
if ( !mLegend )
628+
{
629+
return;
630+
}
631+
632+
mLegend->beginCommand( tr( "Legend raster borders" ) );
633+
mLegend->setDrawRasterBorder( state );
634+
mLegend->adjustBoxSize();
635+
mLegend->update();
636+
mLegend->endCommand();
637+
}
638+
639+
void QgsComposerLegendWidget::on_mRasterBorderWidthSpinBox_valueChanged( double d )
640+
{
641+
if ( !mLegend )
642+
{
643+
return;
644+
}
645+
646+
mLegend->beginCommand( tr( "Legend raster border width" ), QgsComposerMergeCommand::LegendRasterBorderWidth );
647+
mLegend->setRasterBorderWidth( d );
648+
mLegend->adjustBoxSize();
649+
mLegend->update();
650+
mLegend->endCommand();
651+
}
652+
653+
void QgsComposerLegendWidget::on_mRasterBorderColorButton_colorChanged( const QColor& newColor )
654+
{
655+
if ( !mLegend )
656+
{
657+
return;
658+
}
659+
660+
mLegend->beginCommand( tr( "Legend raster border color" ) );
661+
mLegend->setRasterBorderColor( newColor );
662+
mLegend->update();
663+
mLegend->endCommand();
664+
}
665+
616666
void QgsComposerLegendWidget::on_mAddToolButton_clicked()
617667
{
618668
if ( !mLegend )
@@ -894,6 +944,9 @@ void QgsComposerLegendWidget::blockAllSignals( bool b )
894944
mBoxSpaceSpinBox->blockSignals( b );
895945
mColumnSpaceSpinBox->blockSignals( b );
896946
mFontColorButton->blockSignals( b );
947+
mRasterBorderGroupBox->blockSignals( b );
948+
mRasterBorderColorButton->blockSignals( b );
949+
mRasterBorderWidthSpinBox->blockSignals( b );
897950
}
898951

899952
void QgsComposerLegendWidget::refreshMapComboBox()

‎src/app/composer/qgscomposerlegendwidget.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ class QgsComposerLegendWidget: public QgsComposerItemBaseWidget, private Ui::Qgs
6969
void on_mCheckBoxAutoUpdate_stateChanged( int state );
7070
void on_mMapComboBox_currentIndexChanged( int index );
7171

72+
void on_mRasterBorderGroupBox_toggled( bool state );
73+
void on_mRasterBorderWidthSpinBox_valueChanged( double d );
74+
void on_mRasterBorderColorButton_colorChanged( const QColor& newColor );
75+
7276
//item manipulation
7377
void on_mMoveDownToolButton_clicked();
7478
void on_mMoveUpToolButton_clicked();

‎src/core/composer/qgscomposeritemcommand.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ class CORE_EXPORT QgsComposerMergeCommand: public QgsComposerItemCommand
102102
LegendIconSymbolSpace,
103103
LegendBoxSpace,
104104
LegendColumnSpace,
105+
LegendRasterBorderWidth,
105106
//composer picture
106107
ComposerPictureRotation,
107108
// composer scalebar

‎src/core/composer/qgscomposerlegend.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include "qgslegendrenderer.h"
2929
#include "qgslogger.h"
3030
#include "qgsproject.h"
31+
#include "qgssymbollayerv2utils.h"
3132
#include <QDomDocument>
3233
#include <QDomElement>
3334
#include <QPainter>
@@ -241,6 +242,14 @@ void QgsComposerLegend::setSplitLayer( bool s ) { mSettings.setSplitLayer( s );
241242
bool QgsComposerLegend::equalColumnWidth() const { return mSettings.equalColumnWidth(); }
242243
void QgsComposerLegend::setEqualColumnWidth( bool s ) { mSettings.setEqualColumnWidth( s ); }
243244

245+
bool QgsComposerLegend::drawRasterBorder() const { return mSettings.drawRasterBorder(); }
246+
void QgsComposerLegend::setDrawRasterBorder( bool enabled ) { mSettings.setDrawRasterBorder( enabled ); }
247+
248+
QColor QgsComposerLegend::rasterBorderColor() const { return mSettings.rasterBorderColor(); }
249+
void QgsComposerLegend::setRasterBorderColor( const QColor& color ) { mSettings.setRasterBorderColor( color ); }
250+
251+
double QgsComposerLegend::rasterBorderWidth() const { return mSettings.rasterBorderWidth(); }
252+
void QgsComposerLegend::setRasterBorderWidth( double width ) { mSettings.setRasterBorderWidth( width ); }
244253

245254
void QgsComposerLegend::synchronizeWithModel()
246255
{
@@ -279,6 +288,11 @@ bool QgsComposerLegend::writeXML( QDomElement& elem, QDomDocument & doc ) const
279288

280289
composerLegendElem.setAttribute( "symbolWidth", QString::number( mSettings.symbolSize().width() ) );
281290
composerLegendElem.setAttribute( "symbolHeight", QString::number( mSettings.symbolSize().height() ) );
291+
292+
composerLegendElem.setAttribute( "rasterBorder", mSettings.drawRasterBorder() );
293+
composerLegendElem.setAttribute( "rasterBorderColor", QgsSymbolLayerV2Utils::encodeColor( mSettings.rasterBorderColor() ) );
294+
composerLegendElem.setAttribute( "rasterBorderWidth", QString::number( mSettings.rasterBorderWidth() ) );
295+
282296
composerLegendElem.setAttribute( "wmsLegendWidth", QString::number( mSettings.wmsLegendSize().width() ) );
283297
composerLegendElem.setAttribute( "wmsLegendHeight", QString::number( mSettings.wmsLegendSize().height() ) );
284298
composerLegendElem.setAttribute( "wrapChar", mSettings.wrapChar() );
@@ -402,6 +416,10 @@ bool QgsComposerLegend::readXML( const QDomElement& itemElem, const QDomDocument
402416
mSettings.setSymbolSize( QSizeF( itemElem.attribute( "symbolWidth", "7.0" ).toDouble(), itemElem.attribute( "symbolHeight", "14.0" ).toDouble() ) );
403417
mSettings.setWmsLegendSize( QSizeF( itemElem.attribute( "wmsLegendWidth", "50" ).toDouble(), itemElem.attribute( "wmsLegendHeight", "25" ).toDouble() ) );
404418

419+
mSettings.setDrawRasterBorder( itemElem.attribute( "rasterBorder", "1" ) != "0" );
420+
mSettings.setRasterBorderColor( QgsSymbolLayerV2Utils::decodeColor( itemElem.attribute( "rasterBorderColor", "0,0,0" ) ) );
421+
mSettings.setRasterBorderWidth( itemElem.attribute( "rasterBorderWidth", "0" ).toDouble() );
422+
405423
mSettings.setWrapChar( itemElem.attribute( "wrapChar" ) );
406424

407425
//composer map

‎src/core/composer/qgscomposerlegend.h

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,61 @@ class CORE_EXPORT QgsComposerLegend : public QgsComposerItem
156156
bool equalColumnWidth() const;
157157
void setEqualColumnWidth( bool s );
158158

159+
/** Returns whether a border will be drawn around raster symbol items.
160+
* @see setDrawRasterBorder()
161+
* @see rasterBorderColor()
162+
* @see rasterBorderWidth()
163+
* @note added in QGIS 2.12
164+
*/
165+
bool drawRasterBorder() const;
166+
167+
/** Sets whether a border will be drawn around raster symbol items.
168+
* @param enabled set to true to draw borders
169+
* @see drawRasterBorder()
170+
* @see setRasterBorderColor()
171+
* @see setRasterBorderWidth()
172+
* @note added in QGIS 2.12
173+
*/
174+
void setDrawRasterBorder( bool enabled );
175+
176+
/** Returns the border color for the border drawn around raster symbol items. The border is
177+
* only drawn if drawRasterBorder() is true.
178+
* @see setRasterBorderColor()
179+
* @see drawRasterBorder()
180+
* @see rasterBorderWidth()
181+
* @note added in QGIS 2.12
182+
*/
183+
QColor rasterBorderColor() const;
184+
185+
/** Sets the border color for the border drawn around raster symbol items. The border is
186+
* only drawn if drawRasterBorder() is true.
187+
* @param color border color
188+
* @see rasterBorderColor()
189+
* @see setDrawRasterBorder()
190+
* @see setRasterBorderWidth()
191+
* @note added in QGIS 2.12
192+
*/
193+
void setRasterBorderColor( const QColor& color );
194+
195+
/** Returns the border width (in millimeters) for the border drawn around raster symbol items. The border is
196+
* only drawn if drawRasterBorder() is true.
197+
* @see setRasterBorderWidth()
198+
* @see drawRasterBorder()
199+
* @see rasterBorderColor()
200+
* @note added in QGIS 2.12
201+
*/
202+
double rasterBorderWidth() const;
203+
204+
/** Sets the border width for the border drawn around raster symbol items. The border is
205+
* only drawn if drawRasterBorder() is true.
206+
* @param width border width in millimeters
207+
* @see rasterBorderWidth()
208+
* @see setDrawRasterBorder()
209+
* @see setRasterBorderColor()
210+
* @note added in QGIS 2.12
211+
*/
212+
void setRasterBorderWidth( double width );
213+
159214
void setComposerMap( const QgsComposerMap* map );
160215
const QgsComposerMap* composerMap() const { return mComposerMap;}
161216

‎src/core/layertree/qgslayertreemodellegendnode.cpp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,8 +515,21 @@ QSizeF QgsRasterSymbolLegendNode::drawSymbol( const QgsLegendSettings& settings,
515515
if ( QgsRasterRenderer* rasterRenderer = rasterLayer->renderer() )
516516
itemColor.setAlpha( rasterRenderer->opacity() * 255.0 );
517517
}
518-
519518
ctx->painter->setBrush( itemColor );
519+
520+
if ( settings.drawRasterBorder() )
521+
{
522+
QPen pen;
523+
pen.setColor( settings.rasterBorderColor() );
524+
pen.setWidthF( settings.rasterBorderWidth() );
525+
pen.setJoinStyle( Qt::MiterJoin );
526+
ctx->painter->setPen( pen );
527+
}
528+
else
529+
{
530+
ctx->painter->setPen( Qt::NoPen );
531+
}
532+
520533
ctx->painter->drawRect( QRectF( ctx->point.x(), ctx->point.y() + ( itemHeight - settings.symbolSize().height() ) / 2,
521534
settings.symbolSize().width(), settings.symbolSize().height() ) );
522535
}

‎src/core/qgslegendsettings.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ QgsLegendSettings::QgsLegendSettings()
3030
, mColumnCount( 1 )
3131
, mSplitLayer( false )
3232
, mEqualColumnWidth( false )
33+
, mRasterSymbolBorder( true )
34+
, mRasterBorderColor( Qt::black )
35+
, mRasterBorderWidth( 0.0 )
3336
, mMmPerMapUnit( 1 )
3437
, mUseAdvancedEffects( true )
3538
, mMapScale( 1 )

‎src/core/qgslegendsettings.h

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,61 @@ class CORE_EXPORT QgsLegendSettings
8282
QSizeF symbolSize() const {return mSymbolSize;}
8383
void setSymbolSize( QSizeF s ) {mSymbolSize = s;}
8484

85+
/** Returns whether a border will be drawn around raster symbol items.
86+
* @see setDrawRasterBorder()
87+
* @see rasterBorderColor()
88+
* @see rasterBorderWidth()
89+
* @note added in QGIS 2.12
90+
*/
91+
bool drawRasterBorder() const { return mRasterSymbolBorder; }
92+
93+
/** Sets whether a border will be drawn around raster symbol items.
94+
* @param enabled set to true to draw borders
95+
* @see drawRasterBorder()
96+
* @see setRasterBorderColor()
97+
* @see setRasterBorderWidth()
98+
* @note added in QGIS 2.12
99+
*/
100+
void setDrawRasterBorder( bool enabled ) { mRasterSymbolBorder = enabled; }
101+
102+
/** Returns the border color for the border drawn around raster symbol items. The border is
103+
* only drawn if drawRasterBorder() is true.
104+
* @see setRasterBorderColor()
105+
* @see drawRasterBorder()
106+
* @see rasterBorderWidth()
107+
* @note added in QGIS 2.12
108+
*/
109+
QColor rasterBorderColor() const { return mRasterBorderColor; }
110+
111+
/** Sets the border color for the border drawn around raster symbol items. The border is
112+
* only drawn if drawRasterBorder() is true.
113+
* @param color border color
114+
* @see rasterBorderColor()
115+
* @see setDrawRasterBorder()
116+
* @see setRasterBorderWidth()
117+
* @note added in QGIS 2.12
118+
*/
119+
void setRasterBorderColor( const QColor& color ) { mRasterBorderColor = color; }
120+
121+
/** Returns the border width (in millimeters) for the border drawn around raster symbol items. The border is
122+
* only drawn if drawRasterBorder() is true.
123+
* @see setRasterBorderWidth()
124+
* @see drawRasterBorder()
125+
* @see rasterBorderColor()
126+
* @note added in QGIS 2.12
127+
*/
128+
double rasterBorderWidth() const { return mRasterBorderWidth; }
129+
130+
/** Sets the border width for the border drawn around raster symbol items. The border is
131+
* only drawn if drawRasterBorder() is true.
132+
* @param width border width in millimeters
133+
* @see rasterBorderWidth()
134+
* @see setDrawRasterBorder()
135+
* @see setRasterBorderColor()
136+
* @note added in QGIS 2.12
137+
*/
138+
void setRasterBorderWidth( double width ) { mRasterBorderWidth = width; }
139+
85140
QSizeF wmsLegendSize() const {return mWmsLegendSize;}
86141
void setWmsLegendSize( QSizeF s ) {mWmsLegendSize = s;}
87142

@@ -174,6 +229,10 @@ class CORE_EXPORT QgsLegendSettings
174229
/** Use the same width (maximum) for all columns */
175230
bool mEqualColumnWidth;
176231

232+
bool mRasterSymbolBorder;
233+
QColor mRasterBorderColor;
234+
double mRasterBorderWidth;
235+
177236
QMap<QgsComposerLegendStyle::Style, QgsComposerLegendStyle> mStyleMap;
178237

179238
/** Conversion ratio between millimeters and map units - for symbols with size given in map units */

‎src/ui/composer/qgscomposerlegendwidgetbase.ui

Lines changed: 108 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@
6363
<property name="geometry">
6464
<rect>
6565
<x>0</x>
66-
<y>0</y>
66+
<y>-420</y>
6767
<width>375</width>
68-
<height>1291</height>
68+
<height>1392</height>
6969
</rect>
7070
</property>
7171
<layout class="QVBoxLayout" name="mainLayout">
@@ -226,7 +226,7 @@
226226
<bool>false</bool>
227227
</property>
228228
<property name="headerHidden">
229-
<bool>false</bool>
229+
<bool>true</bool>
230230
</property>
231231
<attribute name="headerVisible">
232232
<bool>false</bool>
@@ -636,6 +636,108 @@
636636
</property>
637637
</widget>
638638
</item>
639+
<item row="2" column="0" colspan="2">
640+
<widget class="QgsCollapsibleGroupBoxBasic" name="mRasterBorderGroupBox">
641+
<property name="title">
642+
<string>Draw border for raster symbols</string>
643+
</property>
644+
<property name="checkable">
645+
<bool>true</bool>
646+
</property>
647+
<property name="syncGroup" stdset="0">
648+
<string notr="true">composeritem</string>
649+
</property>
650+
<property name="collapsed" stdset="0">
651+
<bool>true</bool>
652+
</property>
653+
<layout class="QGridLayout" name="gridLayout">
654+
<item row="0" column="0">
655+
<widget class="QLabel" name="label_17">
656+
<property name="text">
657+
<string>Border color</string>
658+
</property>
659+
</widget>
660+
</item>
661+
<item row="0" column="1">
662+
<layout class="QHBoxLayout" name="horizontalLayout_6">
663+
<item>
664+
<widget class="QgsColorButtonV2" name="mRasterBorderColorButton">
665+
<property name="sizePolicy">
666+
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
667+
<horstretch>0</horstretch>
668+
<verstretch>0</verstretch>
669+
</sizepolicy>
670+
</property>
671+
<property name="minimumSize">
672+
<size>
673+
<width>120</width>
674+
<height>0</height>
675+
</size>
676+
</property>
677+
<property name="maximumSize">
678+
<size>
679+
<width>120</width>
680+
<height>16777215</height>
681+
</size>
682+
</property>
683+
<property name="text">
684+
<string/>
685+
</property>
686+
</widget>
687+
</item>
688+
<item>
689+
<spacer name="horizontalSpacer_2">
690+
<property name="orientation">
691+
<enum>Qt::Horizontal</enum>
692+
</property>
693+
<property name="sizeHint" stdset="0">
694+
<size>
695+
<width>40</width>
696+
<height>20</height>
697+
</size>
698+
</property>
699+
</spacer>
700+
</item>
701+
</layout>
702+
</item>
703+
<item row="1" column="0">
704+
<widget class="QLabel" name="mOutlineWidthLabel">
705+
<property name="text">
706+
<string>Thickness</string>
707+
</property>
708+
<property name="wordWrap">
709+
<bool>true</bool>
710+
</property>
711+
<property name="buddy">
712+
<cstring>mRasterBorderWidthSpinBox</cstring>
713+
</property>
714+
</widget>
715+
</item>
716+
<item row="1" column="1">
717+
<widget class="QgsDoubleSpinBox" name="mRasterBorderWidthSpinBox">
718+
<property name="sizePolicy">
719+
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
720+
<horstretch>0</horstretch>
721+
<verstretch>0</verstretch>
722+
</sizepolicy>
723+
</property>
724+
<property name="specialValueText">
725+
<string>Hairline</string>
726+
</property>
727+
<property name="suffix">
728+
<string> mm</string>
729+
</property>
730+
<property name="singleStep">
731+
<double>0.100000000000000</double>
732+
</property>
733+
<property name="showClearButton" stdset="0">
734+
<bool>false</bool>
735+
</property>
736+
</widget>
737+
</item>
738+
</layout>
739+
</widget>
740+
</item>
639741
</layout>
640742
</widget>
641743
</item>
@@ -956,6 +1058,9 @@
9561058
<tabstop>mSymbolsColGroupBox</tabstop>
9571059
<tabstop>mSymbolWidthSpinBox</tabstop>
9581060
<tabstop>mSymbolHeightSpinBox</tabstop>
1061+
<tabstop>mRasterBorderGroupBox</tabstop>
1062+
<tabstop>mRasterBorderColorButton</tabstop>
1063+
<tabstop>mRasterBorderWidthSpinBox</tabstop>
9591064
<tabstop>mSymbolsColGroupBox_2</tabstop>
9601065
<tabstop>mWmsLegendWidthSpinBox</tabstop>
9611066
<tabstop>mWmsLegendHeightSpinBox</tabstop>

‎tests/src/core/testqgslegendrenderer.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ class TestQgsLegendRenderer : public QObject
9898
void testLongSymbolText();
9999
void testThreeColumns();
100100
void testFilterByMap();
101+
void testRasterBorder();
101102

102103
private:
103104
QgsLayerTreeGroup* mRoot;
@@ -327,5 +328,22 @@ void TestQgsLegendRenderer::testFilterByMap()
327328
QVERIFY( _verifyImage( testName, mReport ) );
328329
}
329330

331+
void TestQgsLegendRenderer::testRasterBorder()
332+
{
333+
QString testName = "legend_raster_border";
334+
335+
QgsLayerTreeGroup* root = new QgsLayerTreeGroup();
336+
root->addLayer( mRL );
337+
338+
QgsLayerTreeModel legendModel( root );
339+
340+
QgsLegendSettings settings;
341+
_setStandardTestFont( settings );
342+
settings.setRasterBorderWidth( 2 );
343+
settings.setRasterBorderColor( Qt::green );
344+
_renderLegend( testName, &legendModel, settings );
345+
QVERIFY( _verifyImage( testName, mReport ) );
346+
}
347+
330348
QTEST_MAIN( TestQgsLegendRenderer )
331349
#include "testqgslegendrenderer.moc"

0 commit comments

Comments
 (0)
Please sign in to comment.