1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
#include "bitfont.h"
Bitfont::Bitfont(TQString fontname, uchar firstChar, uchar lastChar)
{
if (!fontname.isEmpty())
font.load(fontname);
if (font.width() == font.height()) {
fontWidth = fontHeight = font.width() / 16;
fontFirstChar = 1;
fontLastChar = 255;
} else {
fontWidth = font.width()/(lastChar-firstChar+1);
fontHeight = font.height();
fontFirstChar = firstChar;
fontLastChar = lastChar;
}
}
TQRect Bitfont::rect(TQString str)
{
return TQRect(0, 0, str.length()*fontWidth, fontHeight);
}
TQPixmap Bitfont::text(TQString str, TQColor fg, TQColor bg)
{
TQPixmap FG(str.length()*fontWidth, fontHeight);
TQBitmap MASK(str.length()*fontWidth, fontHeight, TRUE);
const uchar *s = reinterpret_cast<const unsigned char *>(str.latin1());
for (uint i = 0; i < str.length(); i++) {
if (font.width() == font.height())
bitBlt(&MASK, i*fontWidth, 0, &font,
(*s%16)*fontWidth, (*s/16)*fontWidth, fontWidth, fontHeight);
else
if (*s >= fontFirstChar && *s <= fontLastChar)
bitBlt(&MASK, i*fontWidth, 0, &font,
(*s-fontFirstChar)*fontWidth, 0, fontWidth, fontHeight);
s++;
}
FG.fill(fg);
FG.setMask(MASK);
if (bg.isValid()) {
TQPixmap BG(str.length()*fontWidth, fontHeight);
BG.fill(bg);
bitBlt(&BG, 0, 0, &FG);
return BG;
} else
return FG;
}
uchar Bitfont::firstChar()
{
return fontFirstChar;
}
uchar Bitfont::lastChar()
{
return fontLastChar;
}
int Bitfont::width()
{
return fontWidth;
}
int Bitfont::height()
{
return fontHeight;
}
|