36 , mEmbeddedInParent( false )
47 return Qt::ItemIsEnabled;
66 double itemHeight = std::max( static_cast< double >( settings.
symbolSize().height() ), textHeight );
82 QIcon symbolIcon =
data( Qt::DecorationRole ).value<QIcon>();
83 if ( symbolIcon.isNull() )
94 const QIcon icon =
data( Qt::DecorationRole ).value<QIcon>();
98 const QImage image( icon.pixmap( settings.
symbolSize().width(), settings.
symbolSize().height() ).toImage() );
100 QBuffer buffer( &byteArray );
101 image.save( &buffer,
"PNG" );
102 const QString base64 = QString::fromLatin1( byteArray.toBase64().data() );
103 json[
"icon" ] = base64;
108 QSizeF labelSize( 0, 0 );
118 labelSize.rheight() = lines.count() * textHeight + ( lines.count() - 1 ) * ( settings.
lineSpacing() + textDescent );
120 double labelX = 0.0, labelY = 0.0;
125 labelX = ctx->
point.x() + std::max( static_cast< double >( symbolSize.width() ), ctx->
labelXOffset );
126 labelY = ctx->
point.y();
129 if ( labelSize.height() < symbolSize.height() )
130 labelY += symbolSize.height() / 2 - labelSize.height() / 2;
132 labelY += textHeight;
135 for ( QStringList::ConstIterator itemPart = lines.constBegin(); itemPart != lines.constEnd(); ++itemPart )
137 labelSize.rwidth() = std::max( settings.
textWidthMillimeters( symbolLabelFont, *itemPart ), double( labelSize.width() ) );
141 settings.
drawText( ctx->
painter, labelX, labelY, *itemPart, symbolLabelFont );
142 if ( itemPart != ( lines.end() - 1 ) )
143 labelY += textDescent + settings.
lineSpacing() + textHeight;
152 const QString text =
data( Qt::DisplayRole ).toString();
153 json[
"title" ] = text;
161 , mSymbolUsesMapUnits( false )
164 mIconSize = QSize( iconSize, iconSize );
168 connect( nodeLayer, &QObject::destroyed,
this, [ = ]() {
mLayerNode =
nullptr; } );
177 return Qt::ItemIsEnabled | Qt::ItemIsUserCheckable;
179 return Qt::ItemIsEnabled;
193 QSize minSz( iconSize, iconSize );
211 if ( !mTextOnSymbolLabel.isEmpty() && context )
215 int wInt = ceil( w ), hInt = ceil( h );
216 if ( wInt > minSz.width() ) minSz.setWidth( wInt );
217 if ( hInt > minSz.height() ) minSz.setHeight( hInt );
221 minSz.setWidth( mItem.
level() * INDENT_SIZE + minSz.width() );
236 std::unique_ptr< QgsSymbol > s( symbol );
238 if ( !vlayer || !vlayer->
renderer() )
263 if ( !vlayer || !vlayer->
renderer() )
267 for (
const auto &item : symbolList )
288 std::unique_ptr<QgsRenderContext> context = qgis::make_unique<QgsRenderContext>( );
289 context->setScaleFactor( dpi / 25.4 );
290 context->setRendererScale( scale );
292 return context.release();
295 void QgsSymbolLegendNode::checkAll(
bool state )
298 if ( !vlayer || !vlayer->
renderer() )
302 for (
const auto &item : symbolList )
313 if ( role == Qt::DisplayRole )
317 else if ( role == Qt::EditRole )
321 else if ( role == Qt::DecorationRole )
323 if ( mPixmap.isNull() || mPixmap.size() != mIconSize )
331 if ( !mTextOnSymbolLabel.isEmpty() && context )
333 QPainter painter( &pix );
334 painter.setRenderHint( QPainter::Antialiasing );
335 context->setPainter( &painter );
336 QFontMetricsF fm( mTextOnSymbolTextFormat.
scaledFont( *context ) );
337 qreal yBaselineVCenter = ( mIconSize.height() + fm.ascent() - fm.descent() ) / 2;
339 QStringList() << mTextOnSymbolLabel, *context, mTextOnSymbolTextFormat );
344 pix = QPixmap( mIconSize );
345 pix.fill( Qt::transparent );
353 QPixmap pix2( pix.width() + mItem.
level() * INDENT_SIZE, pix.height() );
354 pix2.fill( Qt::transparent );
356 p.drawPixmap( mItem.
level() * INDENT_SIZE, 0, pix );
363 else if ( role == Qt::CheckStateRole )
369 if ( !vlayer || !vlayer->
renderer() )
388 if ( role != Qt::CheckStateRole )
395 if ( !vlayer || !vlayer->
renderer() )
440 double height = settings.
symbolSize().height();
444 double widthOffset = 0;
445 double heightOffset = 0;
447 if (
QgsMarkerSymbol *markerSymbol = dynamic_cast<QgsMarkerSymbol *>( s ) )
450 double size = markerSymbol->size( context ) / context.
scaleFactor();
455 widthOffset = ( settings.
symbolSize().width() - width ) / 2.0;
457 if ( height < settings.
symbolSize().height() )
459 heightOffset = ( settings.
symbolSize().height() - height ) / 2.0;
465 double currentXPosition = ctx->
point.x();
466 double currentYCoord = ctx->
point.y() + ( itemHeight - settings.
symbolSize().height() ) / 2;
474 opacity = ( 255 * vectorLayer->opacity() );
477 p->setRenderHint( QPainter::Antialiasing );
478 p->translate( currentXPosition + widthOffset, currentYCoord + heightOffset );
479 p->scale( 1.0 / dotsPerMM, 1.0 / dotsPerMM );
484 QSize tempImageSize( width * dotsPerMM, height * dotsPerMM );
485 QImage tempImage = QImage( tempImageSize, QImage::Format_ARGB32 );
486 tempImage.fill( Qt::transparent );
487 QPainter imagePainter( &tempImage );
488 imagePainter.setRenderHint( QPainter::Antialiasing );
493 imagePainter.setCompositionMode( QPainter::CompositionMode_DestinationIn );
494 imagePainter.fillRect( tempImage.rect(), QColor( 0, 0, 0, opacity ) );
497 p->drawImage( 0, 0, tempImage );
501 s->
drawPreviewIcon( p, QSize( width * dotsPerMM, height * dotsPerMM ), &context );
504 if ( !mTextOnSymbolLabel.isEmpty() )
506 QFontMetricsF fm( mTextOnSymbolTextFormat.
scaledFont( context ) );
507 qreal yBaselineVCenter = ( height * dotsPerMM + fm.ascent() - fm.descent() ) / 2;
509 QStringList() << mTextOnSymbolLabel, context, mTextOnSymbolTextFormat );
515 return QSizeF( std::max( width + 2 * widthOffset, static_cast< double >( settings.
symbolSize().width() ) ),
516 std::max( height + 2 * heightOffset, static_cast< double >( settings.
symbolSize().height() ) ) );
539 QImage img( pix.toImage().convertToFormat( QImage::Format_ARGB32_Premultiplied ) );
543 opacity = ( 255 * vectorLayer->opacity() );
545 if ( opacity != 255 )
548 painter.begin( &img );
549 painter.setCompositionMode( QPainter::CompositionMode_DestinationIn );
550 painter.fillRect( pix.rect(), QColor( 0, 0, 0, opacity ) );
554 QByteArray byteArray;
555 QBuffer buffer( &byteArray );
556 img.save( &buffer,
"PNG" );
557 const QString base64 = QString::fromLatin1( byteArray.toBase64().data() );
558 json[
"icon" ] = base64;
570 if ( mSymbolUsesMapUnits )
578 void QgsSymbolLegendNode::updateLabel()
593 if ( showFeatureCount && vl && vl->
featureCount() >= 0 )
594 mLabel += QStringLiteral(
" [%1]" ).arg( vl->
featureCount() );
599 if ( showFeatureCount && vl )
602 mLabel += QStringLiteral(
" [%1]" ).arg( count != -1 ? QLocale().toString( count ) : tr(
"N/A" ) );
624 if ( role == Qt::DisplayRole || role == Qt::EditRole )
626 else if ( role == Qt::DecorationRole )
645 if ( role == Qt::DecorationRole )
647 return QPixmap::fromImage( mImage );
649 else if ( role == Qt::SizeHintRole )
651 return mImage.size();
658 Q_UNUSED( itemHeight )
663 mImage, QRectF( 0, 0, mImage.width(), mImage.height() ) );
670 QByteArray byteArray;
671 QBuffer buffer( &byteArray );
672 mImage.save( &buffer,
"PNG" );
673 const QString base64 = QString::fromLatin1( byteArray.toBase64().data() );
674 json[
"icon" ] = base64;
688 if ( role == Qt::DecorationRole )
691 QPixmap pix( iconSize, iconSize );
695 else if ( role == Qt::DisplayRole || role == Qt::EditRole )
706 QColor itemColor = mColor;
710 itemColor.setAlpha( rasterRenderer->opacity() * 255.0 );
712 ctx->
painter->setBrush( itemColor );
719 pen.setJoinStyle( Qt::MiterJoin );
724 ctx->
painter->setPen( Qt::NoPen );
735 QImage img = QImage( settings.
symbolSize().toSize(), QImage::Format_ARGB32 );
736 img.fill( Qt::transparent );
738 QPainter painter( &img );
739 painter.setRenderHint( QPainter::Antialiasing );
741 QColor itemColor = mColor;
745 itemColor.setAlpha( rasterRenderer->opacity() * 255.0 );
747 painter.setBrush( itemColor );
754 pen.setJoinStyle( Qt::MiterJoin );
755 painter.setPen( pen );
759 painter.setPen( Qt::NoPen );
762 painter.drawRect( QRectF( 0, 0, settings.
symbolSize().width(), settings.
symbolSize().height() ) );
764 QByteArray byteArray;
765 QBuffer buffer( &byteArray );
766 img.save( &buffer,
"PNG" );
767 const QString base64 = QString::fromLatin1( byteArray.toBase64().data() );
768 json[
"icon" ] = base64;
779 QImage QgsWmsLegendNode::getLegendGraphic()
const 781 if ( ! mValid && ! mFetcher )
796 Q_ASSERT( ! mFetcher );
815 if ( role == Qt::DecorationRole )
817 return QPixmap::fromImage( getLegendGraphic() );
819 else if ( role == Qt::SizeHintRole )
821 return getLegendGraphic().size();
828 Q_UNUSED( itemHeight )
834 QRectF( QPointF( 0, 0 ), mImage.size() ) );
841 QByteArray byteArray;
842 QBuffer buffer( &byteArray );
843 mImage.save( &buffer,
"PNG" );
844 const QString base64 = QString::fromLatin1( byteArray.toBase64().data() );
845 json[
"icon" ] = base64;
849 QImage QgsWmsLegendNode::renderMessage(
const QString &msg )
const 851 const int fontHeight = 10;
852 const int margin = fontHeight / 2;
853 const int nlines = 1;
855 const int w = 512, h = fontHeight * nlines + margin * ( nlines + 1 );
856 QImage image( w, h, QImage::Format_ARGB32_Premultiplied );
858 painter.begin( &image );
859 painter.setPen( QColor( 255, 0, 0 ) );
860 painter.setFont( QFont( QStringLiteral(
"Chicago" ), fontHeight ) );
861 painter.fillRect( 0, 0, w, h, QColor( 255, 255, 255 ) );
862 painter.drawText( 0, margin + fontHeight, msg );
869 void QgsWmsLegendNode::getLegendGraphicProgress( qint64 cur, qint64 tot )
871 QString msg = QStringLiteral(
"Downloading... %1/%2" ).arg( cur ).arg( tot );
873 mImage = renderMessage( msg );
877 void QgsWmsLegendNode::getLegendGraphicErrored(
const QString &msg )
879 if ( ! mFetcher )
return;
881 mImage = renderMessage( msg );
893 void QgsWmsLegendNode::getLegendGraphicFinished(
const QImage &image )
895 if ( ! mFetcher )
return;
898 if ( ! image.isNull() )
900 if ( image != mImage )
934 if ( role == Qt::DecorationRole )
937 return QPixmap::fromImage( mImage );
939 else if ( role == Qt::SizeHintRole )
942 return mImage.size();
960 ctx->
painter->setRenderHint( QPainter::Antialiasing );
983 void QgsDataDefinedSizeLegendNode::cacheImage()
const 985 if ( mImage.isNull() )
991 context->setScaleFactor( 96 / 25.4 );
void exportSymbolToJson(const QgsLegendSettings &settings, const QgsRenderContext &context, QJsonObject &json) const override
Adds a symbol in base64 string within a JSON object with the key "icon".
void setForceVectorOutput(bool force)
Sets whether rendering operations should use vector operations instead of any faster raster shortcuts...
void drawText(QPainter *p, double x, double y, const QString &text, const QFont &font) const
Draws Text.
virtual QgsLegendSymbolList legendSymbolItems() const
Returns a list of symbology items for the legend.
QgsRenderContext * context
Render context, if available.
QgsDataDefinedSizeLegendNode(QgsLayerTreeLayer *nodeLayer, const QgsDataDefinedSizeLegend &settings, QObject *parent=nullptr)
Construct the node using QgsDataDefinedSizeLegend as definition of the node's appearance.
~QgsDataDefinedSizeLegendNode() override
virtual Qt::ItemFlags flags() const
Returns item flags associated with the item. Default implementation returns Qt::ItemIsEnabled.
double mapScale() const
Returns the legend map scale.
QgsRenderContext * createTemporaryRenderContext() const
Returns a temporary context or nullptr if legendMapViewData are not valid.
QList< QgsLegendSymbolItem > QgsLegendSymbolList
Text at point of origin draw mode.
QgsSymbol * symbol() const
Returns associated symbol. May be nullptr.
Abstract base class for all rendered symbols.
QString ruleKey() const
Returns unique identifier of the rule for identification of the item within renderer.
bool useAdvancedEffects() const
QVariant data(int role) const override
Returns data associated with the item. Must be implemented in derived class.
virtual QSizeF drawSymbol(const QgsLegendSettings &settings, ItemContext *ctx, double itemHeight) const
Draws symbol on the left side of the item.
void setFont(const QFont &font)
Sets font used for rendering of labels - only valid for collapsed legend.
Use antialiasing while drawing.
QgsImageLegendNode(QgsLayerTreeLayer *nodeLayer, const QImage &img, QObject *parent=nullptr)
Constructor for QgsImageLegendNode.
virtual bool setData(const QVariant &value, int role)
Sets some data associated with the item. Default implementation does nothing and returns false...
QStringList evaluateItemText(const QString &text, const QgsExpressionContext &context) const
Splits a string using the wrap char taking into account handling empty wrap char which means no wrapp...
This class provides qgis with the ability to render raster datasets onto the mapcanvas.
QgsSymbolLegendNode(QgsLayerTreeLayer *nodeLayer, const QgsLegendSymbolItem &item, QObject *parent=nullptr)
Constructor for QgsSymbolLegendNode.
QVariant data(int role) const override
Returns data associated with the item. Must be implemented in derived class.
bool testFlag(Flag f) const
Check whether a flag is enabled.
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
void emitStyleChanged()
Triggers an emission of the styleChanged() signal.
void setRendererScale(double scale)
Sets the renderer map scale.
QFont font() const
The font for this style.
virtual QgsImageFetcher * getLegendGraphicFetcher(const QgsMapSettings *mapSettings)
Returns a new image downloader for the raster legend.
void invalidateMapBasedData() override
Notification from model that information from associated map view has changed.
void invalidateMapBasedData() override
Notification from model that information from associated map view has changed.
QgsLayerTreeLayer * layerNode() const
Returns pointer to the parent layer node.
QVariant data(int role) const override
Returns data associated with the item. Must be implemented in derived class.
bool drawRasterStroke() const
Returns whether a stroke will be drawn around raster symbol items.
double textWidthMillimeters(const QFont &font, const QString &text) const
Returns the font width in millimeters (considers upscaling and downscaling with FONT_WORKAROUND_SCALE...
void exportSymbolToJson(const QgsLegendSettings &settings, const QgsRenderContext &context, QJsonObject &json) const override
Adds a symbol in base64 string within a JSON object with the key "icon".
QgsLayerTreeModelLegendNode(QgsLayerTreeLayer *nodeL, QObject *parent=nullptr)
Construct the node with pointer to its parent layer node.
QString label() const
Returns text label.
QPainter * painter
Painter.
QgsWmsLegendNode(QgsLayerTreeLayer *nodeLayer, QObject *parent=nullptr)
Constructor for QgsWmsLegendNode.
QSizeF drawSymbol(const QgsLegendSettings &settings, ItemContext *ctx, double itemHeight) const override
Draws symbol on the left side of the item.
A marker symbol type, for rendering Point and MultiPoint geometries.
QColor rasterStrokeColor() const
Returns the stroke color for the stroke drawn around raster symbol items.
void exportSymbolToJson(const QgsLegendSettings &settings, const QgsRenderContext &context, QJsonObject &json) const override
Adds a symbol in base64 string within a JSON object with the key "icon".
The QgsMapSettings class contains configuration for rendering of the map.
QgsUnitTypes::RenderUnit outputUnit() const
Returns the units to use for sizes and widths within the symbol.
void toggleAllItems()
Toggle all items belonging to the same layer as this node.
QSize minimumIconSize() const
Calculates the minimum icon size to prevent cropping.
Perform transforms between map coordinates and device coordinates.
The QgsLayerTreeModel class is model implementation for Qt item views framework.
QSizeF wmsLegendSize() const
Rule key of the parent legend node - for legends with tree hierarchy (QString). Added in 2...
QgsLegendStyle style(QgsLegendStyle::Style s) const
Returns style.
QgsRasterDataProvider * dataProvider() override
Returns the layer's data provider, it may be nullptr.
QImage collapsedLegendImage(QgsRenderContext &context, const QColor &backgroundColor=Qt::transparent, double paddingMM=1) const
Returns output image that would be shown in the legend. Returns invalid image if legend is not config...
void exportSymbolToJson(const QgsLegendSettings &settings, const QgsRenderContext &context, QJsonObject &json) const override
Adds a symbol in base64 string within a JSON object with the key "icon".
QString name() const override
Returns the layer's name.
void setScaleFactor(double factor)
Sets the scaling factor for the render to convert painter units to physical sizes.
QSizeF drawSymbol(const QgsLegendSettings &settings, ItemContext *ctx, double itemHeight) const override
Draws symbol on the left side of the item.
void triggerRepaint(bool deferredUpdate=false)
Will advise the map canvas (and any other interested party) that this layer requires to be repainted...
static int scaleIconSize(int standardSize)
Scales an layer tree model icon size to compensate for display pixel density, making the icon size hi...
Qt::ItemFlags flags() const override
Returns item flags associated with the item. Default implementation returns Qt::ItemIsEnabled.
Rule key of the node (QString)
void setSymbol(QgsSymbol *s)
Sets the symbol of the item.
QgsRasterSymbolLegendNode(QgsLayerTreeLayer *nodeLayer, const QColor &color, const QString &label, QObject *parent=nullptr)
Constructor for QgsRasterSymbolLegendNode.
long featureCount(const QString &legendKey) const
Number of features rendered with specified legend key.
void checkAllItems()
Checks all items belonging to the same layer as this node.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
void error(const QString &msg)
Emitted when an error occurs.
QgsLayerTreeLayer * mLayerNode
double rasterStrokeWidth() const
Returns the stroke width (in millimeters) for the stroke drawn around raster symbol items...
QgsLayerTreeModel * model() const
Returns pointer to model owning this legend node.
The QgsLegendSettings class stores the appearance and layout settings for legend drawing with QgsLege...
QVariant customProperty(const QString &key, const QVariant &defaultValue=QVariant()) const
Read a custom property from layer. Properties are stored in a map and saved in project file...
ItemMetrics draw(const QgsLegendSettings &settings, ItemContext *ctx) override
Entry point called from QgsLegendRenderer to do the rendering.
void drawPreviewIcon(QPainter *painter, QSize size, QgsRenderContext *customContext=nullptr)
Draws an icon of the symbol that occupies an area given by size using the specified painter...
void setPainter(QPainter *p)
Sets the destination QPainter for the render operation.
virtual bool legendSymbolItemChecked(const QString &key)
items of symbology items in legend is checked
QgsFeatureRenderer * renderer()
Returns renderer.
static QList< QgsExpressionContextScope * > globalProjectLayerScopes(const QgsMapLayer *layer)
Creates a list of three scopes: global, layer's project and layer.
void dataChanged()
Emitted on internal data change so the layer tree model can forward the signal to views...
QSize iconSize(bool dockableToolbar)
Returns the user-preferred size of a window's toolbar icons.
void symbolFeatureCountMapChanged()
Emitted when the feature count for symbols on this layer has been recalculated.
virtual void checkLegendSymbolItem(const QString &key, bool state=true)
item in symbology was checked
virtual void setLegendSymbolItem(const QString &key, QgsSymbol *symbol)
Sets the symbol to be used for a legend symbol item.
bool isCheckable() const
Returns whether the item is user-checkable - whether renderer supports enabling/disabling it...
QSizeF drawSymbol(const QgsLegendSettings &settings, ItemContext *ctx, double itemHeight) const override
Draws symbol on the left side of the item.
QSizeF symbolSize() const
static void drawText(const QRectF &rect, double rotation, HAlignment alignment, const QStringList &textLines, QgsRenderContext &context, const QgsTextFormat &format, bool drawAsOutlines=true)
Draws text within a rectangle using the specified settings.
double fontHeightCharacterMM(const QFont &font, QChar c) const
Returns the font height of a character in millimeters.
virtual ItemMetrics draw(const QgsLegendSettings &settings, ItemContext *ctx)
Entry point called from QgsLegendRenderer to do the rendering.
QgsExpressionContext & expressionContext()
Gets the expression context.
void setEmbeddedInParent(bool embedded) override
QgsMapLayer * layer() const
Returns the map layer associated with this node.
void setSymbol(QgsSymbol *symbol)
Sets the symbol to be used by the legend node.
const QgsSymbol * symbol() const
Returns the symbol used by the legend node.
void exportToJson(const QgsLegendSettings &settings, const QgsRenderContext &context, QJsonObject &json)
Entry point called from QgsLegendRenderer to do the rendering in a JSON object.
QgsSimpleLegendNode(QgsLayerTreeLayer *nodeLayer, const QString &label, const QIcon &icon=QIcon(), QObject *parent=nullptr, const QString &key=QString())
Constructor for QgsSimpleLegendNode.
virtual void setEmbeddedInParent(bool embedded)
QFont scaledFont(const QgsRenderContext &context) const
Returns a font with the size scaled to match the format's size settings (including units and map unit...
The class stores information about one class/rule of a vector layer renderer in a unified way that ca...
Contains information about the context of a rendering operation.
SymbolType type() const
Returns the symbol's type.
QSizeF drawSymbol(const QgsLegendSettings &settings, ItemContext *ctx, double itemHeight) const override
Draws symbol on the left side of the item.
QPointF point
Top-left corner of the legend item.
bool setData(const QVariant &value, int role) override
Sets some data associated with the item. Default implementation does nothing and returns false...
virtual void exportSymbolToJson(const QgsLegendSettings &settings, const QgsRenderContext &context, QJsonObject &json) const
Adds a symbol in base64 string within a JSON object with the key "icon".
void setMapToPixel(const QgsMapToPixel &mtp)
Sets the context's map to pixel transform, which transforms between map coordinates and device coordi...
virtual QVariant data(int role) const =0
Returns data associated with the item. Must be implemented in derived class.
void legendMapViewData(double *mapUnitsPerPixel, int *dpi, double *scale) const
Gets hints about map view - to be used in legend nodes.
static QRect nonTransparentImageRect(const QImage &image, QSize minSize=QSize(), bool center=false)
Calculates the non-transparent region of an image.
The QgsLegendRendererItem class is abstract interface for legend items returned from QgsMapLayerLegen...
void setFlag(Flag flag, bool on=true)
Enable or disable a particular flag (other flags are not affected)
QVariant data(int role) const override
Returns data associated with the item. Must be implemented in derived class.
void uncheckAllItems()
Unchecks all items belonging to the same layer as this node.
void appendScopes(const QList< QgsExpressionContextScope *> &scopes)
Appends a list of scopes to the end of the context.
void setTextColor(const QColor &color)
Sets text color for rendering of labels - only valid for collapsed legend.
virtual QSizeF drawSymbolText(const QgsLegendSettings &settings, ItemContext *ctx, QSizeF symbolSize) const
Draws label on the right side of the item.
QString parentRuleKey() const
Key of the parent legend node.
QVariant data(int role) const override
Returns data associated with the item. Must be implemented in derived class.
void drawCollapsedLegend(QgsRenderContext &context, QSize *outputSize SIP_OUT=nullptr, int *labelXOffset SIP_OUT=nullptr) const
Draw the legend if using LegendOneNodeForAll and optionally output size of the legend and x offset of...
double lineSpacing() const
For legends that support it, will show them in a tree instead of a list (needs also ShowLegend)...
static double textWidth(const QgsRenderContext &context, const QgsTextFormat &format, const QStringList &textLines, QFontMetricsF *fontMetrics=nullptr)
Returns the width of a text based on a given format.
double scaleFactor() const
Returns the scaling factor for the render to convert painter units to physical sizes.
Represents a vector layer which manages a vector based data sets.
double labelXOffset
offset from the left side where label should start
void finish(const QImage &legend)
Emitted when the download completes.
Object that keeps configuration of appearance of marker symbol's data-defined size in legend...
QVariant data(int role) const override
Returns data associated with the item. Must be implemented in derived class.
int level() const
Indentation level that tells how deep the item is in a hierarchy of items. For flat lists level is 0...
double fontDescentMillimeters(const QFont &font) const
Returns the font descent in Millimeters (considers upscaling and downscaling with FONT_WORKAROUND_SCA...
double mmPerMapUnit() const
Raster renderer pipe that applies colors to a raster.
void exportSymbolTextToJson(const QgsLegendSettings &settings, QJsonObject &json) const
Adds a label in a JSON object with the key "title".
void progress(qint64 received, qint64 total)
Emitted to report progress.
void setExpressionContext(const QgsExpressionContext &context)
Sets the expression context.
Layer tree node points to a map layer.
Base class for raster data providers.
static double textHeight(const QgsRenderContext &context, const QgsTextFormat &format, const QStringList &textLines, DrawMode mode, QFontMetricsF *fontMetrics=nullptr)
Returns the height of a text based on a given format.
static QPixmap symbolPreviewPixmap(const QgsSymbol *symbol, QSize size, int padding=0, QgsRenderContext *customContext=nullptr)
Returns a pixmap preview for a color ramp.