| 
    QGIS API Documentation
    3.14.0-Pi (9f7028fd23)
    
   | 
 
 
 
 
Go to the documentation of this file.
   27   return QStringLiteral( 
"Double Box" );
 
   32   return QObject::tr( 
"Double Box" );
 
   65   QPainter *painter = context.
painter();
 
   75     painter->setRenderHint( QPainter::Antialiasing, 
true );
 
   77   std::unique_ptr< QgsLineSymbol > lineSymbol( settings.
lineSymbol()->
clone() );
 
   78   lineSymbol->startRender( context );
 
   80   std::unique_ptr< QgsFillSymbol > fillSymbol1( settings.
fillSymbol()->
clone() );
 
   81   fillSymbol1->startRender( context );
 
   84   fillSymbol2->startRender( context );
 
   86   painter->setPen( Qt::NoPen );
 
   87   painter->setBrush( Qt::NoBrush );
 
   93   const QList<double> positions = 
segmentPositions( context, scaleContext, settings );
 
   94   const QList<double> widths = 
segmentWidths( scaleContext, settings );
 
   99   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     const QRectF segmentRectTop( thisX, barTopPosition, thisWidth, segmentHeight );
 
  121                                   << segmentRectTop.topLeft()
 
  122                                   << segmentRectTop.topRight()
 
  123                                   << segmentRectTop.bottomRight()
 
  124                                   << segmentRectTop.bottomLeft()
 
  125                                   << segmentRectTop.topLeft(),
 
  126                                   nullptr, 
nullptr, context );
 
  127     painter->drawRect( segmentRectTop );
 
  133       currentSymbol = fillSymbol2.get();
 
  137       currentSymbol = fillSymbol1.get(); ;
 
  140     const QRectF segmentRectBottom( thisX, barTopPosition + segmentHeight, thisWidth, segmentHeight );
 
  143                                   << segmentRectBottom.topLeft()
 
  144                                   << segmentRectBottom.topRight()
 
  145                                   << segmentRectBottom.bottomRight()
 
  146                                   << segmentRectBottom.bottomLeft()
 
  147                                   << segmentRectBottom.topLeft(),
 
  148                                   nullptr, 
nullptr, context );
 
  149     useColor = !useColor;
 
  155   for ( 
int layer = 0; layer < lineSymbol->symbolLayerCount(); ++layer )
 
  158     for ( 
int i = 1; i < positions.size(); ++i )
 
  161       lineSymbol->renderPolyline( QPolygonF()
 
  162                                   << QPointF( lineX, barTopPosition )
 
  163                                   << QPointF( lineX, barTopPosition + segmentHeight * 2 ),
 
  164                                   nullptr, context, layer );
 
  168     lineSymbol->renderPolyline( QPolygonF()
 
  169                                 << QPointF( minX, barTopPosition + segmentHeight )
 
  170                                 << QPointF( maxX, barTopPosition + segmentHeight ),
 
  171                                 nullptr, context, layer );
 
  175     lineSymbol->renderPolyline( QPolygonF()
 
  176                                 << QPointF( minX, barTopPosition )
 
  177                                 << QPointF( maxX, barTopPosition )
 
  178                                 << QPointF( maxX, barTopPosition + segmentHeight * 2 )
 
  179                                 << QPointF( minX, barTopPosition + segmentHeight * 2 )
 
  180                                 << QPointF( minX, barTopPosition ),
 
  181                                 nullptr, context, layer );
 
  184   lineSymbol->stopRender( context );
 
  185   fillSymbol1->stopRender( context );
 
  186   fillSymbol2->stopRender( context );
 
  
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).
 
QgsDoubleBoxScaleBarRenderer * clone() const override
Returns a clone of the renderer.
 
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.
 
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.
 
Flags flags() const override
Returns the scalebar rendering flags, which dictates the renderer's behavior.
 
@ 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.
 
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.
 
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.
 
QgsDoubleBoxScaleBarRenderer()=default
Constructor for QgsDoubleBoxScaleBarRenderer.
 
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.
 
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.
 
QgsFillSymbol * alternateFillSymbol() const
Returns the secondary fill symbol used to render the scalebar (only used for some scalebar types).
 
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.
 
QString visibleName() const override
Returns the user friendly, translated name for the renderer.
 
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.