summaryrefslogtreecommitdiff
path: root/utils/themeeditor/graphics
diff options
context:
space:
mode:
Diffstat (limited to 'utils/themeeditor/graphics')
-rw-r--r--utils/themeeditor/graphics/rbfont.cpp29
-rw-r--r--utils/themeeditor/graphics/rbfontcache.cpp24
-rw-r--r--utils/themeeditor/graphics/rbfontcache.h48
-rw-r--r--utils/themeeditor/graphics/rbviewport.h6
4 files changed, 101 insertions, 6 deletions
diff --git a/utils/themeeditor/graphics/rbfont.cpp b/utils/themeeditor/graphics/rbfont.cpp
index 07308fac7e..cd68af99fe 100644
--- a/utils/themeeditor/graphics/rbfont.cpp
+++ b/utils/themeeditor/graphics/rbfont.cpp
@@ -20,6 +20,7 @@
20 ****************************************************************************/ 20 ****************************************************************************/
21 21
22#include "rbfont.h" 22#include "rbfont.h"
23#include "rbfontcache.h"
23 24
24#include <QFont> 25#include <QFont>
25#include <QBrush> 26#include <QBrush>
@@ -29,6 +30,8 @@
29#include <QImage> 30#include <QImage>
30#include <QSettings> 31#include <QSettings>
31 32
33#include <QDebug>
34
32quint16 RBFont::maxFontSizeFor16BitOffsets = 0xFFDB; 35quint16 RBFont::maxFontSizeFor16BitOffsets = 0xFFDB;
33 36
34RBFont::RBFont(QString file) 37RBFont::RBFont(QString file)
@@ -52,6 +55,18 @@ RBFont::RBFont(QString file)
52 } 55 }
53 header.insert("filename", file); 56 header.insert("filename", file);
54 57
58 /* Checking for a cache entry */
59 RBFontCache::CacheInfo* cache = RBFontCache::lookup(file);
60 if(cache)
61 {
62 imageData = cache->imageData;
63 offsetData = cache->offsetData;
64 widthData = cache->widthData;
65 header = cache->header;
66
67 return;
68 }
69
55 /* Opening the file */ 70 /* Opening the file */
56 QFile fin(file); 71 QFile fin(file);
57 fin.open(QFile::ReadOnly); 72 fin.open(QFile::ReadOnly);
@@ -134,16 +149,18 @@ RBFont::RBFont(QString file)
134 149
135 fin.close(); 150 fin.close();
136 151
152 /* Caching the font data */
153 cache = new RBFontCache::CacheInfo;
154 cache->imageData = imageData;
155 cache->offsetData = offsetData;
156 cache->widthData = widthData;
157 cache->header = header;
158 RBFontCache::insert(file, cache);
159
137} 160}
138 161
139RBFont::~RBFont() 162RBFont::~RBFont()
140{ 163{
141 if(imageData)
142 delete[] imageData;
143 if(offsetData)
144 delete[] offsetData;
145 if(widthData)
146 delete[] widthData;
147} 164}
148 165
149RBText* RBFont::renderText(QString text, QColor color, int viewWidth, 166RBText* RBFont::renderText(QString text, QColor color, int viewWidth,
diff --git a/utils/themeeditor/graphics/rbfontcache.cpp b/utils/themeeditor/graphics/rbfontcache.cpp
new file mode 100644
index 0000000000..3b6d56fd58
--- /dev/null
+++ b/utils/themeeditor/graphics/rbfontcache.cpp
@@ -0,0 +1,24 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2010 Robert Bieber
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
22#include "rbfontcache.h"
23
24QHash<QString, RBFontCache::CacheInfo*> RBFontCache::cache;
diff --git a/utils/themeeditor/graphics/rbfontcache.h b/utils/themeeditor/graphics/rbfontcache.h
new file mode 100644
index 0000000000..50a6d2ec48
--- /dev/null
+++ b/utils/themeeditor/graphics/rbfontcache.h
@@ -0,0 +1,48 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2010 Robert Bieber
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
22#ifndef RBFONTCACHE_H
23#define RBFONTCACHE_H
24
25#include <QHash>
26
27class RBFontCache
28{
29
30public:
31 struct CacheInfo
32 {
33 quint8* imageData;
34 quint16* offsetData;
35 quint8* widthData;
36
37 QHash<QString, QVariant> header;
38 };
39
40 static CacheInfo* lookup(QString key){ return cache.value(key, 0); }
41 static void insert(QString key, CacheInfo* data){ cache.insert(key, data); }
42
43private:
44 static QHash<QString, CacheInfo*> cache;
45
46};
47
48#endif // RBFONTCACHE_H
diff --git a/utils/themeeditor/graphics/rbviewport.h b/utils/themeeditor/graphics/rbviewport.h
index 81841d5cfa..c557632a40 100644
--- a/utils/themeeditor/graphics/rbviewport.h
+++ b/utils/themeeditor/graphics/rbviewport.h
@@ -60,6 +60,12 @@ public:
60 void alignText(Alignment align){ textAlign = align; } 60 void alignText(Alignment align){ textAlign = align; }
61 int getTextOffset(){ return textOffset.y(); } 61 int getTextOffset(){ return textOffset.y(); }
62 void addTextOffset(int height){ textOffset.setY(textOffset.y() + height); } 62 void addTextOffset(int height){ textOffset.setY(textOffset.y() + height); }
63 void flushText()
64 {
65 alignLeft();
66 alignRight();
67 alignCenter();
68 }
63 69
64 void enableStatusBar(){ showStatusBar = true; } 70 void enableStatusBar(){ showStatusBar = true; }
65 71