mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-19 00:04:52 -04:00
Make outline only simple markers work with categorised/graduated
etc renderers (fix #15132)
This commit is contained in:
parent
972fc9fa11
commit
9f0ae9b408
@ -220,6 +220,8 @@ class QgsSimpleMarkerSymbolLayerV2 : QgsSimpleMarkerSymbolLayerBase
|
|||||||
void setOutlineColor( const QColor& color );
|
void setOutlineColor( const QColor& color );
|
||||||
QColor fillColor() const;
|
QColor fillColor() const;
|
||||||
void setFillColor( const QColor& color );
|
void setFillColor( const QColor& color );
|
||||||
|
void setColor( const QColor& color );
|
||||||
|
virtual QColor color() const;
|
||||||
|
|
||||||
// new methods
|
// new methods
|
||||||
|
|
||||||
|
@ -1516,6 +1516,32 @@ QRectF QgsSimpleMarkerSymbolLayerV2::bounds( QPointF point, QgsSymbolV2RenderCon
|
|||||||
return symbolBounds;
|
return symbolBounds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsSimpleMarkerSymbolLayerV2::setColor( const QColor& color )
|
||||||
|
{
|
||||||
|
if ( shapeIsFilled( mShape ) )
|
||||||
|
{
|
||||||
|
setFillColor( color );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setOutlineColor( color );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QColor QgsSimpleMarkerSymbolLayerV2::color() const
|
||||||
|
{
|
||||||
|
if ( shapeIsFilled( mShape ) )
|
||||||
|
{
|
||||||
|
return fillColor();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return outlineColor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// QgsFilledMarkerSymbolLayer
|
// QgsFilledMarkerSymbolLayer
|
||||||
|
@ -257,8 +257,10 @@ class CORE_EXPORT QgsSimpleMarkerSymbolLayerV2 : public QgsSimpleMarkerSymbolLay
|
|||||||
QRectF bounds( QPointF point, QgsSymbolV2RenderContext& context ) override;
|
QRectF bounds( QPointF point, QgsSymbolV2RenderContext& context ) override;
|
||||||
QColor outlineColor() const override { return borderColor(); }
|
QColor outlineColor() const override { return borderColor(); }
|
||||||
void setOutlineColor( const QColor& color ) override { setBorderColor( color ); }
|
void setOutlineColor( const QColor& color ) override { setBorderColor( color ); }
|
||||||
QColor fillColor() const override { return color(); }
|
QColor fillColor() const override { return mColor; }
|
||||||
void setFillColor( const QColor& color ) override { setColor( color ); }
|
void setFillColor( const QColor& color ) override { mColor = color; }
|
||||||
|
void setColor( const QColor& color ) override;
|
||||||
|
virtual QColor color() const override;
|
||||||
|
|
||||||
// new methods
|
// new methods
|
||||||
|
|
||||||
|
@ -493,7 +493,7 @@ void QgsSimpleMarkerSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer
|
|||||||
btnChangeColorBorder->setColor( mLayer->borderColor() );
|
btnChangeColorBorder->setColor( mLayer->borderColor() );
|
||||||
btnChangeColorBorder->blockSignals( false );
|
btnChangeColorBorder->blockSignals( false );
|
||||||
btnChangeColorFill->blockSignals( true );
|
btnChangeColorFill->blockSignals( true );
|
||||||
btnChangeColorFill->setColor( mLayer->color() );
|
btnChangeColorFill->setColor( mLayer->fillColor() );
|
||||||
btnChangeColorFill->blockSignals( false );
|
btnChangeColorFill->blockSignals( false );
|
||||||
spinSize->blockSignals( true );
|
spinSize->blockSignals( true );
|
||||||
spinSize->setValue( mLayer->size() );
|
spinSize->setValue( mLayer->size() );
|
||||||
|
@ -66,6 +66,7 @@ class TestQgsSimpleMarkerSymbol : public QObject
|
|||||||
void boundsWithOffset();
|
void boundsWithOffset();
|
||||||
void boundsWithRotation();
|
void boundsWithRotation();
|
||||||
void boundsWithRotationAndOffset();
|
void boundsWithRotationAndOffset();
|
||||||
|
void colors();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool mTestHasError;
|
bool mTestHasError;
|
||||||
@ -251,6 +252,27 @@ void TestQgsSimpleMarkerSymbol::boundsWithRotationAndOffset()
|
|||||||
QVERIFY( result );
|
QVERIFY( result );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TestQgsSimpleMarkerSymbol::colors()
|
||||||
|
{
|
||||||
|
//test logic for setting/retrieving symbol color
|
||||||
|
|
||||||
|
QgsSimpleMarkerSymbolLayerV2 marker;
|
||||||
|
marker.setOutlineColor( QColor( 200, 200, 200 ) );
|
||||||
|
marker.setFillColor( QColor( 100, 100, 100 ) );
|
||||||
|
|
||||||
|
//start with a filled shape - color should be fill color
|
||||||
|
marker.setShape( QgsSimpleMarkerSymbolLayerBase::Circle );
|
||||||
|
QCOMPARE( marker.color(), QColor( 100, 100, 100 ) );
|
||||||
|
marker.setColor( QColor( 150, 150, 150 ) );
|
||||||
|
QCOMPARE( marker.fillColor(), QColor( 150, 150, 150 ) );
|
||||||
|
|
||||||
|
//now try with a non-filled (outline only) shape - color should be outline color
|
||||||
|
marker.setShape( QgsSimpleMarkerSymbolLayerBase::Cross );
|
||||||
|
QCOMPARE( marker.color(), QColor( 200, 200, 200 ) );
|
||||||
|
marker.setColor( QColor( 250, 250, 250 ) );
|
||||||
|
QCOMPARE( marker.outlineColor(), QColor( 250, 250, 250 ) );
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Private helper functions not called directly by CTest
|
// Private helper functions not called directly by CTest
|
||||||
//
|
//
|
||||||
|
Loading…
x
Reference in New Issue
Block a user