QGIS API Documentation
3.14.0-Pi (9f7028fd23)
|
Go to the documentation of this file.
28 return QStringLiteral(
"hollow" );
33 return QObject::tr(
"Hollow" );
66 QPainter *painter = context.
painter();
76 painter->setRenderHint( QPainter::Antialiasing,
true );
78 std::unique_ptr< QgsLineSymbol > lineSymbol( settings.
lineSymbol()->
clone() );
79 lineSymbol->startRender( context );
81 std::unique_ptr< QgsFillSymbol > fillSymbol1( settings.
fillSymbol()->
clone() );
82 fillSymbol1->startRender( context );
85 fillSymbol2->startRender( context );
87 painter->setPen( Qt::NoPen );
88 painter->setBrush( Qt::NoBrush );
93 const QList<double> positions =
segmentPositions( context, scaleContext, settings );
94 const QList<double> widths =
segmentWidths( scaleContext, settings );
100 for (
int i = 0; i < positions.size(); ++i )
104 currentSymbol = fillSymbol1.get();
108 currentSymbol = fillSymbol2.get();
116 if ( i == positions.size() - 1 )
117 maxX = thisX + thisWidth;
119 QRectF segmentRect( thisX, barTopPosition, thisWidth, barHeight );
121 << segmentRect.topLeft()
122 << segmentRect.topRight()
123 << segmentRect.bottomRight()
124 << segmentRect.bottomLeft()
125 << segmentRect.topLeft(),
nullptr,
nullptr, context );
126 useColor = !useColor;
131 for (
int layer = 0; layer < lineSymbol->symbolLayerCount(); ++layer )
134 bool drawLine =
false;
135 for (
int i = 0; i < positions.size(); ++i )
137 drawLine = !drawLine;
143 lineSymbol->renderPolyline( QPolygonF()
144 << QPointF( lineX, barTopPosition + barHeight / 2.0 )
145 << QPointF( lineX + lineLength, barTopPosition + barHeight / 2.0 ),
146 nullptr, context, layer );
150 for (
int i = 1; i < positions.size(); ++i )
153 lineSymbol->renderPolyline( QPolygonF()
154 << QPointF( lineX, barTopPosition )
155 << QPointF( lineX, barTopPosition + barHeight ),
156 nullptr, context, layer );
160 lineSymbol->renderPolyline( QPolygonF()
161 << QPointF( minX, barTopPosition )
162 << QPointF( maxX, barTopPosition )
163 << QPointF( maxX, barTopPosition + barHeight )
164 << QPointF( minX, barTopPosition + barHeight )
165 << QPointF( minX, barTopPosition ),
166 nullptr, context, layer );
169 lineSymbol->stopRender( context );
170 fillSymbol1->stopRender( context );
171 fillSymbol2->stopRender( context );
181 std::unique_ptr< QgsFillSymbol > fillSymbol = qgis::make_unique< QgsFillSymbol >();
182 std::unique_ptr< QgsSimpleFillSymbolLayer > fillSymbolLayer = qgis::make_unique< QgsSimpleFillSymbolLayer >();
183 fillSymbolLayer->setColor( QColor( 0, 0, 0 ) );
184 fillSymbolLayer->setBrushStyle( Qt::NoBrush );
185 fillSymbolLayer->setStrokeStyle( Qt::NoPen );
186 fillSymbol->changeSymbolLayer( 0, fillSymbolLayer->clone() );
189 fillSymbol = qgis::make_unique< QgsFillSymbol >();
190 fillSymbolLayer->setColor( QColor( 255, 255, 255 ) );
191 fillSymbol->changeSymbolLayer( 0, fillSymbolLayer.release() );
double height() const
Returns the scalebar height (in millimeters).
QgsLineSymbol * lineSymbol() const
Returns the line symbol used to render the scalebar (only used for some scalebar types).
double convertToPainterUnits(double size, QgsUnitTypes::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale()) const
Converts a size from the specified units to painter units (pixels).
Contains parameters regarding scalebar calculations.
@ FlagUsesUnitLabel
Renderer uses the QgsScaleBarSettings::unitLabel() setting.
QString id() const override
Returns the unique ID for this renderer.
Flags flags() const override
Returns the scalebar rendering flags, which dictates the renderer's behavior.
QList< double > segmentWidths(const QgsScaleBarRenderer::ScaleBarContext &scaleContext, const QgsScaleBarSettings &settings) const
Returns a list of widths of each segment of the scalebar.
QgsLineSymbol * clone() const override
Returns a deep copy of this symbol.
@ FlagUsesFillSymbol
Renderer utilizes the scalebar fill symbol (see QgsScaleBarSettings::fillSymbol() )
@ FlagUsesAlternateFillSymbol
Renderer utilizes the alternate scalebar fill symbol (see QgsScaleBarSettings::alternateFillSymbol() ...
QgsFillSymbol * fillSymbol() const
Returns the primary fill symbol used to render the scalebar (only used for some scalebar types).
@ RenderMillimeters
Millimeters.
@ FlagUsesLabelHorizontalPlacement
Renderer uses the QgsScaleBarSettings::labelHorizontalPlacement() setting.
int sortKey() const override
Returns a sorting key value, where renderers with a lower sort key will be shown earlier in lists.
static QFontMetricsF fontMetrics(QgsRenderContext &context, const QgsTextFormat &format)
Returns the font metrics for the given text format, when rendered in the specified render context.
QgsHollowScaleBarRenderer * clone() const override
Returns a clone of the renderer.
QgsHollowScaleBarRenderer()=default
Constructor for QgsHollowScaleBarRenderer.
QString visibleName() const override
Returns the user friendly, translated name for the renderer.
double labelBarSpace() const
Returns the spacing (in millimeters) between labels and the scalebar.
@ FlagUsesLabelVerticalPlacement
Renderer uses the QgsScaleBarSettings::labelVerticalPlacement() setting.
double boxContentSpace() const
Returns the spacing (margin) between the scalebar box and content in millimeters.
LabelVerticalPlacement labelVerticalPlacement() const
Returns the vertical placement of text labels.
QgsTextFormat & textFormat()
Returns the text format used for drawing text in the scalebar.
@ FlagUsesLineSymbol
Renderer utilizes the scalebar line symbol (see QgsScaleBarSettings::lineSymbol() )
@ FlagRespectsMapUnitsPerScaleBarUnit
Renderer respects the QgsScaleBarSettings::mapUnitsPerScaleBarUnit() setting.
void draw(QgsRenderContext &context, const QgsScaleBarSettings &settings, const QgsScaleBarRenderer::ScaleBarContext &scaleContext) const override
Draws the scalebar using the specified settings and scaleContext to a destination render context.
Q_DECL_DEPRECATED double firstLabelXOffset(const QgsScaleBarSettings &settings) const
Returns the x-offset (in millimeters) used for the first label in the scalebar.
void renderPolygon(const QPolygonF &points, const QVector< QPolygonF > *rings, const QgsFeature *f, QgsRenderContext &context, int layer=-1, bool selected=false)
Renders the symbol using the given render context.
@ LabelAboveSegment
Labels are drawn above the scalebar.
bool applyDefaultSettings(QgsScaleBarSettings &settings) const override
Applies any default settings relating to the scalebar to the passed settings object.
void drawDefaultLabels(QgsRenderContext &context, const QgsScaleBarSettings &settings, const QgsScaleBarRenderer::ScaleBarContext &scaleContext) const
Draws default scalebar labels using the specified settings and scaleContext to a destination render c...
@ FlagRespectsUnits
Renderer respects the QgsScaleBarSettings::units() setting.
void setFillSymbol(QgsFillSymbol *symbol)
Sets the primary fill symbol used to render the scalebar (only used for some scalebar types).
QgsFillSymbol * clone() const override
Returns a deep copy of this symbol.
@ Antialiasing
Use antialiasing while drawing.
@ FlagUsesLabelBarSpace
Renderer uses the QgsScaleBarSettings::labelBarSpace() setting.
@ FlagUsesSegments
Renderer uses the scalebar segments.
QPainter * painter()
Returns the destination QPainter for the render operation.
void setAlternateFillSymbol(QgsFillSymbol *symbol)
Sets the secondary fill symbol used to render the scalebar (only used for some scalebar types).
QgsFillSymbol * alternateFillSymbol() const
Returns the secondary fill symbol used to render the scalebar (only used for some scalebar types).
Flags flags() const
Returns combination of flags used for rendering.
Q_DECL_DEPRECATED QList< double > segmentPositions(const QgsScaleBarRenderer::ScaleBarContext &scaleContext, const QgsScaleBarSettings &settings) const
Returns a list of positions for each segment within the scalebar.