FontOffsets.patch
src/core/symbology-ng/qgsmarkersymbollayerv2.cpp (working copy) | ||
---|---|---|
642 | 642 |
mColor = color; |
643 | 643 |
mAngle = angle; |
644 | 644 |
mSize = pointSize; |
645 |
mOffset = QPointF( 0, 0 ); |
|
645 | 646 |
} |
646 | 647 | |
647 | 648 |
QgsSymbolLayerV2* QgsFontMarkerSymbolLayerV2::create( const QgsStringMap& props ) |
... | ... | |
663 | 664 |
if ( props.contains( "angle" ) ) |
664 | 665 |
angle = props["angle"].toDouble(); |
665 | 666 | |
666 |
return new QgsFontMarkerSymbolLayerV2( fontFamily, chr, pointSize, color, angle ); |
|
667 |
QgsFontMarkerSymbolLayerV2* m = new QgsFontMarkerSymbolLayerV2( fontFamily, chr, pointSize, color, angle ); |
|
668 |
if (props.contains( "offset" ) ) |
|
669 |
m->setOffset( QgsSymbolLayerV2Utils::decodePoint( props["offset"] )); |
|
670 |
return m; |
|
667 | 671 |
} |
668 | 672 | |
669 | 673 |
QString QgsFontMarkerSymbolLayerV2::layerType() const |
... | ... | |
692 | 696 |
penColor.setAlphaF( context.alpha() ); |
693 | 697 |
p->setPen( penColor ); |
694 | 698 |
p->setFont( mFont ); |
699 |
|
|
695 | 700 | |
696 | 701 |
p->save(); |
697 |
p->translate( point ); |
|
702 |
QPointF outputOffset = QPointF( context.outputLineWidth( mOffset.x() ), context.outputLineWidth( mOffset.y() ) ); |
|
703 |
p->translate( point + outputOffset ); |
|
698 | 704 | |
699 | 705 |
if ( context.renderHints() & QgsSymbolV2::DataDefinedSizeScale ) |
700 | 706 |
{ |
... | ... | |
717 | 723 |
props["size"] = QString::number( mSize ); |
718 | 724 |
props["color"] = QgsSymbolLayerV2Utils::encodeColor( mColor ); |
719 | 725 |
props["angle"] = QString::number( mAngle ); |
726 |
props["offset"] = QgsSymbolLayerV2Utils::encodePoint( mOffset ); |
|
720 | 727 |
return props; |
721 | 728 |
} |
722 | 729 | |
723 | 730 |
QgsSymbolLayerV2* QgsFontMarkerSymbolLayerV2::clone() const |
724 | 731 |
{ |
725 |
return new QgsFontMarkerSymbolLayerV2( mFontFamily, mChr, mSize, mColor, mAngle ); |
|
732 |
QgsFontMarkerSymbolLayerV2* m = new QgsFontMarkerSymbolLayerV2( mFontFamily, mChr, mSize, mColor, mAngle ); |
|
733 |
m->setOffset( mOffset ); |
|
734 |
return m; |
|
726 | 735 |
} |
src/gui/symbology-ng/qgssymbollayerv2widget.cpp (working copy) | ||
---|---|---|
769 | 769 |
connect( spinSize, SIGNAL( valueChanged( double ) ), this, SLOT( setSize( double ) ) ); |
770 | 770 |
connect( btnColor, SIGNAL( clicked() ), this, SLOT( setColor() ) ); |
771 | 771 |
connect( spinAngle, SIGNAL( valueChanged( double ) ), this, SLOT( setAngle( double ) ) ); |
772 |
connect( spinOffsetX, SIGNAL( valueChanged( double ) ), this, SLOT ( setOffset () )); |
|
773 |
connect( spinOffsetY, SIGNAL( valueChanged( double ) ), this, SLOT ( setOffset () )); |
|
772 | 774 |
connect( widgetChar, SIGNAL( characterSelected( const QChar & ) ), this, SLOT( setCharacter( const QChar & ) ) ); |
773 | 775 |
} |
774 | 776 | |
777 | ||
775 | 778 |
void QgsFontMarkerSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer ) |
776 | 779 |
{ |
777 | 780 |
if ( layer->layerType() != "FontMarker" ) |
... | ... | |
785 | 788 |
spinSize->setValue( mLayer->size() ); |
786 | 789 |
btnColor->setColor( mLayer->color() ); |
787 | 790 |
spinAngle->setValue( mLayer->angle() ); |
791 | ||
792 |
//block |
|
793 |
spinOffsetX->blockSignals( true ); |
|
794 |
spinOffsetX->setValue( mLayer->offset().x() ); |
|
795 |
spinOffsetX->blockSignals( false ); |
|
796 |
spinOffsetY->blockSignals( true ); |
|
797 |
spinOffsetY->setValue( mLayer->offset().y() ); |
|
798 |
spinOffsetY->blockSignals( false ); |
|
799 | ||
788 | 800 |
} |
789 | 801 | |
790 | 802 |
QgsSymbolLayerV2* QgsFontMarkerSymbolLayerV2Widget::symbolLayer() |
... | ... | |
828 | 840 |
emit changed(); |
829 | 841 |
} |
830 | 842 | |
843 |
void QgsFontMarkerSymbolLayerV2Widget::setOffset() |
|
844 |
{ |
|
845 |
mLayer->setOffset( QPointF( spinOffsetX->value(), spinOffsetY->value() ) ); |
|
846 |
emit changed(); |
|
847 |
} |
|
831 | 848 | |
849 | ||
832 | 850 |
/////////////// |
833 | 851 | |
834 | 852 |
src/gui/symbology-ng/qgssymbollayerv2widget.h (working copy) | ||
---|---|---|
276 | 276 |
void setSize( double size ); |
277 | 277 |
void setAngle( double angle ); |
278 | 278 |
void setCharacter( const QChar& chr ); |
279 |
void setOffset(); |
|
279 | 280 | |
280 | 281 |
protected: |
281 | 282 |
QgsFontMarkerSymbolLayerV2* mLayer; |
src/ui/symbollayer/widget_fontmarker.ui (working copy) | ||
---|---|---|
16 | 16 |
<layout class="QVBoxLayout" name="verticalLayout"> |
17 | 17 |
<item> |
18 | 18 |
<layout class="QGridLayout" name="gridLayout"> |
19 |
<property name="sizeConstraint"> |
|
20 |
<enum>QLayout::SetDefaultConstraint</enum> |
|
21 |
</property> |
|
22 |
<property name="leftMargin"> |
|
23 |
<number>0</number> |
|
24 |
</property> |
|
25 |
<property name="topMargin"> |
|
26 |
<number>0</number> |
|
27 |
</property> |
|
28 |
<property name="horizontalSpacing"> |
|
29 |
<number>6</number> |
|
30 |
</property> |
|
19 | 31 |
<item row="0" column="0"> |
20 | 32 |
<widget class="QLabel" name="label"> |
21 | 33 |
<property name="text"> |
... | ... | |
74 | 86 |
</property> |
75 | 87 |
</widget> |
76 | 88 |
</item> |
89 |
<item row="4" column="0"> |
|
90 |
<widget class="QLabel" name="label_5"> |
|
91 |
<property name="text"> |
|
92 |
<string>Offset X,Y</string> |
|
93 |
</property> |
|
94 |
</widget> |
|
95 |
</item> |
|
96 |
<item row="4" column="1"> |
|
97 |
<layout class="QHBoxLayout" name="horizontalLayout"> |
|
98 |
<item> |
|
99 |
<widget class="QDoubleSpinBox" name="spinOffsetX"> |
|
100 |
<property name="minimum"> |
|
101 |
<double>-100000.000000000000000</double> |
|
102 |
</property> |
|
103 |
<property name="maximum"> |
|
104 |
<double>100000.000000000000000</double> |
|
105 |
</property> |
|
106 |
</widget> |
|
107 |
</item> |
|
108 |
<item> |
|
109 |
<widget class="QDoubleSpinBox" name="spinOffsetY"> |
|
110 |
<property name="minimum"> |
|
111 |
<double>-100000.000000000000000</double> |
|
112 |
</property> |
|
113 |
<property name="maximum"> |
|
114 |
<double>100000.000000000000000</double> |
|
115 |
</property> |
|
116 |
</widget> |
|
117 |
</item> |
|
118 |
</layout> |
|
119 |
</item> |
|
77 | 120 |
</layout> |
78 | 121 |
</item> |
79 | 122 |
<item> |