31 : mStyleName( stName )
32 , mLayerName( laName )
33 , mGeometryType( geomType )
44 mStyleName = other.mStyleName;
45 mLayerName = other.mLayerName;
46 mGeometryType = other.mGeometryType;
47 mSymbol.reset( other.mSymbol ? other.mSymbol->clone() :
nullptr );
48 mEnabled = other.mEnabled;
49 mExpression = other.mExpression;
50 mMinZoomLevel = other.mMinZoomLevel;
51 mMaxZoomLevel = other.mMaxZoomLevel;
64 elem.setAttribute( QStringLiteral(
"name" ), mStyleName );
65 elem.setAttribute( QStringLiteral(
"layer" ), mLayerName );
66 elem.setAttribute( QStringLiteral(
"geometry" ), mGeometryType );
67 elem.setAttribute( QStringLiteral(
"enabled" ), mEnabled ? QStringLiteral(
"1" ) : QStringLiteral(
"0" ) );
68 elem.setAttribute( QStringLiteral(
"expression" ), mExpression );
69 elem.setAttribute( QStringLiteral(
"min-zoom" ), mMinZoomLevel );
70 elem.setAttribute( QStringLiteral(
"max-zoom" ), mMaxZoomLevel );
72 QDomDocument doc = elem.ownerDocument();
74 symbols[QStringLiteral(
"0" )] = mSymbol.get();
76 elem.appendChild( symbolsElem );
81 mStyleName = elem.attribute( QStringLiteral(
"name" ) );
82 mLayerName = elem.attribute( QStringLiteral(
"layer" ) );
84 mEnabled = elem.attribute( QStringLiteral(
"enabled" ) ).toInt();
85 mExpression = elem.attribute( QStringLiteral(
"expression" ) );
86 mMinZoomLevel = elem.attribute( QStringLiteral(
"min-zoom" ) ).toInt();
87 mMaxZoomLevel = elem.attribute( QStringLiteral(
"max-zoom" ) ).toInt();
90 QDomElement symbolsElem = elem.firstChildElement( QStringLiteral(
"symbols" ) );
91 if ( !symbolsElem.isNull() )
94 if ( symbolMap.contains( QStringLiteral(
"0" ) ) )
96 mSymbol.reset( symbolMap.take( QStringLiteral(
"0" ) ) );
110 return QStringLiteral(
"basic" );
116 r->mStyles = mStyles;
124 Q_UNUSED( tileRange )
128 if ( layerStyle.isActive( tileZoom ) )
130 if ( !layerStyle.filterExpression().isEmpty() )
135 if (
auto *lSymbol = layerStyle.symbol() )
137 mRequiredFields[layerStyle.layerName()].unite( lSymbol->usedAttributes( context ) );
145 return mRequiredFields;
153 if ( layerStyle.isActive( tileZoom ) )
155 res.insert( layerStyle.layerName() );
173 if ( !layerStyle.isActive( zoomLevel ) )
180 QgsExpression filterExpression( layerStyle.filterExpression() );
185 if ( layerStyle.layerName().isEmpty() )
188 for ( QString layerName : tileData.keys() )
190 for (
const QgsFeature &f : tileData[layerName] )
197 if ( featureType == layerStyle.geometryType() )
212 else if ( tileData.contains( layerStyle.layerName() ) )
215 for (
const QgsFeature &f : tileData[layerStyle.layerName()] )
222 if ( featureType == layerStyle.geometryType() )
242 QDomDocument doc = elem.ownerDocument();
243 QDomElement elemStyles = doc.createElement( QStringLiteral(
"styles" ) );
246 QDomElement elemStyle = doc.createElement( QStringLiteral(
"style" ) );
247 layerStyle.writeXml( elemStyle, context );
248 elemStyles.appendChild( elemStyle );
250 elem.appendChild( elemStyles );
257 QDomElement elemStyles = elem.firstChildElement( QStringLiteral(
"styles" ) );
258 QDomElement elemStyle = elemStyles.firstChildElement( QStringLiteral(
"style" ) );
259 while ( !elemStyle.isNull() )
262 layerStyle.
readXml( elemStyle, context );
263 mStyles.append( layerStyle );
264 elemStyle = elemStyle.nextSiblingElement( QStringLiteral(
"style" ) );
281 QColor polygonStrokeColor = polygonFillColor;
282 polygonFillColor.setAlpha( 100 );
289 QColor pointStrokeColor = pointFillColor;
290 pointFillColor.setAlpha( 100 );
293 return simpleStyle( polygonFillColor, polygonStrokeColor, polygonStrokeWidth,
294 lineStrokeColor, lineStrokeWidth,
295 pointFillColor, pointStrokeColor, pointSize );
299 const QColor &polygonFillColor,
const QColor &polygonStrokeColor,
double polygonStrokeWidth,
300 const QColor &lineStrokeColor,
double lineStrokeWidth,
301 const QColor &pointFillColor,
const QColor &pointStrokeColor,
double pointSize )
310 lineSymbolLayer->
setColor( lineStrokeColor );
311 lineSymbolLayer->
setWidth( lineStrokeWidth );
317 markerSymbolLayer->
setSize( pointSize );
329 QList<QgsVectorTileBasicRendererStyle> lst;
330 lst << st1 << st2 << st3;
static QgsColorSchemeRegistry * colorSchemeRegistry()
Returns the application's color scheme registry, used for managing color schemes.
QColor fetchRandomStyleColor() const
Returns a random color for use with a new symbol style (e.g.
RAII class to pop scope from an expression context on destruction.
Single scope for storing variables and functions for use within a QgsExpressionContext.
void setFields(const QgsFields &fields)
Convenience function for setting a fields for the scope.
void setFeature(const QgsFeature &feature)
Convenience function for setting a feature for the scope.
Class for parsing and evaluation of expressions (formerly called "search strings").
bool prepare(const QgsExpressionContext *context)
Gets the expression ready for evaluation - find out column indexes.
QSet< QString > referencedColumns() const
Gets list of columns referenced by the expression.
QVariant evaluate()
Evaluate the feature and return the result.
bool isValid() const
Checks if this expression is valid.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
Container of fields for a vector layer.
A fill symbol type, for rendering Polygon and MultiPolygon geometries.
A geometry is the spatial representation of a feature.
virtual void setWidth(double width)
Sets the width of the line symbol layer.
A line symbol type, for rendering LineString and MultiLineString geometries.
virtual void setSize(double size)
Sets the symbol size.
A marker symbol type, for rendering Point and MultiPoint geometries.
The class is used as a container of context for various read/write operations on other objects.
Contains information about the context of a rendering operation.
QgsExpressionContext & expressionContext()
Gets the expression context.
void setStrokeWidth(double strokeWidth)
void setFillColor(const QColor &color) override
Set fill color.
void setStrokeColor(const QColor &strokeColor) override
Set stroke color.
A simple line symbol layer, which renders lines using a line in a variety of styles (e....
Simple marker symbol layer, consisting of a rendered shape with solid fill color and an stroke.
void setFillColor(const QColor &color) override
Set fill color.
void setStrokeColor(const QColor &color) override
Sets the marker's stroke color.
static QgsSymbolMap loadSymbols(QDomElement &element, const QgsReadWriteContext &context)
Reads a collection of symbols from XML and returns them in a map. Caller is responsible for deleting ...
static QDomElement saveSymbols(QgsSymbolMap &symbols, const QString &tagName, QDomDocument &doc, const QgsReadWriteContext &context)
Writes a collection of symbols to XML with specified tagName for the top-level element.
virtual void setColor(const QColor &color)
The fill color.
Abstract base class for all rendered symbols.
void stopRender(QgsRenderContext &context)
Ends the rendering process.
void renderFeature(const QgsFeature &feature, QgsRenderContext &context, int layer=-1, bool selected=false, bool drawVertexMarker=false, int currentVertexMarkerType=0, double currentVertexMarkerSize=0.0) SIP_THROW(QgsCsException)
Render a feature.
void startRender(QgsRenderContext &context, const QgsFields &fields=QgsFields())
Begins the rendering process for the symbol.
Range of tiles in a tile matrix to be rendered.
int zoomLevel() const
Returns tile's zoom level (Z)
Definition of map rendering of a subset of vector tile data.
~QgsVectorTileBasicRendererStyle()
void setSymbol(QgsSymbol *sym)
Sets symbol for rendering. Takes ownership of the symbol.
void writeXml(QDomElement &elem, const QgsReadWriteContext &context) const
Writes object content to given DOM element.
QgsVectorTileBasicRendererStyle(const QString &stName=QString(), const QString &laName=QString(), QgsWkbTypes::GeometryType geomType=QgsWkbTypes::UnknownGeometry)
Constructs a style object.
QgsVectorTileBasicRendererStyle & operator=(const QgsVectorTileBasicRendererStyle &other)
void readXml(const QDomElement &elem, const QgsReadWriteContext &context)
Reads object content from given DOM element.
The default vector tile renderer implementation.
void renderTile(const QgsVectorTileRendererData &tile, QgsRenderContext &context) override
Renders given vector tile. Must be called between startRender/stopRender.
QList< QgsVectorTileBasicRendererStyle > styles() const
Returns list of styles of the renderer.
void readXml(const QDomElement &elem, const QgsReadWriteContext &context) override
Reads renderer's properties from given XML element.
QMap< QString, QSet< QString > > usedAttributes(const QgsRenderContext &) override
Returns field names of sub-layers that will be used for rendering. Must be called between startRender...
QgsVectorTileBasicRenderer()
Constructs renderer with no styles.
void setStyles(const QList< QgsVectorTileBasicRendererStyle > &styles)
Sets list of styles of the renderer.
void startRender(QgsRenderContext &context, int tileZoom, const QgsTileRange &tileRange) override
Initializes rendering. It should be paired with a stopRender() call.
QString type() const override
Returns unique type name of the renderer implementation.
static QList< QgsVectorTileBasicRendererStyle > simpleStyle(const QColor &polygonFillColor, const QColor &polygonStrokeColor, double polygonStrokeWidth, const QColor &lineStrokeColor, double lineStrokeWidth, const QColor &pointFillColor, const QColor &pointStrokeColor, double pointSize)
Returns a list of styles to render all layers with the given fill/stroke colors, stroke widths and ma...
QgsVectorTileBasicRenderer * clone() const override
Returns a clone of the renderer.
static QList< QgsVectorTileBasicRendererStyle > simpleStyleWithRandomColors()
Returns a list of styles to render all layers, using random colors.
QSet< QString > requiredLayers(QgsRenderContext &context, int tileZoom) const override
Returns a list of the layers required for rendering.
void writeXml(QDomElement &elem, const QgsReadWriteContext &context) const override
Writes renderer's properties to given XML element.
void stopRender(QgsRenderContext &context) override
Finishes rendering and cleans up any resources.
Contains decoded features of a single vector tile and any other data necessary for rendering of it.
QgsVectorTileFeatures features() const
Returns features of the tile grouped by sub-layer names.
QMap< QString, QgsFields > fields() const
Returns per-layer fields.
QgsTileXYZ id() const
Returns coordinates of the tile.
static GeometryType geometryType(Type type) SIP_HOLDGIL
Returns the geometry type for a WKB type, e.g., both MultiPolygon and CurvePolygon would have a Polyg...
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
const double DEFAULT_LINE_WIDTH
const double DEFAULT_POINT_SIZE
Magic number that determines the default point size for point symbols.
QMap< QString, QgsSymbol * > QgsSymbolMap
QList< QgsSymbolLayer * > QgsSymbolLayerList
QMap< QString, QVector< QgsFeature > > QgsVectorTileFeatures
Features of a vector tile, grouped by sub-layer names (key of the map)