Skip to content

Commit a1d5dcd

Browse files
author
wonder
committedApr 29, 2010
[FEATURE] symbology-ng: possibility to offset for simple fill.
git-svn-id: http://svn.osgeo.org/qgis/trunk@13408 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 085d72f commit a1d5dcd

File tree

5 files changed

+78
-17
lines changed

5 files changed

+78
-17
lines changed
 

‎src/core/symbology-ng/qgsfillsymbollayerv2.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ QgsSymbolLayerV2* QgsSimpleFillSymbolLayerV2::create( const QgsStringMap& props
2222
QColor borderColor = DEFAULT_SIMPLEFILL_BORDERCOLOR;
2323
Qt::PenStyle borderStyle = DEFAULT_SIMPLEFILL_BORDERSTYLE;
2424
double borderWidth = DEFAULT_SIMPLEFILL_BORDERWIDTH;
25+
QPointF offset;
2526

2627
if ( props.contains( "color" ) )
2728
color = QgsSymbolLayerV2Utils::decodeColor( props["color"] );
@@ -33,8 +34,12 @@ QgsSymbolLayerV2* QgsSimpleFillSymbolLayerV2::create( const QgsStringMap& props
3334
borderStyle = QgsSymbolLayerV2Utils::decodePenStyle( props["style_border"] );
3435
if ( props.contains( "width_border" ) )
3536
borderWidth = props["width_border"].toDouble();
37+
if ( props.contains( "offset" ) )
38+
offset = QgsSymbolLayerV2Utils::decodePoint( props["offset"] );
3639

37-
return new QgsSimpleFillSymbolLayerV2( color, style, borderColor, borderStyle, borderWidth );
40+
QgsSimpleFillSymbolLayerV2* sl = new QgsSimpleFillSymbolLayerV2( color, style, borderColor, borderStyle, borderWidth );
41+
sl->setOffset( offset );
42+
return sl;
3843
}
3944

4045

@@ -72,7 +77,13 @@ void QgsSimpleFillSymbolLayerV2::renderPolygon( const QPolygonF& points, QList<Q
7277
p->setBrush( context.selected() ? mSelBrush : mBrush );
7378
p->setPen( mPen );
7479

80+
if ( !mOffset.isNull() )
81+
p->translate( mOffset );
82+
7583
_renderPolygon( p, points, rings );
84+
85+
if ( !mOffset.isNull() )
86+
p->translate( -mOffset );
7687
}
7788

7889
QgsStringMap QgsSimpleFillSymbolLayerV2::properties() const
@@ -83,12 +94,15 @@ QgsStringMap QgsSimpleFillSymbolLayerV2::properties() const
8394
map["color_border"] = QgsSymbolLayerV2Utils::encodeColor( mBorderColor );
8495
map["style_border"] = QgsSymbolLayerV2Utils::encodePenStyle( mBorderStyle );
8596
map["width_border"] = QString::number( mBorderWidth );
97+
map["offset"] = QgsSymbolLayerV2Utils::encodePoint( mOffset );
8698
return map;
8799
}
88100

89101
QgsSymbolLayerV2* QgsSimpleFillSymbolLayerV2::clone() const
90102
{
91-
return new QgsSimpleFillSymbolLayerV2( mColor, mBrushStyle, mBorderColor, mBorderStyle, mBorderWidth );
103+
QgsSimpleFillSymbolLayerV2* sl = new QgsSimpleFillSymbolLayerV2( mColor, mBrushStyle, mBorderColor, mBorderStyle, mBorderWidth );
104+
sl->setOffset( mOffset );
105+
return sl;
92106
}
93107

94108
//QgsSVGFillSymbolLayer

‎src/core/symbology-ng/qgsfillsymbollayerv2.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ class CORE_EXPORT QgsSimpleFillSymbolLayerV2 : public QgsFillSymbolLayerV2
5252
double borderWidth() const { return mBorderWidth; }
5353
void setBorderWidth( double borderWidth ) { mBorderWidth = borderWidth; }
5454

55+
void setOffset( QPointF offset ) { mOffset = offset; }
56+
QPointF offset() { return mOffset; }
57+
5558
protected:
5659
QBrush mBrush;
5760
QBrush mSelBrush;
@@ -60,6 +63,8 @@ class CORE_EXPORT QgsSimpleFillSymbolLayerV2 : public QgsFillSymbolLayerV2
6063
Qt::PenStyle mBorderStyle;
6164
double mBorderWidth;
6265
QPen mPen;
66+
67+
QPointF mOffset;
6368
};
6469

