Skip to content

Commit

Permalink
restore default scalebar style only if fill symbol is invisible
Browse files Browse the repository at this point in the history
  • Loading branch information
alexbruy authored and nyalldawson committed Feb 5, 2025
1 parent 1f7d1ad commit 2fd0175
Show file tree
Hide file tree
Showing 8 changed files with 38 additions and 70 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,6 @@ Double box with alternating colors.

virtual bool applyDefaultSettings( QgsScaleBarSettings &settings ) const;

%Docstring
Applies any default settings relating to the scalebar to the passed ``settings`` object.

Returns ``True`` if settings were applied.

.. versionadded:: 3.42
%End
};

/************************************************************************
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,6 @@ color for the segments.

virtual bool applyDefaultSettings( QgsScaleBarSettings &settings ) const;

%Docstring
Applies any default settings relating to the scalebar to the passed ``settings`` object.

Returns ``True`` if settings were applied.

.. versionadded:: 3.42
%End
};

/************************************************************************
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,6 @@ Double box with alternating colors.

virtual bool applyDefaultSettings( QgsScaleBarSettings &settings ) const;

%Docstring
Applies any default settings relating to the scalebar to the passed ``settings`` object.

Returns ``True`` if settings were applied.

.. versionadded:: 3.42
%End
};

/************************************************************************
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,6 @@ color for the segments.

virtual bool applyDefaultSettings( QgsScaleBarSettings &settings ) const;

%Docstring
Applies any default settings relating to the scalebar to the passed ``settings`` object.

Returns ``True`` if settings were applied.

.. versionadded:: 3.42
%End
};

/************************************************************************
Expand Down
33 changes: 19 additions & 14 deletions src/core/scalebar/qgsdoubleboxscalebarrenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -194,21 +194,26 @@ void QgsDoubleBoxScaleBarRenderer::draw( QgsRenderContext &context, const QgsSca

bool QgsDoubleBoxScaleBarRenderer::applyDefaultSettings( QgsScaleBarSettings &settings ) const
{
QgsSimpleFillSymbolLayer *fill = qgis::down_cast< QgsSimpleFillSymbolLayer * >( settings.fillSymbol()->symbolLayers().at( 0 ) );

// restore the fill symbols by default
std::unique_ptr< QgsFillSymbol > fillSymbol = std::make_unique< QgsFillSymbol >();
std::unique_ptr< QgsSimpleFillSymbolLayer > fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >();
fillSymbolLayer->setColor( QColor( 0, 0, 0 ) );
fillSymbolLayer->setBrushStyle( Qt::SolidPattern );
fillSymbolLayer->setStrokeStyle( Qt::SolidLine );
fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() );
settings.setFillSymbol( fillSymbol.release() );

fillSymbol = std::make_unique< QgsFillSymbol >();
fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >();
fillSymbolLayer->setColor( QColor( 255, 255, 255 ) );
fillSymbolLayer->setStrokeStyle( Qt::NoPen );
fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() );
settings.setAlternateFillSymbol( fillSymbol.release() );
if ( fill && fill->brushStyle() == Qt::NoBrush )
{
std::unique_ptr< QgsFillSymbol > fillSymbol = std::make_unique< QgsFillSymbol >();
std::unique_ptr< QgsSimpleFillSymbolLayer > fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >();
fillSymbolLayer->setColor( QColor( 0, 0, 0 ) );
fillSymbolLayer->setBrushStyle( Qt::SolidPattern );
fillSymbolLayer->setStrokeStyle( Qt::SolidLine );
fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() );
settings.setFillSymbol( fillSymbol.release() );

fillSymbol = std::make_unique< QgsFillSymbol >();
fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >();
fillSymbolLayer->setColor( QColor( 255, 255, 255 ) );
fillSymbolLayer->setStrokeStyle( Qt::NoPen );
fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() );
settings.setAlternateFillSymbol( fillSymbol.release() );
}

return true;
}
7 changes: 0 additions & 7 deletions src/core/scalebar/qgsdoubleboxscalebarrenderer.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,6 @@ class CORE_EXPORT QgsDoubleBoxScaleBarRenderer: public QgsScaleBarRenderer
const QgsScaleBarSettings &settings,
const QgsScaleBarRenderer::ScaleBarContext &scaleContext ) const override;

/**
* Applies any default settings relating to the scalebar to the passed \a settings object.
*
* Returns TRUE if settings were applied.
*
* \since QGIS 3.42
*/
bool applyDefaultSettings( QgsScaleBarSettings &settings ) const override;
};

Expand Down
33 changes: 19 additions & 14 deletions src/core/scalebar/qgssingleboxscalebarrenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -160,21 +160,26 @@ void QgsSingleBoxScaleBarRenderer::draw( QgsRenderContext &context, const QgsSca

bool QgsSingleBoxScaleBarRenderer::applyDefaultSettings( QgsScaleBarSettings &settings ) const
{
QgsSimpleFillSymbolLayer *fill = qgis::down_cast< QgsSimpleFillSymbolLayer * >( settings.fillSymbol()->symbolLayers().at( 0 ) );

// restore the fill symbols by default
std::unique_ptr< QgsFillSymbol > fillSymbol = std::make_unique< QgsFillSymbol >();
std::unique_ptr< QgsSimpleFillSymbolLayer > fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >();
fillSymbolLayer->setColor( QColor( 0, 0, 0 ) );
fillSymbolLayer->setBrushStyle( Qt::SolidPattern );
fillSymbolLayer->setStrokeStyle( Qt::SolidLine );
fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() );
settings.setFillSymbol( fillSymbol.release() );

fillSymbol = std::make_unique< QgsFillSymbol >();
fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >();
fillSymbolLayer->setColor( QColor( 255, 255, 255 ) );
fillSymbolLayer->setStrokeStyle( Qt::NoPen );
fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() );
settings.setAlternateFillSymbol( fillSymbol.release() );
if ( fill && fill->brushStyle() == Qt::NoBrush )
{
std::unique_ptr< QgsFillSymbol > fillSymbol = std::make_unique< QgsFillSymbol >();
std::unique_ptr< QgsSimpleFillSymbolLayer > fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >();
fillSymbolLayer->setColor( QColor( 0, 0, 0 ) );
fillSymbolLayer->setBrushStyle( Qt::SolidPattern );
fillSymbolLayer->setStrokeStyle( Qt::SolidLine );
fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() );
settings.setFillSymbol( fillSymbol.release() );

fillSymbol = std::make_unique< QgsFillSymbol >();
fillSymbolLayer = std::make_unique< QgsSimpleFillSymbolLayer >();
fillSymbolLayer->setColor( QColor( 255, 255, 255 ) );
fillSymbolLayer->setStrokeStyle( Qt::NoPen );
fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() );
settings.setAlternateFillSymbol( fillSymbol.release() );
}

return true;
}
7 changes: 0 additions & 7 deletions src/core/scalebar/qgssingleboxscalebarrenderer.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,6 @@ class CORE_EXPORT QgsSingleBoxScaleBarRenderer: public QgsScaleBarRenderer
const QgsScaleBarSettings &settings,
const QgsScaleBarRenderer::ScaleBarContext &scaleContext ) const override;

/**
* Applies any default settings relating to the scalebar to the passed \a settings object.
*
* Returns TRUE if settings were applied.
*
* \since QGIS 3.42
*/
bool applyDefaultSettings( QgsScaleBarSettings &settings ) const override;
};

Expand Down

0 comments on commit 2fd0175

Please sign in to comment.