QGIS API Documentation
3.20.0-Odense (decaadbb31)
|
Handles conversion of MapBox GL styles to QGIS vector tile renderers and labeling settings. More...
#include <qgsmapboxglstyleconverter.h>
Public Types | |
enum | Result { Success = 0 , NoLayerList = 1 } |
Result of conversion. More... | |
Public Member Functions | |
QgsMapBoxGlStyleConverter () | |
Constructor for QgsMapBoxGlStyleConverter. More... | |
QgsMapBoxGlStyleConverter (const QgsMapBoxGlStyleConverter &other)=delete | |
QgsMapBoxGlStyleConverter cannot be copied. More... | |
~QgsMapBoxGlStyleConverter () | |
Result | convert (const QString &style, QgsMapBoxGlStyleConversionContext *context=nullptr) |
Converts a JSON style string, and returns the resultant status of the conversion. More... | |
Result | convert (const QVariantMap &style, QgsMapBoxGlStyleConversionContext *context=nullptr) |
Converts a JSON style map, and returns the resultant status of the conversion. More... | |
QString | errorMessage () const |
Returns a descriptive error message if an error was encountered during the style conversion, or an empty string if no error was encountered. More... | |
QgsVectorTileLabeling * | labeling () const |
Returns a new instance of a vector tile labeling representing the converted style, or nullptr if the style could not be converted successfully. More... | |
QgsMapBoxGlStyleConverter & | operator= (const QgsMapBoxGlStyleConverter &other)=delete |
QgsMapBoxGlStyleConverter cannot be copied. More... | |
QgsVectorTileRenderer * | renderer () const |
Returns a new instance of a vector tile renderer representing the converted style, or nullptr if the style could not be converted successfully. More... | |
QStringList | warnings () const |
Returns a list of user-friendly warnings generated during the conversion, e.g. More... | |
Protected Types | |
enum | PropertyType { Color , Numeric , Opacity , Point } |
Property types, for interpolated value conversion. More... | |
Protected Member Functions | |
void | parseLayers (const QVariantList &layers, QgsMapBoxGlStyleConversionContext *context=nullptr) |
Parse list of layers from JSON. More... | |
Static Protected Member Functions | |
static void | colorAsHslaComponents (const QColor &color, int &hue, int &saturation, int &lightness, int &alpha) |
Takes a QColor object and returns HSLA components in required format for QGIS color_hsla() expression function. More... | |
static QString | interpolateExpression (double zoomMin, double zoomMax, double valueMin, double valueMax, double base, double multiplier=1) |
Generates an interpolation for values between valueMin and valueMax, scaled between the ranges zoomMin to zoomMax. More... | |
static Qt::PenCapStyle | parseCapStyle (const QString &style) |
Converts a value to Qt::PenCapStyle enum from JSON value. More... | |
static bool | parseCircleLayer (const QVariantMap &jsonLayer, QgsVectorTileBasicRendererStyle &style, QgsMapBoxGlStyleConversionContext &context) |
Parses a circle layer. More... | |
static QColor | parseColor (const QVariant &color, QgsMapBoxGlStyleConversionContext &context) |
Parses a color in one of these supported formats: More... | |
static QString | parseExpression (const QVariantList &expression, QgsMapBoxGlStyleConversionContext &context) |
Converts a MapBox GL expression to a QGIS expression. More... | |
static bool | parseFillLayer (const QVariantMap &jsonLayer, QgsVectorTileBasicRendererStyle &style, QgsMapBoxGlStyleConversionContext &context) |
Parses a fill layer. More... | |
static QgsProperty | parseInterpolateByZoom (const QVariantMap &json, QgsMapBoxGlStyleConversionContext &context, double multiplier=1, double *defaultNumber=nullptr) |
Parses a numeric value which is interpolated by zoom range. More... | |
static QgsProperty | parseInterpolateColorByZoom (const QVariantMap &json, QgsMapBoxGlStyleConversionContext &context, QColor *defaultColor=nullptr) |
Parses a color value which is interpolated by zoom range. More... | |
static QgsProperty | parseInterpolateListByZoom (const QVariantList &json, PropertyType type, QgsMapBoxGlStyleConversionContext &context, double multiplier=1, int maxOpacity=255, QColor *defaultColor=nullptr, double *defaultNumber=nullptr) |
Interpolates a list which starts with the interpolate function. More... | |
static QgsProperty | parseInterpolateOpacityByZoom (const QVariantMap &json, int maxOpacity) |
Interpolates opacity with either scale_linear() or scale_exp() (depending on base value). More... | |
static QgsProperty | parseInterpolatePointByZoom (const QVariantMap &json, QgsMapBoxGlStyleConversionContext &context, double multiplier=1, QPointF *defaultPoint=nullptr) |
Interpolates a point/offset with either scale_linear() or scale_exp() (depending on base value). More... | |
static QgsProperty | parseInterpolateStringByZoom (const QVariantMap &json, QgsMapBoxGlStyleConversionContext &context, const QVariantMap &conversionMap, QString *defaultString=nullptr) |
Interpolates a string by zoom. More... | |
static Qt::PenJoinStyle | parseJoinStyle (const QString &style) |
Converts a value to Qt::PenJoinStyle enum from JSON value. More... | |
static bool | parseLineLayer (const QVariantMap &jsonLayer, QgsVectorTileBasicRendererStyle &style, QgsMapBoxGlStyleConversionContext &context) |
Parses a line layer. More... | |
static QgsProperty | parseMatchList (const QVariantList &json, PropertyType type, QgsMapBoxGlStyleConversionContext &context, double multiplier=1, int maxOpacity=255, QColor *defaultColor=nullptr, double *defaultNumber=nullptr) |
Parses and converts a match function value list. More... | |
static QString | parseOpacityStops (double base, const QVariantList &stops, int maxOpacity) |
Takes values from stops and uses either scale_linear() or scale_exp() functions to interpolate alpha component of color. More... | |
static QString | parsePointStops (double base, const QVariantList &stops, QgsMapBoxGlStyleConversionContext &context, double multiplier=1) |
Takes values from stops and uses either scale_linear() or scale_exp() functions to interpolate point/offset values. More... | |
static QString | parseStops (double base, const QVariantList &stops, double multiplier, QgsMapBoxGlStyleConversionContext &context) |
Parses a list of interpolation stops. More... | |
static QString | parseStringStops (const QVariantList &stops, QgsMapBoxGlStyleConversionContext &context, const QVariantMap &conversionMap, QString *defaultString=nullptr) |
Parses a list of interpolation stops containing string values. More... | |
static void | parseSymbolLayer (const QVariantMap &jsonLayer, QgsVectorTileBasicRendererStyle &rendererStyle, bool &hasRenderer, QgsVectorTileBasicLabelingStyle &labelingStyle, bool &hasLabeling, QgsMapBoxGlStyleConversionContext &context) |
Parses a symbol layer as renderer or labeling. More... | |
static bool | parseSymbolLayerAsRenderer (const QVariantMap &jsonLayer, QgsVectorTileBasicRendererStyle &rendererStyle, QgsMapBoxGlStyleConversionContext &context) |
Parses a symbol layer as a renderer. More... | |
static QgsProperty | parseValueList (const QVariantList &json, PropertyType type, QgsMapBoxGlStyleConversionContext &context, double multiplier=1, int maxOpacity=255, QColor *defaultColor=nullptr, double *defaultNumber=nullptr) |
Parses and converts a value list (e.g. More... | |
static QImage | retrieveSprite (const QString &name, QgsMapBoxGlStyleConversionContext &context, QSize &spriteSize) |
Retrieves the sprite image with the specified name, taken from the specified context. More... | |
static QString | retrieveSpriteAsBase64 (const QVariant &value, QgsMapBoxGlStyleConversionContext &context, QSize &spriteSize, QString &spriteProperty, QString &spriteSizeProperty) |
Retrieves the sprite image with the specified name, taken from the specified context as a base64 encoded value. More... | |
Handles conversion of MapBox GL styles to QGIS vector tile renderers and labeling settings.
Conversions are performed by calling convert() with either a JSON map or JSON string value, and then retrieving the results by calling renderer() or labeling() respectively.
Definition at line 171 of file qgsmapboxglstyleconverter.h.
|
protected |
Property types, for interpolated value conversion.
Enumerator | |
---|---|
Color | Color property. |
Numeric | Numeric property (e.g. line width, text size) |
Opacity | Opacity property. |
Point | Point/offset property. |
Definition at line 254 of file qgsmapboxglstyleconverter.h.
Result of conversion.
Enumerator | |
---|---|
Success | Conversion was successful. |
NoLayerList | No layer list was found in JSON input. |
Definition at line 188 of file qgsmapboxglstyleconverter.h.
QgsMapBoxGlStyleConverter::QgsMapBoxGlStyleConverter | ( | ) |
Constructor for QgsMapBoxGlStyleConverter.
Definition at line 43 of file qgsmapboxglstyleconverter.cpp.
|
delete |
QgsMapBoxGlStyleConverter cannot be copied.
|
default |
|
staticprotected |
Takes a QColor object and returns HSLA components in required format for QGIS color_hsla() expression function.
color | input color |
hue | an integer value from 0 to 360 |
saturation | an integer value from 0 to 100 |
lightness | an integer value from 0 to 100 |
alpha | an integer value from 0 (completely transparent) to 255 (opaque). |
Definition at line 2472 of file qgsmapboxglstyleconverter.cpp.
QgsMapBoxGlStyleConverter::Result QgsMapBoxGlStyleConverter::convert | ( | const QString & | style, |
QgsMapBoxGlStyleConversionContext * | context = nullptr |
||
) |
Converts a JSON style string, and returns the resultant status of the conversion.
If an error occurs during conversion then a descriptive error message can be retrieved by calling errorMessage().
After conversion, the resultant labeling and style rules can be retrieved by calling renderer() or labeling() respectively.
The optional context argument can be set to use a specific context during the conversion.
Definition at line 63 of file qgsmapboxglstyleconverter.cpp.
QgsMapBoxGlStyleConverter::Result QgsMapBoxGlStyleConverter::convert | ( | const QVariantMap & | style, |
QgsMapBoxGlStyleConversionContext * | context = nullptr |
||
) |
Converts a JSON style map, and returns the resultant status of the conversion.
If an error occurs during conversion then a descriptive error message can be retrieved by calling errorMessage().
After conversion, the resultant labeling and style rules can be retrieved by calling renderer() or labeling() respectively.
The optional context argument can be set to use a specific context during the conversion.
Definition at line 47 of file qgsmapboxglstyleconverter.cpp.
|
inline |
Returns a descriptive error message if an error was encountered during the style conversion, or an empty string if no error was encountered.
Definition at line 226 of file qgsmapboxglstyleconverter.h.
|
staticprotected |
Generates an interpolation for values between valueMin and valueMax, scaled between the ranges zoomMin to zoomMax.
Definition at line 2480 of file qgsmapboxglstyleconverter.cpp.
QgsVectorTileLabeling * QgsMapBoxGlStyleConverter::labeling | ( | ) | const |
Returns a new instance of a vector tile labeling representing the converted style, or nullptr
if the style could not be converted successfully.
Definition at line 2944 of file qgsmapboxglstyleconverter.cpp.
|
delete |
QgsMapBoxGlStyleConverter cannot be copied.
|
staticprotected |
Converts a value to Qt::PenCapStyle enum from JSON value.
Definition at line 2509 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Parses a circle layer.
jsonLayer | circle layer to parse |
style | generated QGIS vector tile style |
context | conversion context |
true
if the layer was successfully parsed. Definition at line 637 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Parses a color in one of these supported formats:
#fff
or #ffffff
hsl(30, 19%, 90%)
or hsla(30, 19%, 90%, 0.4)
rgb(10, 20, 30)
or rgba(10, 20, 30, 0.5)
Returns an invalid color if the color could not be parsed.
Definition at line 2461 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Converts a MapBox GL expression to a QGIS expression.
Definition at line 2529 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Parses a fill layer.
jsonLayer | fill layer to parse |
style | generated QGIS vector tile style |
context | conversion context |
true
if the layer was successfully parsed. Definition at line 168 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Parses a numeric value which is interpolated by zoom range.
json | definition of interpolation |
context | conversion context |
multiplier | optional multiplication factor |
defaultNumber | optional storage for a reasonable "default" number representing the overall property. |
Definition at line 2056 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Parses a color value which is interpolated by zoom range.
json | definition of color interpolation |
context | conversion context |
defaultColor | optional storage for a reasonable "default" color representing the overall property. |
Definition at line 1998 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Interpolates a list which starts with the interpolate function.
Definition at line 2403 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Interpolates opacity with either scale_linear() or scale_exp() (depending on base value).
For json with intermediate stops it uses parseOpacityStops() function. It uses QGIS set_color_part() function to set alpha component of color.
Definition at line 2082 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Interpolates a point/offset with either scale_linear() or scale_exp() (depending on base value).
For json with intermediate stops it uses parsePointStops() function.
Definition at line 2130 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Interpolates a string by zoom.
For json with intermediate stops it uses parseStringStops() function.
Definition at line 2162 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Converts a value to Qt::PenJoinStyle enum from JSON value.
Definition at line 2519 of file qgsmapboxglstyleconverter.cpp.
|
protected |
Parse list of layers from JSON.
Definition at line 70 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Parses a line layer.
jsonLayer | line layer to parse |
style | generated QGIS vector tile style |
context | conversion context |
true
if the layer was successfully parsed. Definition at line 407 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Parses and converts a match function value list.
Definition at line 2298 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Takes values from stops and uses either scale_linear() or scale_exp() functions to interpolate alpha component of color.
Definition at line 2105 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Takes values from stops and uses either scale_linear() or scale_exp() functions to interpolate point/offset values.
Definition at line 2174 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Parses a list of interpolation stops.
base | interpolation exponent base |
stops | definition of interpolation stops |
multiplier | optional multiplication factor |
context | conversion context |
Definition at line 2208 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Parses a list of interpolation stops containing string values.
stops | definition of interpolation stops |
context | conversion context |
conversionMap | map of input string to output expression value |
defaultString | reasonable default value taken from stops |
Definition at line 2245 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Parses a symbol layer as renderer or labeling.
jsonLayer | symbol layer to parse |
rendererStyle | generated QGIS vector tile style |
hasRenderer | will be set to true if symbol layer generated a renderer style |
labelingStyle | generated QGIS vector tile labeling |
hasLabeling | will be set to true if symbol layer generated a labeling style |
context | conversion context |
Definition at line 883 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Parses a symbol layer as a renderer.
jsonLayer | fill layer to parse |
rendererStyle | generated QGIS vector tile style |
context | conversion context |
true
if symbol layer was converted to renderer Definition at line 1695 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Parses and converts a value list (e.g.
an interpolate list).
Definition at line 2280 of file qgsmapboxglstyleconverter.cpp.
QgsVectorTileRenderer * QgsMapBoxGlStyleConverter::renderer | ( | ) | const |
Returns a new instance of a vector tile renderer representing the converted style, or nullptr
if the style could not be converted successfully.
Definition at line 2939 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Retrieves the sprite image with the specified name, taken from the specified context.
The context must have valid sprite definitions and images set via QgsMapBoxGlStyleConversionContext::setSprites() prior to conversion.
Definition at line 2687 of file qgsmapboxglstyleconverter.cpp.
|
staticprotected |
Retrieves the sprite image with the specified name, taken from the specified context as a base64 encoded value.
The context must have valid sprite definitions and images set via QgsMapBoxGlStyleConversionContext::setSprites() prior to conversion.
Definition at line 2716 of file qgsmapboxglstyleconverter.cpp.
|
inline |
Returns a list of user-friendly warnings generated during the conversion, e.g.
as a result of MapBox GL style settings which cannot be translated to QGIS styles.
Definition at line 234 of file qgsmapboxglstyleconverter.h.