6570
/**A class for svg fill patterns. The class automatically scales the pattern to

‎src/gui/symbology-ng/qgssymbollayerv2widget.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,8 @@ QgsSimpleFillSymbolLayerV2Widget::QgsSimpleFillSymbolLayerV2Widget( QWidget* par
271271
connect( btnChangeBorderColor, SIGNAL( clicked() ), this, SLOT( setBorderColor() ) );
272272
connect( spinBorderWidth, SIGNAL( valueChanged( double ) ), this, SLOT( borderWidthChanged() ) );
273273
connect( cboBorderStyle, SIGNAL( currentIndexChanged( int ) ), this, SLOT( borderStyleChanged() ) );
274+
connect( spinOffsetX, SIGNAL( valueChanged( double ) ), this, SLOT( offsetChanged() ) );
275+
connect( spinOffsetY, SIGNAL( valueChanged( double ) ), this, SLOT( offsetChanged() ) );
274276
}
275277

276278
void QgsSimpleFillSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer )
@@ -287,6 +289,8 @@ void QgsSimpleFillSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer )
287289
btnChangeBorderColor->setColor( mLayer->borderColor() );
288290
cboBorderStyle->setPenStyle( mLayer->borderStyle() );
289291
spinBorderWidth->setValue( mLayer->borderWidth() );
292+
spinOffsetX->setValue( mLayer->offset().x() );
293+
spinOffsetY->setValue( mLayer->offset().y() );
290294
}
291295

292296
QgsSymbolLayerV2* QgsSimpleFillSymbolLayerV2Widget::symbolLayer()
@@ -332,6 +336,12 @@ void QgsSimpleFillSymbolLayerV2Widget::borderStyleChanged()
332336
emit changed();
333337
}
334338

339+
void QgsSimpleFillSymbolLayerV2Widget::offsetChanged()
340+
{
341+
mLayer->setOffset( QPointF( spinOffsetX->value(), spinOffsetY->value() ) );
342+
emit changed();
343+
}
344+
335345
///////////
336346

337347
QgsMarkerLineSymbolLayerV2Widget::QgsMarkerLineSymbolLayerV2Widget( QWidget* parent )

‎src/gui/symbology-ng/qgssymbollayerv2widget.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ class GUI_EXPORT QgsSimpleFillSymbolLayerV2Widget : public QgsSymbolLayerV2Widge
113113
void setBrushStyle();
114114
void borderWidthChanged();
115115
void borderStyleChanged();
116+
void offsetChanged();
116117

117118
protected:
118119
QgsSimpleFillSymbolLayerV2* mLayer;

‎src/ui/symbollayer/widget_simplefill.ui

Lines changed: 46 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
<property name="windowTitle">
1414
<string>Form</string>
1515
</property>
16-
<layout class="QVBoxLayout">
16+
<layout class="QVBoxLayout" name="verticalLayout">
1717
<item>
18-
<layout class="QGridLayout">
18+
<layout class="QGridLayout" name="gridLayout">
1919
<item row="0" column="0">
2020
<widget class="QLabel" name="label">
2121
<property name="text">
@@ -30,7 +30,7 @@
3030
</property>
3131
</widget>
3232
</item>
33-
<item row="0" column="2" rowspan="5">
33+
<item row="0" column="2" rowspan="6">
3434
<spacer>
3535
<property name="orientation">
3636
<enum>Qt::Horizontal</enum>
@@ -40,12 +40,22 @@
4040
</property>
4141
<property name="sizeHint" stdset="0">
4242
<size>
43-
<width>91</width>
44-
<height>51</height>
43+
<width>28</width>
44+
<height>158</height>
4545
</size>
4646
</property>
4747
</spacer>
4848
</item>
49+
<item row="1" column="0">
50+
<widget class="QLabel" name="label_2">
51+
<property name="text">
52+
<string>Fill style:</string>
53+
</property>
54+
</widget>
55+
</item>
56+
<item row="1" column="1">
57+
<widget class="QgsBrushStyleComboBox" name="cboFillStyle"/>
58+
</item>
4959
<item row="2" column="0">
5060
<widget class="QLabel" name="label_3">
5161
<property name="text">
@@ -60,16 +70,6 @@
6070
</property>
6171
</widget>
6272
</item>
63-
<item row="1" column="1">
64-
<widget class="QgsBrushStyleComboBox" name="cboFillStyle"/>
65-
</item>
66-
<item row="1" column="0">
67-
<widget class="QLabel" name="label_2">
68-
<property name="text">
69-
<string>Fill style:</string>
70-
</property>
71-
</widget>
72-
</item>
7373
<item row="3" column="0">
7474
<widget class="QLabel" name="label_4">
7575
<property name="text">
@@ -97,6 +97,37 @@
9797
</property>
9898
</widget>
9999
</item>
100+
<item row="5" column="0">
101+
<widget class="QLabel" name="label_6">
102+
<property name="text">
103+
<string>Offset X,Y:</string>
104+
</property>
105+
</widget>
106+
</item>
107+
<item row="5" column="1">
108+
<layout class="QHBoxLayout" name="horizontalLayout">
109+
<item>
110+
<widget class="QDoubleSpinBox" name="spinOffsetX">
111+
<property name="minimum">
112+
<double>-999.000000000000000</double>
113+
</property>
114+
<property name="maximum">
115+
<double>999.000000000000000</double>
116+
</property>
117+
</widget>
118+
</item>
119+
<item>
120+
<widget class="QDoubleSpinBox" name="spinOffsetY">
121+
<property name="minimum">
122+
<double>-999.000000000000000</double>
123+
</property>
124+
<property name="maximum">
125+
<double>999.000000000000000</double>
126+
</property>
127+
</widget>
128+
</item>
129+
</layout>
130+
</item>
100131
</layout>
101132
</item>
102133
<item>

0 commit comments

Comments
 (0)
Please sign in to comment.