summaryrefslogtreecommitdiff
path: root/utils/themeeditor/graphics/rbfont.cpp
diff options
context:
space:
mode:
authorRobert Bieber <robby@bieberphoto.com>2010-07-07 08:41:36 +0000
committerRobert Bieber <robby@bieberphoto.com>2010-07-07 08:41:36 +0000
commit6f06793f58f520ec7d44683f6447c0b540a265b3 (patch)
tree94b76580cfc13903a55c10dc92318551eebf9788 /utils/themeeditor/graphics/rbfont.cpp
parent88145656fb9b3276893e617b21bc590bc49fe96a (diff)
downloadrockbox-6f06793f58f520ec7d44683f6447c0b540a265b3.zip
rockbox-6f06793f58f520ec7d44683f6447c0b540a265b3.tar.gz
rockbox-6f06793f58f520ec7d44683f6447c0b540a265b3.tar.bz2
rockbox-6f06793f58f520ec7d44683f6447c0b540a265b3.tar.xz
Theme Editor: Fixed rendering bug that caused text in sublines not to appear, implemented a global font cache
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27331 a1c6a512-1295-4272-9138-f99709370657
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,