diff --git a/Widgets/Label.cpp b/Widgets/Label.cpp index 14f9448c52..ab761702bf 100644 --- a/Widgets/Label.cpp +++ b/Widgets/Label.cpp @@ -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) diff --git a/Widgets/Painter.cpp b/Widgets/Painter.cpp index 5f784c0770..3e382a2389 100644 --- a/Widgets/Painter.cpp +++ b/Widgets/Painter.cpp @@ -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]; diff --git a/Widgets/test.cpp b/Widgets/test.cpp index 0846ddc153..9b9b5a0c8a 100644 --- a/Widgets/test.cpp +++ b/Widgets/test.cpp @@ -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(); }