mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
Support SVG relative paths in SVG cache to enable relative data defined paths. Fixes #8883
This commit is contained in:
parent
667e0671be
commit
55727f755a
@ -20,6 +20,8 @@
|
||||
#include "qgslogger.h"
|
||||
#include "qgsnetworkaccessmanager.h"
|
||||
#include "qgsmessagelog.h"
|
||||
#include "qgssymbollayerv2utils.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QCoreApplication>
|
||||
#include <QCursor>
|
||||
@ -165,7 +167,10 @@ const QPicture& QgsSvgCache::svgAsPicture( const QString& file, double size, con
|
||||
QgsSvgCacheEntry* QgsSvgCache::insertSVG( const QString& file, double size, const QColor& fill, const QColor& outline, double outlineWidth,
|
||||
double widthScaleFactor, double rasterScaleFactor )
|
||||
{
|
||||
QgsSvgCacheEntry* entry = new QgsSvgCacheEntry( file, size, outlineWidth, widthScaleFactor, rasterScaleFactor, fill, outline );
|
||||
// The file may be relative path (e.g. if path is data defined)
|
||||
QString path = QgsSymbolLayerV2Utils::symbolNameToPath( file );
|
||||
|
||||
QgsSvgCacheEntry* entry = new QgsSvgCacheEntry( path, size, outlineWidth, widthScaleFactor, rasterScaleFactor, fill, outline );
|
||||
|
||||
replaceParamsAndCacheSvg( entry );
|
||||
|
||||
|
@ -32,6 +32,9 @@ class CORE_EXPORT QgsSvgCacheEntry
|
||||
{
|
||||
public:
|
||||
QgsSvgCacheEntry();
|
||||
/** Constructor.
|
||||
* @param file Absolute path to SVG file (relative paths are not resolved).
|
||||
*/
|
||||
QgsSvgCacheEntry( const QString& file, double size, double outlineWidth, double widthScaleFactor, double rasterScaleFctor, const QColor& fill, const QColor& outline );
|
||||
~QgsSvgCacheEntry();
|
||||
|
||||
@ -69,8 +72,14 @@ class CORE_EXPORT QgsSvgCache : public QObject
|
||||
static QgsSvgCache* instance();
|
||||
~QgsSvgCache();
|
||||
|
||||
/** Get SVG as QImage.
|
||||
* @param file Absolute or relative path to SVG file.
|
||||
*/
|
||||
const QImage& svgAsImage( const QString& file, double size, const QColor& fill, const QColor& outline, double outlineWidth,
|
||||
double widthScaleFactor, double rasterScaleFactor, bool& fitsInCache );
|
||||
/** Get SVG as QPicture&.
|
||||
* @param file Absolute or relative path to SVG file.
|
||||
*/
|
||||
const QPicture& svgAsPicture( const QString& file, double size, const QColor& fill, const QColor& outline, double outlineWidth,
|
||||
double widthScaleFactor, double rasterScaleFactor, bool forceVectorOutput = false );
|
||||
|
||||
@ -90,7 +99,10 @@ class CORE_EXPORT QgsSvgCache : public QObject
|
||||
//! protected constructor
|
||||
QgsSvgCache( QObject * parent = 0 );
|
||||
|
||||
/**Creates new cache entry and returns pointer to it*/
|
||||
/**Creates new cache entry and returns pointer to it
|
||||
* @param file Absolute or relative path to SVG file. If the path is relative the file is searched by QgsSymbolLayerV2Utils::symbolNameToPath() in SVG paths.
|
||||
in settings svg/searchPathsForSVG
|
||||
*/
|
||||
QgsSvgCacheEntry* insertSVG( const QString& file, double size, const QColor& fill, const QColor& outline, double outlineWidth,
|
||||
double widthScaleFactor, double rasterScaleFactor );
|
||||
|
||||
|
@ -249,7 +249,10 @@ class CORE_EXPORT QgsSymbolLayerV2Utils
|
||||
//! Return a list of svg files at the specified directory
|
||||
static QStringList listSvgFilesAt( QString directory );
|
||||
|
||||
//! Get symbol's path from its name
|
||||
/** Get symbol's path from its name.
|
||||
* If the name is not absolute path the file is searched in SVG paths specified
|
||||
* in settings svg/searchPathsForSVG.
|
||||
*/
|
||||
static QString symbolNameToPath( QString name );
|
||||
|
||||
//! Get symbols's name from its path
|
||||
|
Loading…
x
Reference in New Issue
Block a user