[QGIS Commit] r14894 - in trunk/qgis/src: core/symbology-ng
gui/symbology-ng ui/symbollayer
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sun Dec 12 10:20:40 EST 2010
Author: wonder
Date: 2010-12-12 07:20:40 -0800 (Sun, 12 Dec 2010)
New Revision: 14894
Modified:
trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp
trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.cpp
trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.h
trunk/qgis/src/ui/symbollayer/widget_fontmarker.ui
Log:
[FEATURE] Font marker: possibility to set X,Y offset. Contributed by Nathan Woodrow - thanks!
Modified: trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp
===================================================================
--- trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp 2010-12-12 07:49:34 UTC (rev 14893)
+++ trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp 2010-12-12 15:20:40 UTC (rev 14894)
@@ -642,6 +642,7 @@
mColor = color;
mAngle = angle;
mSize = pointSize;
+ mOffset = QPointF( 0, 0 );
}
QgsSymbolLayerV2* QgsFontMarkerSymbolLayerV2::create( const QgsStringMap& props )
@@ -663,7 +664,10 @@
if ( props.contains( "angle" ) )
angle = props["angle"].toDouble();
- return new QgsFontMarkerSymbolLayerV2( fontFamily, chr, pointSize, color, angle );
+ QgsFontMarkerSymbolLayerV2* m = new QgsFontMarkerSymbolLayerV2( fontFamily, chr, pointSize, color, angle );
+ if ( props.contains( "offset" ) )
+ m->setOffset( QgsSymbolLayerV2Utils::decodePoint( props["offset"] ) );
+ return m;
}
QString QgsFontMarkerSymbolLayerV2::layerType() const
@@ -693,8 +697,10 @@
p->setPen( penColor );
p->setFont( mFont );
+
p->save();
- p->translate( point );
+ QPointF outputOffset = QPointF( context.outputLineWidth( mOffset.x() ), context.outputLineWidth( mOffset.y() ) );
+ p->translate( point + outputOffset );
if ( context.renderHints() & QgsSymbolV2::DataDefinedSizeScale )
{
@@ -717,10 +723,13 @@
props["size"] = QString::number( mSize );
props["color"] = QgsSymbolLayerV2Utils::encodeColor( mColor );
props["angle"] = QString::number( mAngle );
+ props["offset"] = QgsSymbolLayerV2Utils::encodePoint( mOffset );
return props;
}
QgsSymbolLayerV2* QgsFontMarkerSymbolLayerV2::clone() const
{
- return new QgsFontMarkerSymbolLayerV2( mFontFamily, mChr, mSize, mColor, mAngle );
+ QgsFontMarkerSymbolLayerV2* m = new QgsFontMarkerSymbolLayerV2( mFontFamily, mChr, mSize, mColor, mAngle );
+ m->setOffset( mOffset );
+ return m;
}
Modified: trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.cpp
===================================================================
--- trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.cpp 2010-12-12 07:49:34 UTC (rev 14893)
+++ trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.cpp 2010-12-12 15:20:40 UTC (rev 14894)
@@ -769,9 +769,12 @@
connect( spinSize, SIGNAL( valueChanged( double ) ), this, SLOT( setSize( double ) ) );
connect( btnColor, SIGNAL( clicked() ), this, SLOT( setColor() ) );
connect( spinAngle, SIGNAL( valueChanged( double ) ), this, SLOT( setAngle( double ) ) );
+ connect( spinOffsetX, SIGNAL( valueChanged( double ) ), this, SLOT( setOffset() ) );
+ connect( spinOffsetY, SIGNAL( valueChanged( double ) ), this, SLOT( setOffset() ) );
connect( widgetChar, SIGNAL( characterSelected( const QChar & ) ), this, SLOT( setCharacter( const QChar & ) ) );
}
+
void QgsFontMarkerSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer )
{
if ( layer->layerType() != "FontMarker" )
@@ -785,6 +788,15 @@
spinSize->setValue( mLayer->size() );
btnColor->setColor( mLayer->color() );
spinAngle->setValue( mLayer->angle() );
+
+ //block
+ spinOffsetX->blockSignals( true );
+ spinOffsetX->setValue( mLayer->offset().x() );
+ spinOffsetX->blockSignals( false );
+ spinOffsetY->blockSignals( true );
+ spinOffsetY->setValue( mLayer->offset().y() );
+ spinOffsetY->blockSignals( false );
+
}
QgsSymbolLayerV2* QgsFontMarkerSymbolLayerV2Widget::symbolLayer()
@@ -828,7 +840,13 @@
emit changed();
}
+void QgsFontMarkerSymbolLayerV2Widget::setOffset()
+{
+ mLayer->setOffset( QPointF( spinOffsetX->value(), spinOffsetY->value() ) );
+ emit changed();
+}
+
///////////////
Modified: trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.h
===================================================================
--- trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.h 2010-12-12 07:49:34 UTC (rev 14893)
+++ trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.h 2010-12-12 15:20:40 UTC (rev 14894)
@@ -276,6 +276,7 @@
void setSize( double size );
void setAngle( double angle );
void setCharacter( const QChar& chr );
+ void setOffset();
protected:
QgsFontMarkerSymbolLayerV2* mLayer;
Modified: trunk/qgis/src/ui/symbollayer/widget_fontmarker.ui
===================================================================
--- trunk/qgis/src/ui/symbollayer/widget_fontmarker.ui 2010-12-12 07:49:34 UTC (rev 14893)
+++ trunk/qgis/src/ui/symbollayer/widget_fontmarker.ui 2010-12-12 15:20:40 UTC (rev 14894)
@@ -16,6 +16,18 @@
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout">
+ <property name="sizeConstraint">
+ <enum>QLayout::SetDefaultConstraint</enum>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="horizontalSpacing">
+ <number>6</number>
+ </property>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
@@ -74,6 +86,37 @@
</property>
</widget>
</item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Offset X,Y</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QDoubleSpinBox" name="spinOffsetX">
+ <property name="minimum">
+ <double>-100000.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>100000.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDoubleSpinBox" name="spinOffsetY">
+ <property name="minimum">
+ <double>-100000.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>100000.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
</layout>
</item>
<item>
More information about the QGIS-commit
mailing list