1 #include "SvgCache.h"
2
3 #include <QtCore/QMap>
4 #include <QtCore/QPair>
5 #include <QtGui/QPainter>
6 #include <QtSvg/QSvgRenderer>
7 #include <QFileInfo>
8 #include <QDebug>
9
getSVGImageFromFile(const QString & aName,int Size)10 QImage* getSVGImageFromFile(const QString& aName, int Size)
11 {
12 static QMap<QPair<QString, int>, QImage> Cache;
13 QPair<QString, int> Key(aName,Size);
14 if (!Cache.contains(Key))
15 {
16 QFileInfo fi(aName);
17 if (fi.suffix().toUpper() == "SVG") {
18 if (!Size)
19 Size = 16;
20 QImage result(Size, Size, QImage::Format_ARGB32_Premultiplied);
21 result.fill(Qt::transparent);
22 QPainter p(&result);
23 QSvgRenderer Monet(aName);
24 Monet.render(&p,QRectF(0,0,Size,Size));
25 Cache[Key] = result;
26 } else {
27 QImage result(aName);
28 if (Size)
29 result = result.scaledToWidth(Size);
30 Cache[Key] = result;
31 }
32 }
33 return &(Cache[Key]);
34 }
35
36