QGIS API Documentation  3.13.0-Master (13337b20cd)
Signals | Public Member Functions | Protected Member Functions | Friends | List of all members
QgsSvgCache Class Reference

A cache for images / pictures derived from svg files. More...

#include <qgssvgcache.h>

Inheritance diagram for QgsSvgCache:
Inheritance graph
[legend]

Signals

void remoteSvgFetched (const QString &url)
 Emitted when the cache has finished retrieving an SVG file from a remote url. More...
 
Q_DECL_DEPRECATED void statusChanged (const QString &statusQString)
 Emit a signal to be caught by qgisapp and display a msg on status bar. More...
 
- Signals inherited from QgsAbstractContentCacheBase
void remoteContentFetched (const QString &url)
 Emitted when the cache has finished retrieving content from a remote url. More...
 

Public Member Functions

 QgsSvgCache (QObject *parent=nullptr)
 Constructor for QgsSvgCache. More...
 
void containsParams (const QString &path, bool &hasFillParam, QColor &defaultFillColor, bool &hasStrokeParam, QColor &defaultStrokeColor, bool &hasStrokeWidthParam, double &defaultStrokeWidth, bool blocking=false) const
 Tests if an svg file contains parameters for fill, stroke color, stroke width. More...
 
void containsParams (const QString &path, bool &hasFillParam, bool &hasDefaultFillParam, QColor &defaultFillColor, bool &hasFillOpacityParam, bool &hasDefaultFillOpacity, double &defaultFillOpacity, bool &hasStrokeParam, bool &hasDefaultStrokeColor, QColor &defaultStrokeColor, bool &hasStrokeWidthParam, bool &hasDefaultStrokeWidth, double &defaultStrokeWidth, bool &hasStrokeOpacityParam, bool &hasDefaultStrokeOpacity, double &defaultStrokeOpacity, bool blocking=false) const
 Tests if an svg file contains parameters for fill, stroke color, stroke width. More...
 
QByteArray getImageData (const QString &path, bool blocking=false) const
 Gets the SVG content corresponding to the given path. More...
 
QImage svgAsImage (const QString &path, double size, const QColor &fill, const QColor &stroke, double strokeWidth, double widthScaleFactor, bool &fitsInCache, double fixedAspectRatio=0, bool blocking=false)
 Gets SVG as QImage. More...
 
QPicture svgAsPicture (const QString &path, double size, const QColor &fill, const QColor &stroke, double strokeWidth, double widthScaleFactor, bool forceVectorOutput=false, double fixedAspectRatio=0, bool blocking=false)
 Gets SVG as QPicture&. More...
 
QByteArray svgContent (const QString &path, double size, const QColor &fill, const QColor &stroke, double strokeWidth, double widthScaleFactor, double fixedAspectRatio=0, bool blocking=false)
 Gets SVG content. More...
 
QSizeF svgViewboxSize (const QString &path, double size, const QColor &fill, const QColor &stroke, double strokeWidth, double widthScaleFactor, double fixedAspectRatio=0, bool blocking=false)
 Calculates the viewbox size of a (possibly cached) SVG file. More...
 
- Public Member Functions inherited from QgsAbstractContentCache< QgsSvgCacheEntry >
 QgsAbstractContentCache (QObject *parent=nullptr, const QString &typeString=QString(), long maxCacheSize=20000000, int fileModifiedCheckTimeout=30000)
 Constructor for QgsAbstractContentCache, with the specified parent object. More...
 
 ~QgsAbstractContentCache () override
 
- Public Member Functions inherited from QgsAbstractContentCacheBase
 QgsAbstractContentCacheBase (QObject *parent)
 Constructor for QgsAbstractContentCacheBase, with the specified parent object. More...
 

Protected Member Functions

bool checkReply (QNetworkReply *reply, const QString &path) const override
 Runs additional checks on a network reply to ensure that the reply content is consistent with that required by the cache. More...
 
- Protected Member Functions inherited from QgsAbstractContentCache< QgsSvgCacheEntry >
QgsSvgCacheEntry * findExistingEntry (QgsSvgCacheEntry *entryTemplate)
 Returns the existing entry from the cache which matches entryTemplate (deleting entryTemplate when done), or if no existing entry is found then entryTemplate is transferred to the cache and returned. More...
 
QByteArray getContent (const QString &path, const QByteArray &missingContent, const QByteArray &fetchingContent, bool blocking=false) const
 Gets the file content corresponding to the given path. More...
 
