|
QGIS API Documentation
master-59fd5e0
|
A cache for images / pictures derived from svg files. More...
#include <qgssvgcache.h>
Collaboration diagram for QgsSvgCache: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 QgsSvgCache * | instance () |
Protected Member Functions | |
| QgsSvgCache (QObject *parent=0) | |
| protected constructor | |
| QgsSvgCacheEntry * | cacheEntry (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) |
| QgsSvgCacheEntry * | insertSVG (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. | |
| QgsSvgCacheEntry * | mLeastRecentEntry |
| QgsSvgCacheEntry * | mMostRecentEntry |
| long | mTotalSize |
| Estimated total size of all images, pictures and svgContent. | |
Static Private Attributes | |
| static QgsSvgCache * | mInstance = 0 |
| static const long | mMaximumSize = 20000000 |
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.
Definition at line 101 of file qgssvgcache.cpp.
References mEntryLookup.
| QgsSvgCache::QgsSvgCache | ( | QObject * | parent = 0 | ) | [protected] |
| QgsSvgCacheEntry * QgsSvgCache::cacheEntry | ( | const QString & | file, |
| double | size, | ||
| const QColor & | fill, | ||
| const QColor & | outline, | ||
| double | outlineWidth, | ||
| double | widthScaleFactor, | ||
| double | rasterScaleFactor | ||
| ) | [protected] |
Returns entry from cache or creates a new entry if it does not exist already.
Definition at line 442 of file qgssvgcache.cpp.
References QgsSvgCacheEntry::file, QgsSvgCacheEntry::fill, insertSVG(), mEntryLookup, mLeastRecentEntry, mMostRecentEntry, QgsSvgCacheEntry::nextEntry, QgsSvgCacheEntry::outline, QgsSvgCacheEntry::outlineWidth, QgsSvgCacheEntry::previousEntry, qgsDoubleNear(), QgsSvgCacheEntry::rasterScaleFactor, rasterScaleFactor, QgsSvgCacheEntry::size, takeEntryFromList(), and QgsSvgCacheEntry::widthScaleFactor.
Referenced by svgAsImage(), and svgAsPicture().
| void QgsSvgCache::cacheImage | ( | QgsSvgCacheEntry * | entry | ) | [protected] |
Definition at line 349 of file qgssvgcache.cpp.
References QgsSvgCacheEntry::image, mTotalSize, QgsSvgCacheEntry::size, and QgsSvgCacheEntry::svgContent.
Referenced by svgAsImage().
| void QgsSvgCache::cachePicture | ( | QgsSvgCacheEntry * | entry | ) | [protected] |
Definition at line 398 of file qgssvgcache.cpp.
References mTotalSize, QgsSvgCacheEntry::picture, qgsDoubleNear(), QgsSvgCacheEntry::rasterScaleFactor, QgsSvgCacheEntry::size, QgsSvgCacheEntry::svgContent, and QgsSvgCacheEntry::widthScaleFactor.
Referenced by svgAsImage(), and svgAsPicture().
| void QgsSvgCache::containsElemParams | ( | const QDomElement & | elem, |
| bool & | hasFillParam, | ||
| QColor & | defaultFill, | ||
| bool & | hasOutlineParam, | ||
| QColor & | defaultOutline, | ||
| bool & | hasOutlineWidthParam, | ||
| double & | defaultOutlineWidth | ||
| ) | const [private] |
Definition at line 568 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 734 of file qgssvgcache.cpp.
References QgsDebugMsg, statusChanged(), and tr.
Referenced by getImageData().
| QByteArray QgsSvgCache::getImageData | ( | const QString & | path | ) | const |
Get image data.
Definition at line 234 of file qgssvgcache.cpp.
References downloadProgress(), instance(), QgsMessageLog::logMessage(), QgsDebugMsg, and tr.
Referenced by containsParams(), replaceParamsAndCacheSvg(), and QgsSVGFillSymbolLayer::setSvgFilePath().
| 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().
| QgsSvgCache * QgsSvgCache::instance | ( | ) | [static] |
Definition at line 84 of file qgssvgcache.cpp.
References mInstance, and QgsSvgCache().
Referenced by QgsSVGFillSymbolLayer::applyPattern(), QgsSvgMarkerSymbolLayerV2::create(), QgsSvgSelectorListModel::data(), QgsSvgListModel::data(), getImageData(), QgsSvgMarkerSymbolLayerV2::renderPoint(), QgsSVGFillSymbolLayer::setDefaultSvgParams(), QgsSvgMarkerSymbolLayerV2Widget::setGuiForSvg(), QgsSvgMarkerSymbolLayerV2::setPath(), QgsSVGFillSymbolLayer::setSvgFilePath(), and QgsSVGFillSymbolLayerWidget::updateParamGui().
| void QgsSvgCache::printEntryList | ( | ) | [private] |
For debugging.
Definition at line 678 of file qgssvgcache.cpp.
References QgsSvgCacheEntry::file, mLeastRecentEntry, mTotalSize, QgsSvgCacheEntry::nextEntry, QgsDebugMsg, QgsSvgCacheEntry::rasterScaleFactor, QgsSvgCacheEntry::size, and QgsSvgCacheEntry::widthScaleFactor.
| void QgsSvgCache::removeCacheEntry | ( | QString | s, |
| QgsSvgCacheEntry * | entry | ||
| ) | [private] |
Release memory and remove cache entry from mEntryLookup.
Definition at line 672 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 490 of file qgssvgcache.cpp.
Referenced by replaceParamsAndCacheSvg().
| void QgsSvgCache::replaceParamsAndCacheSvg | ( | QgsSvgCacheEntry * | entry | ) | [protected] |
Definition at line 213 of file qgssvgcache.cpp.
References QgsSvgCacheEntry::file, QgsSvgCacheEntry::fill, getImageData(), mTotalSize, QgsSvgCacheEntry::outline, QgsSvgCacheEntry::outlineWidth, replaceElemParams(), and QgsSvgCacheEntry::svgContent.
Referenced by insertSVG().
| 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 | ||
| ) |
Definition at line 111 of file qgssvgcache.cpp.
References cacheEntry(), cacheImage(), cachePicture(), QgsSvgCacheEntry::image, mMaximumSize, QgsSvgCacheEntry::size, QgsSvgCacheEntry::svgContent, and trimToMaximumSize().
Referenced by QgsSVGFillSymbolLayer::applyPattern(), QgsSvgSelectorListModel::data(), QgsSvgListModel::data(), and QgsSvgMarkerSymbolLayerV2::renderPoint().
| const QPicture & QgsSvgCache::svgAsPicture | ( | const QString & | file, |
| double | size, | ||
| const QColor & | fill, | ||
| const QColor & | outline, | ||
| double | outlineWidth, | ||
| double | widthScaleFactor, | ||
| double | rasterScaleFactor | ||
| ) |
Definition at line 151 of file qgssvgcache.cpp.
References cacheEntry(), cachePicture(), QgsSvgCacheEntry::picture, and trimToMaximumSize().
Referenced by QgsSVGFillSymbolLayer::applyPattern(), and QgsSvgMarkerSymbolLayerV2::renderPoint().
| void QgsSvgCache::takeEntryFromList | ( | QgsSvgCacheEntry * | entry | ) | [protected] |
Definition at line 709 of file qgssvgcache.cpp.
References mLeastRecentEntry, mMostRecentEntry, QgsSvgCacheEntry::nextEntry, and QgsSvgCacheEntry::previousEntry.
Referenced by cacheEntry(), and trimToMaximumSize().
| void QgsSvgCache::trimToMaximumSize | ( | ) | [protected] |
Removes the least used items until the maximum size is under the limit.
Definition at line 694 of file qgssvgcache.cpp.
References QgsSvgCacheEntry::dataSize(), QgsSvgCacheEntry::file, mEntryLookup, mLeastRecentEntry, mMaximumSize, mTotalSize, QgsSvgCacheEntry::nextEntry, and takeEntryFromList().
Referenced by insertSVG(), svgAsImage(), and svgAsPicture().
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().
QgsSvgCacheEntry* QgsSvgCache::mLeastRecentEntry [private] |
Definition at line 123 of file qgssvgcache.h.
Referenced by cacheEntry(), insertSVG(), printEntryList(), takeEntryFromList(), and trimToMaximumSize().
const long QgsSvgCache::mMaximumSize = 20000000 [static, private] |
Definition at line 127 of file qgssvgcache.h.
Referenced by svgAsImage(), and trimToMaximumSize().
QgsSvgCacheEntry* QgsSvgCache::mMostRecentEntry [private] |
Definition at line 124 of file qgssvgcache.h.
Referenced by cacheEntry(), insertSVG(), and takeEntryFromList().
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().