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