void onRemoteContentFetched (const QString &url, bool success) override
 Triggered after remote content (i.e. More...
 
void trimToMaximumSize ()
 Removes the least used cache entries until the maximum cache size is under the predefined size limit. More...
 
bool waitForTaskFinished (QgsNetworkContentFetcherTask *task) const
 Blocks the current thread until the task finishes or an arbitrary setting maximum wait to 5 seconds. More...
 

Friends

class TestQgsSvgCache
 

Additional Inherited Members

- Protected Slots inherited from QgsAbstractContentCacheBase
- Protected Attributes inherited from QgsAbstractContentCache< QgsSvgCacheEntry >
long mMaxCacheSize
 Maximum cache size. More...
 
QMutex mMutex
 
long mTotalSize
 Estimated total size of all cached content. More...
 

Detailed Description

A cache for images / pictures derived from svg files.

This class supports parameter replacement in svg files according to the svg params specification (http://www.w3.org/TR/2009/WD-SVGParamPrimer-20090616/). Supported are the parameters 'fill-color', 'pen-color', 'outline-width', 'stroke-width'. E.g. <circle fill="param(fill-color red)" stroke="param(pen-color black)" stroke-width="param(outline-width 1)"

QgsSvgCache is not usually directly created, but rather accessed through QgsApplication::svgCache().

Definition at line 100 of file qgssvgcache.h.

Constructor & Destructor Documentation

◆ QgsSvgCache()

QgsSvgCache::QgsSvgCache ( QObject *  parent = nullptr)

Constructor for QgsSvgCache.

Definition at line 99 of file qgssvgcache.cpp.

Member Function Documentation

◆ checkReply()

bool QgsSvgCache::checkReply ( QNetworkReply *  reply,
const QString &  path 
) const
overrideprotectedvirtual

Runs additional checks on a network reply to ensure that the reply content is consistent with that required by the cache.

Reimplemented from QgsAbstractContentCacheBase.

Definition at line 376 of file qgssvgcache.cpp.

◆ containsParams() [1/2]

void QgsSvgCache::containsParams ( const QString &  path,
bool &  hasFillParam,
QColor &  defaultFillColor,
bool &  hasStrokeParam,
QColor &  defaultStrokeColor,
bool &  hasStrokeWidthParam,
double &  defaultStrokeWidth,
bool  blocking = false 
) const

Tests if an svg file contains parameters for fill, stroke color, stroke width.

If yes, possible default values are returned. If there are several default values in the svg file, only the first one is considered. Blocking forces to wait for loading before returning image (optional). WARNING: the blocking parameter must NEVER be true from GUI based applications (like the main QGIS application) or crashes will result. Only for use in external scripts or QGIS server.

Definition at line 225 of file qgssvgcache.cpp.

◆ containsParams() [2/2]

void QgsSvgCache::containsParams ( const QString &  path,
bool &  hasFillParam,
bool &  hasDefaultFillParam,
QColor &  defaultFillColor,
bool &  hasFillOpacityParam,
bool &  hasDefaultFillOpacity,
double &  defaultFillOpacity,
bool &  hasStrokeParam,
bool &  hasDefaultStrokeColor,
QColor &  defaultStrokeColor,
bool &  hasStrokeWidthParam,
bool &  hasDefaultStrokeWidth,
double &  defaultStrokeWidth,
bool &  hasStrokeOpacityParam,
bool &  hasDefaultStrokeOpacity,
double &  defaultStrokeOpacity,
bool  blocking = false 
) const

Tests if an svg file contains parameters for fill, stroke color, stroke width.

If yes, possible default values are returned. If there are several default values in the svg file, only the first one is considered.

Parameters
pathpath to SVG file
hasFillParamwill be true if fill param present in SVG
hasDefaultFillParamwill be true if fill param has a default value specified
defaultFillColorwill be set to default fill color specified in SVG, if present
hasFillOpacityParamwill be true if fill opacity param present in SVG
hasDefaultFillOpacitywill be true if fill opacity param has a default value specified
defaultFillOpacitywill be set to default fill opacity specified in SVG, if present
hasStrokeParamwill be true if stroke param present in SVG
hasDefaultStrokeColorwill be true if stroke param has a default value specified
defaultStrokeColorwill be set to default stroke color specified in SVG, if present
hasStrokeWidthParamwill be true if stroke width param present in SVG
hasDefaultStrokeWidthwill be true if stroke width param has a default value specified
defaultStrokeWidthwill be set to default stroke width specified in SVG, if present
hasStrokeOpacityParamwill be true if stroke opacity param present in SVG
hasDefaultStrokeOpacitywill be true if stroke opacity param has a default value specified
defaultStrokeOpacitywill be set to default stroke opacity specified in SVG, if present
blockingforces to wait for loading before returning image (optional). WARNING: the blocking parameter must NEVER be true from GUI based applications (like the main QGIS application) or crashes will result. Only for use in external scripts or QGIS server.
Note
available in Python bindings as containsParamsV3
Since
QGIS 2.14

Definition at line 246 of file qgssvgcache.cpp.

◆ getImageData()

QByteArray QgsSvgCache::getImageData ( const QString &  path,
bool  blocking = false 
) const

Gets the SVG content corresponding to the given path.

path may be a local file, remote (HTTP) url, or a base 64 encoded string (with a "base64:" prefix).

The class default missingContent byte array is returned if the path could not be resolved or is broken. If the path corresponds to a remote URL, then class default fetchingContent will be returned while the content is in the process of being fetched. The blocking boolean forces to wait for loading before returning result. The content is loaded in the same thread to ensure provided the remote content. WARNING: the blocking parameter must NEVER be true from GUI based applications (like the main QGIS application) or crashes will result. Only for use in external scripts or QGIS server.

Definition at line 371 of file qgssvgcache.cpp.

◆ remoteSvgFetched

void QgsSvgCache::remoteSvgFetched ( const QString &  url)
signal

Emitted when the cache has finished retrieving an SVG file from a remote url.

Since
QGIS 3.2

◆ statusChanged

Q_DECL_DEPRECATED void QgsSvgCache::statusChanged ( const QString &  statusQString)
signal

Emit a signal to be caught by qgisapp and display a msg on status bar.

Deprecated:
Deprecated since QGIS 3.6 – no longer emitted.

◆ svgAsImage()

QImage QgsSvgCache::svgAsImage ( const QString &  path,
double  size,
const QColor &  fill,
const QColor &  stroke,
double  strokeWidth,
double  widthScaleFactor,
bool &  fitsInCache,
double  fixedAspectRatio = 0,
bool  blocking = false 
)

Gets SVG as QImage.

Parameters
pathAbsolute path to SVG file.
sizesize of cached image
fillcolor of fill
strokecolor of stroke
strokeWidthwidth of stroke
widthScaleFactorwidth scale factor
fitsInCache
fixedAspectRatiofixed aspect ratio (optional)
blockingforces to wait for loading before returning image (optional). WARNING: the blocking parameter must NEVER be true from GUI based applications (like the main QGIS application) or crashes will result. Only for use in external scripts or QGIS server.

Definition at line 122 of file qgssvgcache.cpp.

◆ svgAsPicture()

QPicture QgsSvgCache::svgAsPicture ( const QString &  path,
double  size,
const QColor &  fill,
const QColor &  stroke,
double  strokeWidth,
double  widthScaleFactor,
bool  forceVectorOutput = false,
double  fixedAspectRatio = 0,
bool  blocking = false 
)

Gets SVG as QPicture&.

Parameters
pathAbsolute path to SVG file.
sizesize of cached image
fillcolor of fill
strokecolor of stroke
strokeWidthwidth of stroke
widthScaleFactorwidth scale factor
forceVectorOutput
fixedAspectRatiofixed aspect ratio (optional)
blockingforces to wait for loading before returning image (optional). WARNING: the blocking parameter must NEVER be true from GUI based applications (like the main QGIS application) or crashes will result. Only for use in external scripts or QGIS server.

Definition at line 182 of file qgssvgcache.cpp.

◆ svgContent()

QByteArray QgsSvgCache::svgContent ( const QString &  path,
double  size,
const QColor &  fill,
const QColor &  stroke,
double  strokeWidth,
double  widthScaleFactor,
double  fixedAspectRatio = 0,
bool  blocking = false 
)

Gets SVG content.

Gets the SVG content corresponding to the given path.

path may be a local file, remote (HTTP) url, or a base 64 encoded string (with a "base64:" prefix).

The parameters size, strokeWidth for width of stroke, widthScaleFactor for width scale factor, fill for color of fill, stroke for color of stroke and fixedAspectRatio for fixed aspect ratio (optional) are needed to get the entry from cache or creates a new entry if it does not exist already.

The blocking boolean forces to wait for loading before returning image. The content is loaded in the same thread to ensure provided the image. WARNING: the blocking parameter must NEVER be true from GUI based applications (like the main QGIS application) or crashes will result. Only for use in external scripts or QGIS server.

Definition at line 206 of file qgssvgcache.cpp.

◆ svgViewboxSize()

QSizeF QgsSvgCache::svgViewboxSize ( const QString &  path,
double  size,
const QColor &  fill,
const QColor &  stroke,
double  strokeWidth,
double  widthScaleFactor,
double  fixedAspectRatio = 0,
bool  blocking = false 
)

Calculates the viewbox size of a (possibly cached) SVG file.

Parameters
pathAbsolute path to SVG file.
sizesize of cached image
fillcolor of fill
strokecolor of stroke
strokeWidthwidth of stroke
widthScaleFactorwidth scale factor
fixedAspectRatiofixed aspect ratio (optional)
blockingforces to wait for loading before returning image (optional). WARNING: the blocking parameter must NEVER be true from GUI based applications (like the main QGIS application) or crashes will result. Only for use in external scripts or QGIS server.
Returns
viewbox size set in SVG file
Since
QGIS 2.14

Definition at line 216 of file qgssvgcache.cpp.

Friends And Related Function Documentation

◆ TestQgsSvgCache

friend class TestQgsSvgCache
friend

Definition at line 294 of file qgssvgcache.h.


The documentation for this class was generated from the following files: