1
0
mirror of https://github.com/SerenityOS/serenity synced 2024-07-09 06:40:45 +00:00

Peanut8x8 can paint all the ASCII characters!

This commit is contained in:
Andreas Kling 2018-10-11 00:56:28 +02:00
parent cb64ff229a
commit e810120260
3 changed files with 877 additions and 759 deletions

View File

@ -3,6 +3,7 @@
#include "Widget.h"
#include <AK/Assertions.h>
#include <SDL.h>
#include "Peanut8x8.h"
Painter::Painter(Widget& widget)
: m_widget(widget)
@ -34,759 +35,6 @@ void Painter::fillRect(const Rect& rect, Color color)
}
}
char firstPeanutChar = '(';
const char* peanut8x8[] {
" # "
" # "
" # "
" # "
" # "
" # "
" # "
" ",
" # "
" # "
" # "
" # "
" # "
" # "
" # "
" ",
" "
" "
" # "
" ##### "
" # "
" # # "
" "
" ",
" "
" "
" # "
" # "
" ##### "
" # "
" # "
" ",
" "
" "
" "
" "
" "
" ## "
" ## "
" ",
" "
" "
" "
" "
" ##### "
" "
" "
" ",
" "
" "
" "
" "
" "
" ## "
" ## "
" ",
" # "
" ## "
" ## "
" ## "
" ## "
" ## "
" # "
" ",
" #### "
" # ## "
" # # # "
" # # # "
" # # # "
" ## # "
" #### "
" ",
" # "
" ## "
" # # "
" # "
" # "
" # "
" ### "
" ",
" #### "
" # # "
" # # "
" # "
" # "
" # "
" ###### "
" ",
" ###### "
" # "
" # "
" ### "
" # "
" # # "
" #### "
" ",
" ### "
" # # "
" # # "
" ###### "
" # "
" # "
" # "
" ",
" ###### "
" # "
" # "
" ##### "
" # "
" # # "
" #### "
" ",
" ## "
" ## "
" # "
" ##### "
" # # "
" # # "
" #### "
" ",
" ###### "
" # # "
" # "
" # "
" # "
" # "
" # "
" ",
" #### "
" # # "
" # # "
" #### "
" # # "
" # # "
" #### "
" ",
" #### "
" # # "
" # # "
" ##### "
" # "
" ## "
" ## "
" ",
" "
" "
" ## "
" ## "
" "
" ## "
" ## "
" ",
" "
" "
" ## "
" ## "
" "
" ## "
" ## "
" ",
" ## "
" # "
" # "
" # "
" # "
" # "
" ## "
" ",
" "
" "
" ###### "
" "
" ###### "
" "
" "
" ",
" ## "
" # "
" # "
" # "
" # "
" # "
" ## "
" ",
" #### "
" # # "
" # "
" # "
" ## "
" "
" ## "
" ",
" #### "
" # # "
" # ### "
" # # # "
" # ### "
" # "
" #### "
" ",
" #### "
" # # "
" # # "
" ###### "
" # # "
" # # "
"### ###"
" ",
" ##### "
" # # "
" # # "
" ###### "
" # # "
" # # "
" ##### "
" ",
" #### "
" # # "
" # "
" # "
" # "
" # # "
" #### "
" ",
" ##### "
" # # "
" # # "
" # # "
" # # "
" # # "
" ##### "
" ",
" ###### "
" # # "
" # "
" #### "
" # "
" # # "
" ###### "
" ",
" ###### "
" # # "
" # "
" ### "
" # "
" # "
" ### "
" ",
" #### "
" # # "
" # "
" # ###"
" # # "
" # # "
" #### "
" ",
" # # "
" # # "
" # # "
" ###### "
" # # "
" # # "
" # # "
" ",
" ### "
" # "
" # "
" # "
" # "
" # "
" ### "
" ",
" ##### "
" # # "
" # "
" # "
" # "
" # # "
" ### "
" ",
" ### ###"
" # # "
" # # "
" ### "
" # # "
" # # "
" ### ###"
" ",
" ### "
" # "
" # "
" # "
" # "
" # # "
" ###### "
" ",
" # # "
" ## ## "
" # ## # "
" # # "
" # # "
" # # "
"### ###"
" ",
" # # "
" ## # "
" # # # "
" # # # "
" # ## "
" # # "
" # # "
" ",
" #### "
" # # "
" # # "
" # # "
" # # "
" # # "
" #### "
" ",
" ##### "
" # # "
" # # "
" #### "
" # "
" # "
" ### "
" ",
" #### "
" # # "
" # # "
" # # "
" # # # "
" # # "
" ### # "
" ",
" ##### "
" # # "
" # # "
" #### "
" # # "
" # # "
" ### # "
" ",
" #### "
" # # "
" # "
" #### "
" # "
" # # "
" #### "
" ",
"####### "
"# # # "
" # "
" # "
" # "
" # "
" ### "
" ",
"### ###"
" # # "
" # # "
" # # "
" # # "
" # # "
" #### "
" ",
"### ### "
" # # "
" # # "
" # # "
" # # "
" # "
" # "
" ",
"### ###"
" # # "
" # # "
" # # "
" # ## # "
" ## ## "
" # # "
" ",
"## ## "
" # # "
" # # "
" # "
" # # "
" # # "
"## ## "
" ",
"## ## "
" # # "
" # # "
" # "
" # "
" # "
" ### "
" ",
" ###### "
" # # "
" # "
" # "
" # "
" # # "
" ###### "
" ",
" #### "
" # "
" # "
" # "
" # "
" # "
" #### "
" ",
" # "
" ## "
" ## "
" ## "
" ## "
" ## "
" # "
" ",
" #### "
" # "
" # "
" # "
" # "
" # "
" #### "
" ",
" # "
" # # "
" # # "
" "
" "
" "
" "
" ",
" "
" "
" "
" "
" "
" "
" ###### "
" ",
" ## "
" ## "
" "
" "
" "
" "
" "
" ",
" "
" "
" #### "
" # # "
" # # "
" # ## "
" ### # "
" ",
" # "
" # "
" ##### "
" # # "
" # # "
" # # "
" ##### "
" ",
" "
" "
" #### "
" # # "
" # "
" # # "
" #### "
" ",
" # "
" # "
" ##### "
" # # "
" # # "
" # # "
" ##### "
" ",
" "
" "
" #### "
" # # "
" ###### "
" # "
" #### "
" ",
" ### "
" # "
" #### "
" # "
" # "
" # "
" ### "
" ",
" "
" "
" #### "
" # # "
" # # "
" #### "
" # "
" #### ",
" # "
" # "
" ##### "
" # # "
" # # "
" # # "
" # # "
" ",
" # "
" "
" ### "
" # "
" # "
" # "
" ### "
" ",
" # "
" "
" ### "
" # "
" # "
" # "
" # "
" ## ",
"### "
" # "
" # ## "
" # # "
" ## # "
" # # "
"### # "
" ",
" ## "
" # "
" # "
" # "
" # "
" # "
" ### "
" ",
" "
" "
" ## ## "
" # # #"
" # # #"
" # #"
" # #"
" ",
" "
" "
" ##### "
" # # "
" # # "
" # # "
" # # "
" ",
" "
" "
" #### "
" # # "
" # # "
" # # "
" #### "
" ",
" "
" "
" ##### "
" # # "
" # # "
" ##### "
" # "
"### ",
" "
" "
" ##### "
" # # "
" # # "
" ##### "
" # "
" ###",
" "
" "
" #### "
" # # "
" # "
" # "
"### "
" ",
" "
" "
" #### "
" ## # "
" ## "
" # ## "
" #### "
" ",
" # "
" # "
" #### "
" # "
" # "
" # "
" ### "
" ",
" "
" "
" # # "
" # # "
" # # "
" # # "
" #### #"
" ",
" "
" "
" # # "
" # # "
" # # "
" # # "
" ## "
" ",
" "
" "
" # # #"
" # # #"
" # # #"
" # # #"
" ## ###"
" ",
" "
" "
" # # "
" # # "
" # "
" # # "
" # # "
" ",
" "
" "
" # # "
" # # "
" # # "
" ##### "
" # "
" #### ",
" "
" "
" ###### "
" # "
" ## "
" # "
" ###### "
" ",
};
void Painter::drawText(const Point& point, const String& text, const Color& color)
{
Point p = point;
@ -794,7 +42,6 @@ void Painter::drawText(const Point& point, const String& text, const Color& colo
byte fontWidth = 8;
byte fontHeight = 8;
auto* font = peanut8x8;
for (int row = 0; row < fontHeight; ++row) {
int y = p.y() + row;
@ -802,7 +49,7 @@ void Painter::drawText(const Point& point, const String& text, const Color& colo
for (unsigned i = 0; i < text.length(); ++i) {
if (text[i] == ' ')
continue;
const char* fontCharacter = font[text[i] - firstPeanutChar];
const char* fontCharacter = Peanut8x8::font[text[i] - Peanut8x8::firstCharacter];
int x = p.x() + i * fontWidth;
for (unsigned j = 0; j < fontWidth; ++j) {
char fc = fontCharacter[row * fontWidth + j];

858
Widgets/Peanut8x8.h Normal file
View File

@ -0,0 +1,858 @@
#pragma once
namespace Peanut8x8 {
static constexpr char firstCharacter = '!';
static constexpr const char* font[] {
" ## "
" ## "
" ## "
" ## "
" ## "
" "
" ## "
" ",
" ## ## "
" ## ## "
" # # "
" "
" "
" "
" "
" ",
" # # "
" # # "
" ###### "
" # # "
" ###### "
" # # "
" # # "
" ",
" #### "
" # # # "
" # # "
" #### "
" # # "
" # # # "
" #### "
" ",
" ## # "
" ## ## "
" ## "
" ## "
" ## "
" ## ## "
" # ## "
" ",
" "
" ## "
" # # "
" ### "
" # # #"
" # ## "
" ### #"
" ",
" ## "
" ## "
" # "
" "
" "
" "
" "
" ",
" # "
" # "
" # "
" # "
" # "
" # "
" # "
" ",
" # "
" # "
" # "
" # "
" # "
" # "
" # "
" ",
" "
" "
" # "
" ##### "
" # "
" # # "
" "
" ",
" "
" "
" # "
" # "
" ##### "
" # "
" # "
" ",
" "
" "
" "
" "
" "
" ## "
" ## "
" ",
" "
" "
" "
" "
" ##### "
" "
" "
" ",
" "
" "
" "
" "
" "
" ## "
" ## "
" ",
" # "
" ## "
" ## "
" ## "
" ## "
" ## "
" # "
" ",
" #### "
" # ## "
" # # # "
" # # # "
" # # # "
" ## # "
" #### "
" ",
" # "
" ## "
" # # "
" # "
" # "
" # "
" ### "
" ",
" #### "
" # # "
" # # "
" # "
" # "
" # "
" ###### "
" ",
" ###### "
" # "
" # "
" ### "
" # "
" # # "
" #### "
" ",
" ### "
" # # "
" # # "
" ###### "
" # "
" # "
" # "
" ",
" ###### "
" # "
" # "
" ##### "
" # "
" # # "
" #### "
" ",
" ## "
" ## "
" # "
" ##### "
" # # "
" # # "
" #### "
" ",
" ###### "
" # # "
" # "
" # "
" # "
" # "
" # "
" ",
" #### "
" # # "
" # # "
" #### "
" # # "
" # # "
" #### "
" ",
" #### "
" # # "
" # # "
" ##### "
" # "
" ## "
" ## "
" ",
" "
" "
" ## "
" ## "
" "
" ## "
" ## "
" ",
" "
" "
" ## "
" ## "
" "
" ## "
" ## "
" ",
" ## "
" # "
" # "
" # "
" # "
" # "
" ## "
" ",
" "
" "
" ###### "
" "
" ###### "
" "
" "
" ",
" ## "
" # "
" # "
" # "
" # "
" # "
" ## "
" ",
" #### "
" # # "
" # "
" # "
" ## "
" "
" ## "
" ",
" #### "
" # # "
" # ### "
" # # # "
" # ### "
" # "
" #### "
" ",
" #### "
" # # "
" # # "
" ###### "
" # # "
" # # "
"### ###"
" ",
" ##### "
" # # "
" # # "
" ###### "
" # # "
" # # "
" ##### "
" ",
" #### "
" # # "
" # "
" # "
" # "
" # # "
" #### "
" ",
" ##### "
" # # "
" # # "
" # # "
" # # "
" # # "
" ##### "
" ",
" ###### "
" # # "
" # "
" #### "
" # "
" # # "
" ###### "
" ",
" ###### "
" # # "
" # "
" ### "
" # "
" # "
" ### "
" ",
" #### "
" # # "
" # "
" # ###"
" # # "
" # # "
" #### "
" ",
" # # "
" # # "
" # # "
" ###### "
" # # "
" # # "
" # # "
" ",
" ### "
" # "
" # "
" # "
" # "
" # "
" ### "
" ",
" ##### "
" # # "
" # "
" # "
" # "
" # # "
" ### "
" ",
" ### ###"
" # # "
" # # "
" ### "
" # # "
" # # "
" ### ###"
" ",
" ### "
" # "
" # "
" # "
" # "
" # # "
" ###### "
" ",
" # # "
" ## ## "
" # ## # "
" # # "
" # # "
" # # "
"### ###"
" ",
" # # "
" ## # "
" # # # "
" # # # "
" # ## "
" # # "
" # # "
" ",
" #### "
" # # "
" # # "
" # # "
" # # "
" # # "
" #### "
" ",
" ##### "
" # # "
" # # "
" #### "
" # "
" # "
" ### "
" ",
" #### "
" # # "
" # # "
" # # "
" # # # "
" # # "
" ### # "
" ",
" ##### "
" # # "
" # # "
" #### "
" # # "
" # # "
" ### # "
" ",
" #### "
" # # "
" # "
" #### "
" # "
" # # "
" #### "
" ",
"####### "
"# # # "
" # "
" # "
" # "
" # "
" ### "
" ",
"### ###"
" # # "
" # # "
" # # "
" # # "
" # # "
" #### "
" ",
"### ### "
" # # "
" # # "
" # # "
" # # "
" # "
" # "
" ",
"### ###"
" # # "
" # # "
" # # "
" # ## # "
" ## ## "
" # # "
" ",
"## ## "
" # # "
" # # "
" # "
" # # "
" # # "
"## ## "
" ",
"## ## "
" # # "
" # # "
" # "
" # "
" # "
" ### "
" ",
" ###### "
" # # "
" # "
" # "
" # "
" # # "
" ###### "
" ",
" #### "
" # "
" # "
" # "
" # "
" # "
" #### "
" ",
" # "
" ## "
" ## "
" ## "
" ## "
" ## "
" # "
" ",
" #### "
" # "
" # "
" # "
" # "
" # "
" #### "
" ",
" # "
" # # "
" # # "
" "
" "
" "
" "
" ",
" "
" "
" "
" "
" "
" "
" ###### "
" ",
" ## "
" ## "
" "
" "
" "
" "
" "
" ",
" "
" "
" #### "
" # # "
" # # "
" # ## "
" ### # "
" ",
" # "
" # "
" ##### "
" # # "
" # # "
" # # "
" ##### "
" ",
" "
" "
" #### "
" # # "
" # "
" # # "
" #### "
" ",
" # "
" # "
" ##### "
" # # "
" # # "
" # # "
" ##### "
" ",
" "
" "
" #### "
" # # "
" ###### "
" # "
" #### "
" ",
" ### "
" # "
" #### "
" # "
" # "
" # "
" ### "
" ",
" "
" "
" #### "
" # # "
" # # "
" #### "
" # "
" #### ",
" # "
" # "
" ##### "
" # # "
" # # "
" # # "
" # # "
" ",
" # "
" "
" ### "
" # "
" # "
" # "
" ### "
" ",
" # "
" "
" ### "
" # "
" # "
" # "
" # "
" ## ",
"### "
" # "
" # ## "
" # # "
" ## # "
" # # "
"### # "
" ",
" ## "
" # "
" # "
" # "
" # "
" # "
" ### "
" ",
" "
" "
" ## ## "
" # # #"
" # # #"
" # #"
" # #"
" ",
" "
" "
" ##### "
" # # "
" # # "
" # # "
" # # "
" ",
" "
" "
" #### "
" # # "
" # # "
" # # "
" #### "
" ",
" "
" "
" ##### "
" # # "
" # # "
" ##### "
" # "
"### ",
" "
" "
" ##### "
" # # "
" # # "
" ##### "
" # "
" ###",
" "
" "
" #### "
" # # "
" # "
" # "
"### "
" ",
" "
" "
" #### "
" ## # "
" ## "
" # ## "
" #### "
" ",
" # "
" # "
" #### "
" # "
" # "
" # "
" ### "
" ",
" "
" "
" # # "
" # # "
" # # "
" # # "
" #### #"
" ",
" "
" "
" # # "
" # # "
" # # "
" # # "
" ## "
" ",
" "
" "
" # # #"
" # # #"
" # # #"
" # # #"
" ## ###"
" ",
" "
" "
" # # "
" # # "
" # "
" # # "
" # # "
" ",
" "
" "
" # # "
" # # "
" # # "
" ##### "
" # "
" #### ",
" "
" "
" ###### "
" # "
" ## "
" # "
" ###### "
" ",
" ### "
" # "
" # "
" # "
" # "
" # "
" ### "
" ",
" # "
" # "
" # "
" # "
" # "
" # "
" # "
" ",
" ### "
" # "
" # "
" # "
" # "
" # "
" ### "
" ",
" "
" "
" "
" ## # "
" # ## "
" "
" "
" ",
};
}

View File

@ -14,10 +14,23 @@ int main(int c, char** v)
RootWidget w;
fb.setRootWidget(&w);
Label l(&w);
l.setRect(Rect(100, 100, 600, 100));
l.setText("()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz");
//l.setText("Welcome to the Serenity Operating System");
auto* l1 = new Label(&w);
l1->setRect(Rect(100, 100, 300, 20));
l1->setText("0123456789");
auto* l2 = new Label(&w);
l2->setRect(Rect(100, 120, 300, 20));
l2->setText("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
auto* l3 = new Label(&w);
l3->setRect(Rect(100, 140, 300, 20));
l3->setText("abcdefghijklmnopqrstuvwxyz");
auto* l4 = new Label(&w);
l4->setRect(Rect(100, 160, 300, 20));
l4->setText("!\"#$%&'()*+,-./:;<=>?@[\\]^_{|}~");
//l5->setText("Welcome to the Serenity Operating System");
return loop.exec();
}