From 882f6f8c3cb8243333a9e7ef5ade6ca85ea4ec0c Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Tue, 5 Apr 2016 09:28:55 +1000 Subject: [PATCH] [symbology] Add some more dispersed marker symbols (half/quarter squares) --- .../core/symbology-ng/qgsmarkersymbollayerv2.sip | 6 ++++-- src/core/symbology-ng/qgsmarkersymbollayerv2.cpp | 15 +++++++++++++++ src/core/symbology-ng/qgsmarkersymbollayerv2.h | 6 ++++-- src/gui/symbology-ng/qgssymbollayerv2widget.cpp | 6 ++++-- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/python/core/symbology-ng/qgsmarkersymbollayerv2.sip b/python/core/symbology-ng/qgsmarkersymbollayerv2.sip index b65b11b0d09..2cfc00a608e 100644 --- a/python/core/symbology-ng/qgsmarkersymbollayerv2.sip +++ b/python/core/symbology-ng/qgsmarkersymbollayerv2.sip @@ -5,11 +5,13 @@ class QgsSimpleMarkerSymbolLayerV2 : QgsMarkerSymbolLayerV2 %End public: + /** Constructor for QgsSimpleMarkerSymbolLayerV2. * @param name symbol name, should be one of "square", "rectangle", "diamond", * "pentagon", "triangle", "equilateral_triangle", "star", "regular_star", "arrow", - * "circle", "cross", "cross2", "line", "x", "arrowhead", "filled_arrowhead" - * "semi_circle", "third_circle", "quarter_circle" + * "circle", "cross", "cross2", "line", "x", "arrowhead", "filled_arrowhead", + * "semi_circle", "third_circle", "quarter_circle", "quarter_square", "half_square", + * "diagonal_half_square" * @param color fill color for symbol * @param borderColor border color for symbol * @param size symbol size (in mm) diff --git a/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp b/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp index 4f9e08a7d37..6f9d4163c42 100644 --- a/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp +++ b/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp @@ -342,6 +342,21 @@ bool QgsSimpleMarkerSymbolLayerV2::prepareShape( const QString& name, QPolygonF polygon = QPolygonF( QRectF( QPointF( -1, -1 ), QPointF( 1, 1 ) ) ); return true; } + else if ( name == "quarter_square" ) + { + polygon = QPolygonF( QRectF( QPointF( -1, -1 ), QPointF( 0, 0 ) ) ); + return true; + } + else if ( name == "half_square" ) + { + polygon = QPolygonF( QRectF( QPointF( -1, -1 ), QPointF( 0, 1 ) ) ); + return true; + } + else if ( name == "diagonal_half_square" ) + { + polygon << QPointF( -1, -1 ) << QPointF( 1, 1 ) << QPointF( -1, 1 ); + return true; + } else if ( name == "diamond" ) { polygon << QPointF( -1, 0 ) << QPointF( 0, 1 ) diff --git a/src/core/symbology-ng/qgsmarkersymbollayerv2.h b/src/core/symbology-ng/qgsmarkersymbollayerv2.h index 886af46d53a..606f473891b 100644 --- a/src/core/symbology-ng/qgsmarkersymbollayerv2.h +++ b/src/core/symbology-ng/qgsmarkersymbollayerv2.h @@ -35,11 +35,13 @@ class CORE_EXPORT QgsSimpleMarkerSymbolLayerV2 : public QgsMarkerSymbolLayerV2 { public: + /** Constructor for QgsSimpleMarkerSymbolLayerV2. * @param name symbol name, should be one of "square", "rectangle", "diamond", * "pentagon", "triangle", "equilateral_triangle", "star", "regular_star", "arrow", - * "circle", "cross", "cross2", "line", "x", "arrowhead", "filled_arrowhead", - * "semi_circle", "third_circle", "quarter_circle" + * "circle", "cross", "cross2", "line", "x", "arrowhead", "filled_arrowhead", + * "semi_circle", "third_circle", "quarter_circle", "quarter_square", "half_square", + * "diagonal_half_square" * @param color fill color for symbol * @param borderColor border color for symbol * @param size symbol size (in mm) diff --git a/src/gui/symbology-ng/qgssymbollayerv2widget.cpp b/src/gui/symbology-ng/qgssymbollayerv2widget.cpp index db7ea31700b..784e782eaa6 100644 --- a/src/gui/symbology-ng/qgssymbollayerv2widget.cpp +++ b/src/gui/symbology-ng/qgssymbollayerv2widget.cpp @@ -441,7 +441,8 @@ QgsSimpleMarkerSymbolLayerV2Widget::QgsSimpleMarkerSymbolLayerV2Widget( const Qg QSize size = lstNames->iconSize(); QStringList names; names << "circle" << "rectangle" << "diamond" << "pentagon" << "cross" << "cross2" << "triangle" << "equilateral_triangle" << "star" - << "regular_star" << "arrow" << "line" << "arrowhead" << "filled_arrowhead" << "semi_circle" << "third_circle" << "quarter_circle"; + << "regular_star" << "arrow" << "line" << "arrowhead" << "filled_arrowhead" << "semi_circle" << "third_circle" << "quarter_circle" + << "quarter_square" << "half_square" << "diagonal_half_square"; double markerSize = DEFAULT_POINT_SIZE * 2; Q_FOREACH ( const QString& name, names ) { @@ -542,7 +543,8 @@ void QgsSimpleMarkerSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer "pentagon|triangle|equilateral_triangle|" "star|regular_star|arrow|filled_arrowhead|" "circle|cross|x|" - "cross2|line|arrowhead|semi_circle|third_circle|quarter_circle]" ) ); + "cross2|line|arrowhead|semi_circle|third_circle|quarter_circle|" + "quarter_square|half_square|diagonal_half_square]" ) ); registerDataDefinedButton( mFillColorDDBtn, "color", QgsDataDefinedButton::String, QgsDataDefinedButton::colorAlphaDesc() ); registerDataDefinedButton( mBorderColorDDBtn, "color_border", QgsDataDefinedButton::String, QgsDataDefinedButton::colorAlphaDesc() ); registerDataDefinedButton( mOutlineWidthDDBtn, "outline_width", QgsDataDefinedButton::Double, QgsDataDefinedButton::doublePosDesc() );