Skip to content

Commit

Permalink
Address review
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Sep 4, 2024
1 parent 05b2e25 commit 22ba4a4
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,11 @@ The caller takes ownership of the returned object.

void registerExpressionContextGenerator( QgsExpressionContextGenerator *generator );
%Docstring
Register an expression context generator class that will be used to retrieve
Register an expression context ``generator`` class that will be used to retrieve
an expression context for the widget when required.

Ownership is not transferred, and the ``generator`` must exist for the lifetime of this widget.

.. versionadded:: 3.40
%End

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,11 @@ The caller takes ownership of the returned object.

void registerExpressionContextGenerator( QgsExpressionContextGenerator *generator );
%Docstring
Register an expression context generator class that will be used to retrieve
Register an expression context ``generator`` class that will be used to retrieve
an expression context for the widget when required.

Ownership is not transferred, and the ``generator`` must exist for the lifetime of this widget.

.. versionadded:: 3.40
%End

Expand Down
20 changes: 9 additions & 11 deletions src/core/symbology/qgslinearreferencingsymbollayer.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/***************************************************************************
qgslinearreferencingsymbollayer.h
qgslinearreferencingsymbollayer.cpp
---------------------
begin : August 2024
copyright : (C) 2024 by Nyall Dawson
Expand Down Expand Up @@ -286,6 +286,13 @@ void QgsLinearReferencingSymbolLayer::renderPolyline( const QPolygonF &points, Q
return;
}

// TODO (maybe?): if we don't have an original geometry, convert points to linestring and scale distance to painter units?
// in reality this line type makes no sense for rendering non-real feature geometries...
( void )points;
const QgsAbstractGeometry *geometry = context.renderContext().geometry();
if ( !geometry )
return;

double skipMultiples = mSkipMultiplesOf;
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::Property::SkipMultiples ) )
{
Expand Down Expand Up @@ -314,13 +321,6 @@ void QgsLinearReferencingSymbolLayer::renderPolyline( const QPolygonF &points, Q
const double labelOffsetPainterUnitsY = context.renderContext().convertToPainterUnits( labelOffsetY, mLabelOffsetUnit, mLabelOffsetMapUnitScale );
const double averageAngleDistancePainterUnits = context.renderContext().convertToPainterUnits( averageOver, mAverageAngleLengthUnit, mAverageAngleLengthMapUnitScale ) / 2;

// TODO (maybe?): if we don't have an original geometry, convert points to linestring and scale distance to painter units?
// in reality this line type makes no sense for rendering non-real feature geometries...
( void )points;
const QgsAbstractGeometry *geometry = context.renderContext().geometry();
if ( !geometry )
return;

for ( auto partIt = geometry->const_parts_begin(); partIt != geometry->const_parts_end(); ++partIt )
{
renderGeometryPart( context, *partIt, labelOffsetPainterUnitsX, labelOffsetPainterUnitsY, skipMultiples, averageAngleDistancePainterUnits, showMarker );
Expand Down Expand Up @@ -803,8 +803,6 @@ void QgsLinearReferencingSymbolLayer::renderPolylineVertex( const QgsLineString

const QPointF pt = pointToPainter( context, thisX, thisY, thisZ );

double calculatedAngle = 0;

// track forward by averageAngleLengthPainterUnits
double painterDistRemaining = averageAngleLengthPainterUnits;
double startAverageSegmentX = thisXPainterUnits;
Expand Down Expand Up @@ -882,7 +880,7 @@ void QgsLinearReferencingSymbolLayer::renderPolylineVertex( const QgsLineString
startAverageYPainterUnits = endAverageSegmentY;
}

calculatedAngle = std::fmod( QgsGeometryUtilsBase::azimuth( startAverageXPainterUnits, startAverageYPainterUnits, endAverageXPainterUnits, endAverageYPainterUnits ) + 360, 360 );
double calculatedAngle = std::fmod( QgsGeometryUtilsBase::azimuth( startAverageXPainterUnits, startAverageYPainterUnits, endAverageXPainterUnits, endAverageYPainterUnits ) + 360, 360 );

if ( calculatedAngle > 90 && calculatedAngle < 270 )
calculatedAngle += 180;
Expand Down
5 changes: 3 additions & 2 deletions src/core/symbology/qgslinearreferencingsymbollayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,9 @@ class CORE_EXPORT QgsLinearReferencingSymbolLayer : public QgsLineSymbolLayer
private:
void renderPolylineInterval( const QgsLineString *line, QgsSymbolRenderContext &context, double skipMultiples, const QPointF &labelOffsetPainterUnits, double averageAngleLengthPainterUnits, bool showMarker );
void renderPolylineVertex( const QgsLineString *line, QgsSymbolRenderContext &context, double skipMultiples, const QPointF &labelOffsetPainterUnits, double averageAngleLengthPainterUnits, bool showMarker );
void renderGeometryPart( QgsSymbolRenderContext &context, const QgsAbstractGeometry *geometry, double labelOffsetPainterUnitsX, double labelOffsetPainterUnitsY, double skipMultiples, double averageAngleDistancePainterUnits, bool showMarker );
void renderLineString( QgsSymbolRenderContext &context, const QgsLineString *line, double labelOffsetPainterUnitsX, double labelOffsetPainterUnitsY, double skipMultiples, double averageAngleDistancePainterUnits, bool showMarker );

static QPointF pointToPainter( QgsSymbolRenderContext &context, double x, double y, double z );

Qgis::LinearReferencingPlacement mPlacement = Qgis::LinearReferencingPlacement::IntervalCartesian2D;
Expand All @@ -327,8 +330,6 @@ class CORE_EXPORT QgsLinearReferencingSymbolLayer : public QgsLineSymbolLayer
Qgis::RenderUnit mAverageAngleLengthUnit = Qgis::RenderUnit::Millimeters;
QgsMapUnitScale mAverageAngleLengthMapUnitScale;

void renderGeometryPart( QgsSymbolRenderContext &context, const QgsAbstractGeometry *geometry, double labelOffsetPainterUnitsX, double labelOffsetPainterUnitsY, double skipMultiples, double averageAngleDistancePainterUnits, bool showMarker );
void renderLineString( QgsSymbolRenderContext &context, const QgsLineString *line, double labelOffsetPainterUnitsX, double labelOffsetPainterUnitsY, double skipMultiples, double averageAngleDistancePainterUnits, bool showMarker );
};

#endif // QGSLINEARREFERENCINGSYMBOLLAYER_H
5 changes: 4 additions & 1 deletion src/gui/numericformats/qgsnumericformatselectorwidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,11 @@ class GUI_EXPORT QgsNumericFormatSelectorWidget : public QgsPanelWidget, private
QgsNumericFormat *format() const SIP_TRANSFERBACK;

/**
* Register an expression context generator class that will be used to retrieve
* Register an expression context \a generator class that will be used to retrieve
* an expression context for the widget when required.
*
* Ownership is not transferred, and the \a generator must exist for the lifetime of this widget.
*
* \since QGIS 3.40
*/
void registerExpressionContextGenerator( QgsExpressionContextGenerator *generator );
Expand Down

0 comments on commit 22ba4a4

Please sign in to comment.