mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
lib refactoring
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@4599 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
parent
bf5cced60b
commit
c354ccab68
@ -1,96 +0,0 @@
|
||||
/***************************************************************************
|
||||
qgssvgcache.h - SVG rendering and pixmap caching
|
||||
-------------------
|
||||
begin : Sat Jul 17 2004
|
||||
copyright : (C) 2004 by Lars Luthman
|
||||
email : larsl at users dot sourceforge dot org
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
/* $Id$ */
|
||||
|
||||
#ifndef QGSSVGCACHE_H
|
||||
#define QGSSVGCACHE_H
|
||||
|
||||
#include <map>
|
||||
#include <queue>
|
||||
|
||||
#include <qpixmap.h>
|
||||
#include <q3picture.h>
|
||||
|
||||
|
||||
/** This class is a singleton that does all the SVG rendering in QGIS.
|
||||
When another part of the program needs to render an SVG file, it
|
||||
calls the getPixmap() function to get a pixmap rendering of that
|
||||
SVG file in the wanted scale. This class also does some extra
|
||||
tricks to make Qt's SVG renderings look a little bit better, and
|
||||
it caches the pixmaps to speed things up.
|
||||
*/
|
||||
class QgsSVGCache {
|
||||
public:
|
||||
|
||||
QgsSVGCache();
|
||||
|
||||
/** This function returns a pixmap containing a rendering of the SVG file
|
||||
@c filename scaled by the factor @c scaleFactor. The pixmaps background
|
||||
will be transparent, and if the file for some reason can't be rendered
|
||||
the pixmap will be completely transparent. */
|
||||
QPixmap getPixmap(QString filename, double scaleFactor);
|
||||
|
||||
/** Returns SVG picture in original size */
|
||||
Q3Picture getPicture(QString filename);
|
||||
|
||||
/** This function clears the pixmap cache and forces all newly requested
|
||||
pixmaps to be rendered again. Can be useful if the oversampling factor
|
||||
has changed and you want to get rid of cached lower-quality pixmaps. */
|
||||
void clear();
|
||||
|
||||
/** When a pixmap is requested and it is not in the cache, it will be
|
||||
loaded using a QPicture and rendered to a QPixmap. Since Qt does not do
|
||||
any kind of anti-aliasing or smoothing, the QPicture is first rendered
|
||||
to a pixmap that is larger than the requested size, and then it's scaled
|
||||
down using QImage::smoothScale() to smooth out sharp edges and lines.
|
||||
The oversampling factor determins how much larger the first pixmap is -
|
||||
the larger this factor is the smoother the final pixmap will look, but
|
||||
it will also take longer time to render and scale the image. This
|
||||
function sets the oversampling factor. It should be larger than or equal
|
||||
to 1.
|
||||
*/
|
||||
void setOversampling(int oversamplingFactor);
|
||||
|
||||
/** This function returns the oversampling factor.
|
||||
@see setOversampling()
|
||||
*/
|
||||
int getOversampling() const;
|
||||
|
||||
/** This function returns a reference to the singleton object. */
|
||||
static inline QgsSVGCache& instance();
|
||||
|
||||
protected:
|
||||
|
||||
typedef std::map<QString, Q3Picture> PictureMap;
|
||||
PictureMap pictureMap;
|
||||
|
||||
typedef std::map<std::pair<QString, double>, QPixmap> PixmapMap;
|
||||
PixmapMap pixmapMap;
|
||||
int oversampling;
|
||||
std::queue<PixmapMap::key_type> fifo;
|
||||
int pixelLimit;
|
||||
int totalPixels;
|
||||
|
||||
};
|
||||
|
||||
|
||||
QgsSVGCache& QgsSVGCache::instance() {
|
||||
static QgsSVGCache obj;
|
||||
return obj;
|
||||
}
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user