More work on the bitmap font.
This commit is contained in:
parent
77bac7216c
commit
cb64ff229a
Notes:
sideshowbarker
2024-07-19 18:51:13 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/cb64ff229ac
3 changed files with 570 additions and 48 deletions
Widgets
|
@ -22,8 +22,9 @@ void Label::setText(String&& text)
|
|||
void Label::onPaint(PaintEvent&)
|
||||
{
|
||||
Painter painter(*this);
|
||||
painter.fillRect({ 0, 0, width(), height() }, Color(0xc0, 0xc0, 0xc0));
|
||||
painter.drawText({ 4, 4 }, text());
|
||||
painter.fillRect({ 0, 0, width(), height() }, Color(0x0, 0x0, 0x0));
|
||||
if (!text().isEmpty())
|
||||
painter.drawText({ 4, 4 }, text(), Color(0xff, 0xff, 0xff));
|
||||
}
|
||||
|
||||
void Label::onMouseMove(MouseEvent& event)
|
||||
|
|
|
@ -34,14 +34,243 @@ void Painter::fillRect(const Rect& rect, Color color)
|
|||
}
|
||||
}
|
||||
|
||||
const char* peanut8x7[] {
|
||||
char firstPeanutChar = '(';
|
||||
|
||||
const char* peanut8x8[] {
|
||||
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" ",
|
||||
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" # "
|
||||
" ##### "
|
||||
" # "
|
||||
" # # "
|
||||
" "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" # "
|
||||
" # "
|
||||
" ##### "
|
||||
" # "
|
||||
" # "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" ## "
|
||||
" ## "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" ##### "
|
||||
" "
|
||||
" "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" ## "
|
||||
" ## "
|
||||
" ",
|
||||
|
||||
" # "
|
||||
" ## "
|
||||
" ## "
|
||||
" ## "
|
||||
" ## "
|
||||
" ## "
|
||||
" # "
|
||||
" ",
|
||||
|
||||
" #### "
|
||||
" # ## "
|
||||
" # # # "
|
||||
" # # # "
|
||||
" # # # "
|
||||
" ## # "
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" # "
|
||||
" ## "
|
||||
" # # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" ### "
|
||||
" ",
|
||||
|
||||
" #### "
|
||||
" # # "
|
||||
" # # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" ###### "
|
||||
" ",
|
||||
|
||||
" ###### "
|
||||
" # "
|
||||
" # "
|
||||
" ### "
|
||||
" # "
|
||||
" # # "
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" ### "
|
||||
" # # "
|
||||
" # # "
|
||||
" ###### "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" ",
|
||||
|
||||
" ###### "
|
||||
" # "
|
||||
" # "
|
||||
" ##### "
|
||||
" # "
|
||||
" # # "
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" ## "
|
||||
" ## "
|
||||
" # "
|
||||
" ##### "
|
||||
" # # "
|
||||
" # # "
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" ###### "
|
||||
" # # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" ",
|
||||
|
||||
" #### "
|
||||
" # # "
|
||||
" # # "
|
||||
" #### "
|
||||
" # # "
|
||||
" # # "
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" #### "
|
||||
" # # "
|
||||
" # # "
|
||||
" ##### "
|
||||
" # "
|
||||
" ## "
|
||||
" ## "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" ## "
|
||||
" ## "
|
||||
" "
|
||||
" ## "
|
||||
" ## "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" ## "
|
||||
" ## "
|
||||
" "
|
||||
" ## "
|
||||
" ## "
|
||||
" ",
|
||||
|
||||
" ## "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" ## "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" ###### "
|
||||
" "
|
||||
" ###### "
|
||||
" "
|
||||
" "
|
||||
" ",
|
||||
|
||||
" ## "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" ## "
|
||||
" ",
|
||||
|
||||
" #### "
|
||||
" # # "
|
||||
" # "
|
||||
" # "
|
||||
" ## "
|
||||
" "
|
||||
" ## "
|
||||
" ",
|
||||
|
||||
" #### "
|
||||
" # # "
|
||||
" # ### "
|
||||
" # # # "
|
||||
" # ### "
|
||||
" # "
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" #### "
|
||||
" # # "
|
||||
" # # "
|
||||
" ###### "
|
||||
" # # "
|
||||
" # # "
|
||||
"### ###",
|
||||
"### ###"
|
||||
" ",
|
||||
|
||||
" ##### "
|
||||
" # # "
|
||||
|
@ -49,7 +278,8 @@ const char* peanut8x7[] {
|
|||
" ###### "
|
||||
" # # "
|
||||
" # # "
|
||||
" ##### ",
|
||||
" ##### "
|
||||
" ",
|
||||
|
||||
" #### "
|
||||
" # # "
|
||||
|
@ -57,7 +287,8 @@ const char* peanut8x7[] {
|
|||
" # "
|
||||
" # "
|
||||
" # # "
|
||||
" #### ",
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" ##### "
|
||||
" # # "
|
||||
|
@ -65,23 +296,26 @@ const char* peanut8x7[] {
|
|||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" ##### ",
|
||||
" ##### "
|
||||
" ",
|
||||
|
||||
" ###### "
|
||||
" # # "
|
||||
" # "
|
||||
" #### "
|
||||
" # "
|
||||
" # # "
|
||||
" ###### ",
|
||||
" # # "
|
||||
" # "
|
||||
" #### "
|
||||
" # "
|
||||
" # # "
|
||||
" ###### "
|
||||
" ",
|
||||
|
||||
" ###### "
|
||||
" # # "
|
||||
" # "
|
||||
" #### "
|
||||
" # "
|
||||
" # "
|
||||
" # ",
|
||||
" # # "
|
||||
" # "
|
||||
" ### "
|
||||
" # "
|
||||
" # "
|
||||
" ### "
|
||||
" ",
|
||||
|
||||
" #### "
|
||||
" # # "
|
||||
|
@ -89,7 +323,8 @@ const char* peanut8x7[] {
|
|||
" # ###"
|
||||
" # # "
|
||||
" # # "
|
||||
" #### ",
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" # # "
|
||||
" # # "
|
||||
|
@ -97,7 +332,8 @@ const char* peanut8x7[] {
|
|||
" ###### "
|
||||
" # # "
|
||||
" # # "
|
||||
" # # ",
|
||||
" # # "
|
||||
" ",
|
||||
|
||||
" ### "
|
||||
" # "
|
||||
|
@ -105,7 +341,8 @@ const char* peanut8x7[] {
|
|||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" ### ",
|
||||
" ### "
|
||||
" ",
|
||||
|
||||
" ##### "
|
||||
" # # "
|
||||
|
@ -113,7 +350,8 @@ const char* peanut8x7[] {
|
|||
" # "
|
||||
" # "
|
||||
" # # "
|
||||
" ### ",
|
||||
" ### "
|
||||
" ",
|
||||
|
||||
" ### ###"
|
||||
" # # "
|
||||
|
@ -121,7 +359,8 @@ const char* peanut8x7[] {
|
|||
" ### "
|
||||
" # # "
|
||||
" # # "
|
||||
" ### ###",
|
||||
" ### ###"
|
||||
" ",
|
||||
|
||||
" ### "
|
||||
" # "
|
||||
|
@ -129,7 +368,8 @@ const char* peanut8x7[] {
|
|||
" # "
|
||||
" # "
|
||||
" # # "
|
||||
" ###### ",
|
||||
" ###### "
|
||||
" ",
|
||||
|
||||
" # # "
|
||||
" ## ## "
|
||||
|
@ -137,7 +377,8 @@ const char* peanut8x7[] {
|
|||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
"### ###",
|
||||
"### ###"
|
||||
" ",
|
||||
|
||||
" # # "
|
||||
" ## # "
|
||||
|
@ -145,7 +386,8 @@ const char* peanut8x7[] {
|
|||
" # # # "
|
||||
" # ## "
|
||||
" # # "
|
||||
" # # ",
|
||||
" # # "
|
||||
" ",
|
||||
|
||||
" #### "
|
||||
" # # "
|
||||
|
@ -153,7 +395,8 @@ const char* peanut8x7[] {
|
|||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" #### ",
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" ##### "
|
||||
" # # "
|
||||
|
@ -161,7 +404,8 @@ const char* peanut8x7[] {
|
|||
" #### "
|
||||
" # "
|
||||
" # "
|
||||
" ### ",
|
||||
" ### "
|
||||
" ",
|
||||
|
||||
" #### "
|
||||
" # # "
|
||||
|
@ -169,7 +413,8 @@ const char* peanut8x7[] {
|
|||
" # # "
|
||||
" # # # "
|
||||
" # # "
|
||||
" ### # ",
|
||||
" ### # "
|
||||
" ",
|
||||
|
||||
" ##### "
|
||||
" # # "
|
||||
|
@ -177,7 +422,8 @@ const char* peanut8x7[] {
|
|||
" #### "
|
||||
" # # "
|
||||
" # # "
|
||||
" ### # ",
|
||||
" ### # "
|
||||
" ",
|
||||
|
||||
" #### "
|
||||
" # # "
|
||||
|
@ -185,15 +431,17 @@ const char* peanut8x7[] {
|
|||
" #### "
|
||||
" # "
|
||||
" # # "
|
||||
" #### ",
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" ##### "
|
||||
"####### "
|
||||
"# # # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" ### ",
|
||||
" ### "
|
||||
" ",
|
||||
|
||||
"### ###"
|
||||
" # # "
|
||||
|
@ -201,7 +449,8 @@ const char* peanut8x7[] {
|
|||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" #### ",
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
"### ### "
|
||||
" # # "
|
||||
|
@ -209,7 +458,8 @@ const char* peanut8x7[] {
|
|||
" # # "
|
||||
" # # "
|
||||
" # "
|
||||
" # ",
|
||||
" # "
|
||||
" ",
|
||||
|
||||
"### ###"
|
||||
" # # "
|
||||
|
@ -217,7 +467,8 @@ const char* peanut8x7[] {
|
|||
" # # "
|
||||
" # ## # "
|
||||
" ## ## "
|
||||
" # # ",
|
||||
" # # "
|
||||
" ",
|
||||
|
||||
"## ## "
|
||||
" # # "
|
||||
|
@ -225,15 +476,17 @@ const char* peanut8x7[] {
|
|||
" # "
|
||||
" # # "
|
||||
" # # "
|
||||
"## ## ",
|
||||
"## ## "
|
||||
" ",
|
||||
|
||||
"## ## "
|
||||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" # "
|
||||
" # "
|
||||
" ### ",
|
||||
" # "
|
||||
" ### "
|
||||
" ",
|
||||
|
||||
" ###### "
|
||||
" # # "
|
||||
|
@ -241,7 +494,8 @@ const char* peanut8x7[] {
|
|||
" # "
|
||||
" # "
|
||||
" # # "
|
||||
" ###### ",
|
||||
" ###### "
|
||||
" ",
|
||||
|
||||
" #### "
|
||||
" # "
|
||||
|
@ -249,7 +503,8 @@ const char* peanut8x7[] {
|
|||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" #### ",
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" # "
|
||||
" ## "
|
||||
|
@ -257,7 +512,8 @@ const char* peanut8x7[] {
|
|||
" ## "
|
||||
" ## "
|
||||
" ## "
|
||||
" # ",
|
||||
" # "
|
||||
" ",
|
||||
|
||||
" #### "
|
||||
" # "
|
||||
|
@ -265,8 +521,270 @@ const char* peanut8x7[] {
|
|||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" # "
|
||||
" # # "
|
||||
" # # "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" ###### "
|
||||
" ",
|
||||
|
||||
" ## "
|
||||
" ## "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" #### "
|
||||
" # # "
|
||||
" # # "
|
||||
" # ## "
|
||||
" ### # "
|
||||
" ",
|
||||
|
||||
" # "
|
||||
" # "
|
||||
" ##### "
|
||||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" ##### "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" #### "
|
||||
" # # "
|
||||
" # "
|
||||
" # # "
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" # "
|
||||
" # "
|
||||
" ##### "
|
||||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" ##### "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" #### "
|
||||
" # # "
|
||||
" ###### "
|
||||
" # "
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" ### "
|
||||
" # "
|
||||
" #### "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" ### "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" #### "
|
||||
" # # "
|
||||
" # # "
|
||||
" #### "
|
||||
" # "
|
||||
" #### ",
|
||||
|
||||
" # "
|
||||
" # "
|
||||
" ##### "
|
||||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" ",
|
||||
|
||||
" # "
|
||||
" "
|
||||
" ### "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" ### "
|
||||
" ",
|
||||
|
||||
" # "
|
||||
" "
|
||||
" ### "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" ## ",
|
||||
|
||||
"### "
|
||||
" # "
|
||||
" # ## "
|
||||
" # # "
|
||||
" ## # "
|
||||
" # # "
|
||||
"### # "
|
||||
" ",
|
||||
|
||||
" ## "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" ### "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" ## ## "
|
||||
" # # #"
|
||||
" # # #"
|
||||
" # #"
|
||||
" # #"
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" ##### "
|
||||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" #### "
|
||||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" ##### "
|
||||
" # # "
|
||||
" # # "
|
||||
" ##### "
|
||||
" # "
|
||||
"### ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" ##### "
|
||||
" # # "
|
||||
" # # "
|
||||
" ##### "
|
||||
" # "
|
||||
" ###",
|
||||
|
||||
" "
|
||||
" "
|
||||
" #### "
|
||||
" # # "
|
||||
" # "
|
||||
" # "
|
||||
"### "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" #### "
|
||||
" ## # "
|
||||
" ## "
|
||||
" # ## "
|
||||
" #### "
|
||||
" ",
|
||||
|
||||
" # "
|
||||
" # "
|
||||
" #### "
|
||||
" # "
|
||||
" # "
|
||||
" # "
|
||||
" ### "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" #### #"
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" ## "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" # # #"
|
||||
" # # #"
|
||||
" # # #"
|
||||
" # # #"
|
||||
" ## ###"
|
||||
" ",
|
||||
|
||||
|
||||
" "
|
||||
" "
|
||||
" # # "
|
||||
" # # "
|
||||
" # "
|
||||
" # # "
|
||||
" # # "
|
||||
" ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" # # "
|
||||
" # # "
|
||||
" # # "
|
||||
" ##### "
|
||||
" # "
|
||||
" #### ",
|
||||
|
||||
" "
|
||||
" "
|
||||
" ###### "
|
||||
" # "
|
||||
" ## "
|
||||
" # "
|
||||
" ###### "
|
||||
" ",
|
||||
};
|
||||
|
||||
void Painter::drawText(const Point& point, const String& text, const Color& color)
|
||||
|
@ -275,14 +793,16 @@ void Painter::drawText(const Point& point, const String& text, const Color& colo
|
|||
p.moveBy(m_widget.x(), m_widget.y());
|
||||
|
||||
byte fontWidth = 8;
|
||||
byte fontHeight = 7;
|
||||
auto* font = peanut8x7;
|
||||
byte fontHeight = 8;
|
||||
auto* font = peanut8x8;
|
||||
|
||||
for (int row = 0; row < fontHeight; ++row) {
|
||||
int y = p.y() + row;
|
||||
dword* bits = scanline(y);
|
||||
for (unsigned i = 0; i < text.length(); ++i) {
|
||||
const char* fontCharacter = font[text[i] - 'A'];
|
||||
if (text[i] == ' ')
|
||||
continue;
|
||||
const char* fontCharacter = font[text[i] - firstPeanutChar];
|
||||
int x = p.x() + i * fontWidth;
|
||||
for (unsigned j = 0; j < fontWidth; ++j) {
|
||||
char fc = fontCharacter[row * fontWidth + j];
|
||||
|
|
|
@ -15,8 +15,9 @@ int main(int c, char** v)
|
|||
fb.setRootWidget(&w);
|
||||
|
||||
Label l(&w);
|
||||
l.setRect(Rect(100, 100, 300, 100));
|
||||
l.setText("ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]");
|
||||
l.setRect(Rect(100, 100, 600, 100));
|
||||
l.setText("()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz");
|
||||
//l.setText("Welcome to the Serenity Operating System");
|
||||
|
||||
return loop.exec();
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue