Quantum GIS API Documentation  master-693a1fe
QgsSvgCache Class Reference

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

#include <qgssvgcache.h>

+ Collaboration diagram for QgsSvgCache:

List of all members.

Signals

void statusChanged (const QString &theStatusQString)
 Emit a signal to be caught by qgisapp and display a msg on status bar.

Public Member Functions

 ~QgsSvgCache ()
void containsParams (const QString &path, bool &hasFillParam, QColor &defaultFillColor, bool &hasOutlineParam, QColor &defaultOutlineColor, bool &hasOutlineWidthParam, double &defaultOutlineWidth) const
 Tests if an svg file contains parameters for fill, outline color, outline width.
QByteArray getImageData (const QString &path) const
 Get image data.
const QImage & svgAsImage (const QString &file, double size, const QColor &fill, const QColor &outline, double outlineWidth, double widthScaleFactor, double rasterScaleFactor, bool &fitsInCache)
const QPicture & svgAsPicture (const QString &file, double size, const QColor &fill, const QColor &outline, double outlineWidth, double widthScaleFactor, double rasterScaleFactor)

Static Public Member Functions

static QgsSvgCacheinstance ()

Protected Member Functions

 QgsSvgCache (QObject *parent=0)
 protected constructor
QgsSvgCacheEntrycacheEntry (const QString &file, double size, const QColor &fill, const QColor &outline, double outlineWidth, double widthScaleFactor, double rasterScaleFactor)
 Returns entry from cache or creates a new entry if it does not exist already.
void cacheImage (QgsSvgCacheEntry *entry)
void cachePicture (QgsSvgCacheEntry *entry)
QgsSvgCacheEntryinsertSVG (const QString &file, double size, const QColor &fill, const QColor &outline, double outlineWidth, double widthScaleFactor, double rasterScaleFactor)
 Creates new cache entry and returns pointer to it.
void replaceParamsAndCacheSvg (QgsSvgCacheEntry *entry)
void takeEntryFromList (QgsSvgCacheEntry *entry)
void trimToMaximumSize ()
 Removes the least used items until the maximum size is under the limit.

Private Slots

void downloadProgress (qint64, qint64)

Private Member Functions

void containsElemParams (const QDomElement &elem, bool &hasFillParam, QColor &defaultFill, bool &hasOutlineParam, QColor &defaultOutline, bool &hasOutlineWidthParam, double &defaultOutlineWidth) const
void printEntryList ()
 For debugging.
void removeCacheEntry (QString s, QgsSvgCacheEntry *entry)
 Release memory and remove cache entry from mEntryLookup.
void replaceElemParams (QDomElement &elem, const QColor &fill, const QColor &outline, double outlineWidth)
 Replaces parameters in elements of a dom node and calls method for all child nodes.

Private Attributes

QMultiHash< QString,
QgsSvgCacheEntry * > 
mEntryLookup
 Entry pointers accessible by file name.
QgsSvgCacheEntrymLeastRecentEntry
QgsSvgCacheEntrymMostRecentEntry
long mTotalSize
 Estimated total size of all images, pictures and svgContent.

Static Private Attributes

static QgsSvgCachemInstance = 0
static const long mMaximumSize = 20000000

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)"

Definition at line 63 of file qgssvgcache.h.


Constructor & Destructor Documentation

Definition at line 101 of file qgssvgcache.cpp.

References mEntryLookup.

QgsSvgCache::QgsSvgCache ( QObject *  parent = 0) [protected]

protected constructor

Definition at line 93 of file qgssvgcache.cpp.

Referenced by instance().


Member Function Documentation

QgsSvgCacheEntry * QgsSvgCache::cacheEntry ( const QString &  file,
double  size,
const QColor &  fill,
const QColor &  outline,
double  outlineWidth,
double  widthScaleFactor,
double  rasterScaleFactor 
) [protected]
void QgsSvgCache::cacheImage ( QgsSvgCacheEntry entry) [protected]
void QgsSvgCache::containsElemParams ( const QDomElement &  elem,
bool &  hasFillParam,
QColor &  defaultFill,
bool &  hasOutlineParam,
QColor &  defaultOutline,
bool &  hasOutlineWidthParam,
double &  defaultOutlineWidth 
) const [private]

Definition at line 563 of file qgssvgcache.cpp.

Referenced by containsParams().

void QgsSvgCache::containsParams ( const QString &  path,
bool &  hasFillParam,
QColor &  defaultFillColor,
bool &  hasOutlineParam,
QColor &  defaultOutlineColor,
bool &  hasOutlineWidthParam,
double &  defaultOutlineWidth 
) const

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

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

Definition at line 196 of file qgssvgcache.cpp.

References containsElemParams(), and getImageData().

Referenced by QgsSvgMarkerSymbolLayerV2::create(), QgsSvgSelectorListModel::data(), QgsSvgListModel::data(), QgsSVGFillSymbolLayer::setDefaultSvgParams(), QgsSvgMarkerSymbolLayerV2Widget::setGuiForSvg(), QgsSvgMarkerSymbolLayerV2::setPath(), and QgsSVGFillSymbolLayerWidget::updateParamGui().

void QgsSvgCache::downloadProgress ( qint64  bytesReceived,
qint64  bytesTotal 
) [private, slot]

Definition at line 729 of file qgssvgcache.cpp.

References QgsDebugMsg, statusChanged(), and tr.

Referenced by getImageData().

QByteArray QgsSvgCache::getImageData ( const QString &  path) const
QgsSvgCacheEntry * QgsSvgCache::insertSVG ( const QString &  file,
double  size,
const QColor &  fill,
const QColor &  outline,
double  outlineWidth,
double  widthScaleFactor,
double  rasterScaleFactor 
) [protected]

Creates new cache entry and returns pointer to it.

Definition at line 167 of file qgssvgcache.cpp.

References mEntryLookup, mLeastRecentEntry, mMostRecentEntry, QgsSvgCacheEntry::nextEntry, QgsSvgCacheEntry::previousEntry, replaceParamsAndCacheSvg(), and trimToMaximumSize().

Referenced by cacheEntry().

void QgsSvgCache::removeCacheEntry ( QString  s,
QgsSvgCacheEntry entry 
) [private]

Release memory and remove cache entry from mEntryLookup.

Definition at line 667 of file qgssvgcache.cpp.

References mEntryLookup.

void QgsSvgCache::replaceElemParams ( QDomElement &  elem,
const QColor &  fill,
const QColor &  outline,
double  outlineWidth 
) [private]

Replaces parameters in elements of a dom node and calls method for all child nodes.

Definition at line 485 of file qgssvgcache.cpp.

Referenced by replaceParamsAndCacheSvg().

void QgsSvgCache::statusChanged ( const QString &  theStatusQString) [signal]

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

Referenced by downloadProgress().

const QImage & QgsSvgCache::svgAsImage ( const QString &  file,
double  size,
const QColor &  fill,
const QColor &  outline,
double  outlineWidth,
double  widthScaleFactor,
double  rasterScaleFactor,
bool &  fitsInCache 
)
const QPicture & QgsSvgCache::svgAsPicture ( const QString &  file,
double  size,
const QColor &  fill,
const QColor &  outline,
double  outlineWidth,
double  widthScaleFactor,
double  rasterScaleFactor 
)
void QgsSvgCache::trimToMaximumSize ( ) [protected]

Removes the least used items until the maximum size is under the limit.

Definition at line 689 of file qgssvgcache.cpp.

References QgsSvgCacheEntry::dataSize(), QgsSvgCacheEntry::file, mEntryLookup, mLeastRecentEntry, mMaximumSize, mTotalSize, QgsSvgCacheEntry::nextEntry, and takeEntryFromList().

Referenced by insertSVG(), svgAsImage(), and svgAsPicture().


Member Data Documentation

QMultiHash< QString, QgsSvgCacheEntry* > QgsSvgCache::mEntryLookup [private]

Entry pointers accessible by file name.

Definition at line 117 of file qgssvgcache.h.

Referenced by cacheEntry(), insertSVG(), removeCacheEntry(), trimToMaximumSize(), and ~QgsSvgCache().

QgsSvgCache * QgsSvgCache::mInstance = 0 [static, private]

Definition at line 114 of file qgssvgcache.h.

Referenced by instance().

const long QgsSvgCache::mMaximumSize = 20000000 [static, private]

Definition at line 127 of file qgssvgcache.h.

Referenced by svgAsImage(), and trimToMaximumSize().

long QgsSvgCache::mTotalSize [private]

Estimated total size of all images, pictures and svgContent.

Definition at line 119 of file qgssvgcache.h.

Referenced by cacheImage(), cachePicture(), printEntryList(), replaceParamsAndCacheSvg(), and trimToMaximumSize().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines