summaryrefslogtreecommitdiff
path: root/utils/themeeditor/graphics/rbfont.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/themeeditor/graphics/rbfont.cpp')
-rw-r--r--utils/themeeditor/graphics/rbfont.cpp29
1 files changed, 23 insertions, 6 deletions
diff --git a/utils/themeeditor/graphics/rbfont.cpp b/utils/themeeditor/graphics/rbfont.cpp
index 07308fa..cd68af9 100644
--- a/utils/themeeditor/graphics/rbfont.cpp
+++ b/utils/themeeditor/graphics/rbfont.cpp
@@ -20,6 +20,7 @@
****************************************************************************/
#include "rbfont.h"
+#include "rbfontcache.h"
#include <QFont>
#include <QBrush>
@@ -29,6 +30,8 @@
#include <QImage>
#include <QSettings>
+#include <QDebug>
+
quint16 RBFont::maxFontSizeFor16BitOffsets = 0xFFDB;
RBFont::RBFont(QString file)
@@ -52,6 +55,18 @@ RBFont::RBFont(QString file)
}
header.insert("filename", file);
+ /* Checking for a cache entry */
+ RBFontCache::CacheInfo* cache = RBFontCache::lookup(file);
+ if(cache)
+ {
+ imageData = cache->imageData;
+ offsetData = cache->offsetData;
+ widthData = cache->widthData;
+ header = cache->header;
+
+ return;
+ }
+
/* Opening the file */
QFile fin(file);
fin.open(QFile::ReadOnly);
@@ -134,16 +149,18 @@ RBFont::RBFont(QString file)
fin.close();
+ /* Caching the font data */
+ cache = new RBFontCache::CacheInfo;
+ cache->imageData = imageData;
+ cache->offsetData = offsetData;
+ cache->widthData = widthData;
+ cache->header = header;
+ RBFontCache::insert(file, cache);
+
}
RBFont::~RBFont()
{
- if(imageData)
- delete[] imageData;
- if(offsetData)
- delete[] offsetData;
- if(widthData)
- delete[] widthData;
}
RBText* RBFont::renderText(QString text, QColor color, int viewWidth,