diff options
Diffstat (limited to 'utils/themeeditor/graphics')
-rw-r--r-- | utils/themeeditor/graphics/rbfont.cpp | 29 | ||||
-rw-r--r-- | utils/themeeditor/graphics/rbfontcache.cpp | 24 | ||||
-rw-r--r-- | utils/themeeditor/graphics/rbfontcache.h | 48 | ||||
-rw-r--r-- | utils/themeeditor/graphics/rbviewport.h | 6 |
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 | |||
32 | quint16 RBFont::maxFontSizeFor16BitOffsets = 0xFFDB; | 35 | quint16 RBFont::maxFontSizeFor16BitOffsets = 0xFFDB; |
33 | 36 | ||
34 | RBFont::RBFont(QString file) | 37 | RBFont::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 | ||
139 | RBFont::~RBFont() | 162 | RBFont::~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 | ||
149 | RBText* RBFont::renderText(QString text, QColor color, int viewWidth, | 166 | RBText* 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 | |||
24 | QHash<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 | |||
27 | class RBFontCache | ||
28 | { | ||
29 | |||
30 | public: | ||
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 | |||
43 | private: | ||
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 | ||