From 7666d4763be31ceb673136ed09bb6fb7ccdfd48a Mon Sep 17 00:00:00 2001 From: Egmont Koblinger Date: Sun, 23 Apr 2023 21:50:38 +0200 Subject: draw: Remove need to generate code Use user-defined string literals to move the box drawing data into the source code, instead of having a separate text file that gets turned into code from a generator. Fixes: https://gitlab.gnome.org/GNOME/vte/-/issues/2628 --- src/box-drawing.hh | 863 ++++++++++++++++++++++++++++++++++++++++++++ src/box_drawing.txt | 768 --------------------------------------- src/box_drawing_generate.sh | 69 ---- src/meson.build | 13 +- src/minifont.cc | 2 +- 5 files changed, 865 insertions(+), 850 deletions(-) create mode 100644 src/box-drawing.hh delete mode 100644 src/box_drawing.txt delete mode 100755 src/box_drawing_generate.sh diff --git a/src/box-drawing.hh b/src/box-drawing.hh new file mode 100644 index 00000000..282c0f8b --- /dev/null +++ b/src/box-drawing.hh @@ -0,0 +1,863 @@ +/* + * Copyright © 2014, 2023 Egmont Koblinger + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see . + */ + +#pragma once + +/* + * Define the user-defined literal suffix "_str2bin" which interprets a + * byte string as binary number. + * Even bytes (e.g. ' ', '.', '0') mean bit 0. + * Odd bytes (e.g. '#', '%', '1') mean bit 1. + */ +constexpr uint32_t operator""_str2bin(char const* str, + std::size_t len) +{ + auto val = uint32_t{0}; + while (*str) { + val = (val << 1) | (static_cast(*str) & 1); + ++str; + } + return val; +} + +/* + * Definition of most of the glyphs in the 2500..257F range as 5x5 bitmaps + * (bits 24..0 in the obvious order), see bug 709556 and ../doc/boxes.txt + */ +static constinit uint32_t const _vte_draw_box_drawing_bitmaps[128] = { + + /* U+2500 - BOX DRAWINGS LIGHT HORIZONTAL */ + " " + " " + "#####" + " " + " "_str2bin, + + /* U+2501 - BOX DRAWINGS HEAVY HORIZONTAL */ + " " + "#####" + "#####" + "#####" + " "_str2bin, + + /* U+2502 - BOX DRAWINGS LIGHT VERTICAL */ + " # " + " # " + " # " + " # " + " # "_str2bin, + + /* U+2503 - BOX DRAWINGS HEAVY VERTICAL */ + " ### " + " ### " + " ### " + " ### " + " ### "_str2bin, + + /* U+2504 - BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL */ + 0, /* not handled here */ + + /* U+2505 - BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL */ + 0, /* not handled here */ + + /* U+2506 - BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL */ + 0, /* not handled here */ + + /* U+2507 - BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL */ + 0, /* not handled here */ + + /* U+2508 - BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL */ + 0, /* not handled here */ + + /* U+2509 - BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL */ + 0, /* not handled here */ + + /* U+250A - BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL */ + 0, /* not handled here */ + + /* U+250B - BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL */ + 0, /* not handled here */ + + /* U+250C - BOX DRAWINGS LIGHT DOWN AND RIGHT */ + " " + " " + " ###" + " # " + " # "_str2bin, + + /* U+250D - BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY */ + " " + " ###" + " ###" + " ###" + " # "_str2bin, + + /* U+250E - BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT */ + " " + " " + " ####" + " ### " + " ### "_str2bin, + + /* U+250F - BOX DRAWINGS HEAVY DOWN AND RIGHT */ + " " + " ####" + " ####" + " ####" + " ### "_str2bin, + + /* U+2510 - BOX DRAWINGS LIGHT DOWN AND LEFT */ + " " + " " + "### " + " # " + " # "_str2bin, + + /* U+2511 - BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY */ + " " + "### " + "### " + "### " + " # "_str2bin, + + /* U+2512 - BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT */ + " " + " " + "#### " + " ### " + " ### "_str2bin, + + /* U+2513 - BOX DRAWINGS HEAVY DOWN AND LEFT */ + " " + "#### " + "#### " + "#### " + " ### "_str2bin, + + /* U+2514 - BOX DRAWINGS LIGHT UP AND RIGHT */ + " # " + " # " + " ###" + " " + " "_str2bin, + + /* U+2515 - BOX DRAWINGS UP LIGHT AND RIGHT HEAVY */ + " # " + " ###" + " ###" + " ###" + " "_str2bin, + + /* U+2516 - BOX DRAWINGS UP HEAVY AND RIGHT LIGHT */ + " ### " + " ### " + " ####" + " " + " "_str2bin, + + /* U+2517 - BOX DRAWINGS HEAVY UP AND RIGHT */ + " ### " + " ####" + " ####" + " ####" + " "_str2bin, + + /* U+2518 - BOX DRAWINGS LIGHT UP AND LEFT */ + " # " + " # " + "### " + " " + " "_str2bin, + + /* U+2519 - BOX DRAWINGS UP LIGHT AND LEFT HEAVY */ + " # " + "### " + "### " + "### " + " "_str2bin, + + /* U+251A - BOX DRAWINGS UP HEAVY AND LEFT LIGHT */ + " ### " + " ### " + "#### " + " " + " "_str2bin, + + /* U+251B - BOX DRAWINGS HEAVY UP AND LEFT */ + " ### " + "#### " + "#### " + "#### " + " "_str2bin, + + /* U+251C - BOX DRAWINGS LIGHT VERTICAL AND RIGHT */ + " # " + " # " + " ###" + " # " + " # "_str2bin, + + /* U+251D - BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY */ + " # " + " ###" + " ###" + " ###" + " # "_str2bin, + + /* U+251E - BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT */ + " ### " + " ### " + " ####" + " # " + " # "_str2bin, + + /* U+251F - BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT */ + " # " + " # " + " ####" + " ### " + " ### "_str2bin, + + /* U+2520 - BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT */ + " ### " + " ### " + " ####" + " ### " + " ### "_str2bin, + + /* U+2521 - BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY */ + " ### " + " ####" + " ####" + " ####" + " # "_str2bin, + + /* U+2522 - BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY */ + " # " + " ####" + " ####" + " ####" + " ### "_str2bin, + + /* U+2523 - BOX DRAWINGS HEAVY VERTICAL AND RIGHT */ + " ### " + " ####" + " ####" + " ####" + " ### "_str2bin, + + /* U+2524 - BOX DRAWINGS LIGHT VERTICAL AND LEFT */ + " # " + " # " + "### " + " # " + " # "_str2bin, + + /* U+2525 - BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY */ + " # " + "### " + "### " + "### " + " # "_str2bin, + + /* U+2526 - BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT */ + " ### " + " ### " + "#### " + " # " + " # "_str2bin, + + /* U+2527 - BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT */ + " # " + " # " + "#### " + " ### " + " ### "_str2bin, + + /* U+2528 - BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT */ + " ### " + " ### " + "#### " + " ### " + " ### "_str2bin, + + /* U+2529 - BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY */ + " ### " + "#### " + "#### " + "#### " + " # "_str2bin, + + /* U+252A - BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY */ + " # " + "#### " + "#### " + "#### " + " ### "_str2bin, + + /* U+252B - BOX DRAWINGS HEAVY VERTICAL AND LEFT */ + " ### " + "#### " + "#### " + "#### " + " ### "_str2bin, + + /* U+252C - BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */ + " " + " " + "#####" + " # " + " # "_str2bin, + + /* U+252D - BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT */ + " " + "### " + "#####" + "### " + " # "_str2bin, + + /* U+252E - BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT */ + " " + " ###" + "#####" + " ###" + " # "_str2bin, + + /* U+252F - BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY */ + " " + "#####" + "#####" + "#####" + " # "_str2bin, + + /* U+2530 - BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT */ + " " + " " + "#####" + " ### " + " ### "_str2bin, + + /* U+2531 - BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY */ + " " + "#### " + "#####" + "#### " + " ### "_str2bin, + + /* U+2532 - BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY */ + " " + " ####" + "#####" + " ####" + " ### "_str2bin, + + /* U+2533 - BOX DRAWINGS HEAVY DOWN AND HORIZONTAL */ + " " + "#####" + "#####" + "#####" + " ### "_str2bin, + + /* U+2534 - BOX DRAWINGS LIGHT UP AND HORIZONTAL */ + " # " + " # " + "#####" + " " + " "_str2bin, + + /* U+2535 - BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT */ + " # " + "### " + "#####" + "### " + " "_str2bin, + + /* U+2536 - BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT */ + " # " + " ###" + "#####" + " ###" + " "_str2bin, + + /* U+2537 - BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY */ + " # " + "#####" + "#####" + "#####" + " "_str2bin, + + /* U+2538 - BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT */ + " ### " + " ### " + "#####" + " " + " "_str2bin, + + /* U+2539 - BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY */ + " ### " + "#### " + "#####" + "#### " + " "_str2bin, + + /* U+253A - BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY */ + " ### " + " ####" + "#####" + " ####" + " "_str2bin, + + /* U+253B - BOX DRAWINGS HEAVY UP AND HORIZONTAL */ + " ### " + "#####" + "#####" + "#####" + " "_str2bin, + + /* U+253C - BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */ + " # " + " # " + "#####" + " # " + " # "_str2bin, + + /* U+253D - BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT */ + " # " + "### " + "#####" + "### " + " # "_str2bin, + + /* U+253E - BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT */ + " # " + " ###" + "#####" + " ###" + " # "_str2bin, + + /* U+253F - BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY */ + " # " + "#####" + "#####" + "#####" + " # "_str2bin, + + /* U+2540 - BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT */ + " ### " + " ### " + "#####" + " # " + " # "_str2bin, + + /* U+2541 - BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT */ + " # " + " # " + "#####" + " ### " + " ### "_str2bin, + + /* U+2542 - BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT */ + " ### " + " ### " + "#####" + " ### " + " ### "_str2bin, + + /* U+2543 - BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT */ + " ### " + "#### " + "#####" + "#### " + " # "_str2bin, + + /* U+2544 - BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT */ + " ### " + " ####" + "#####" + " ####" + " # "_str2bin, + + /* U+2545 - BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT */ + " # " + "#### " + "#####" + "#### " + " ### "_str2bin, + + /* U+2546 - BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT */ + " # " + " ####" + "#####" + " ####" + " ### "_str2bin, + + /* U+2547 - BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY */ + " ### " + "#####" + "#####" + "#####" + " # "_str2bin, + + /* U+2548 - BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY */ + " # " + "#####" + "#####" + "#####" + " ### "_str2bin, + + /* U+2549 - BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY */ + " ### " + "#### " + "#####" + "#### " + " ### "_str2bin, + + /* U+254A - BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY */ + " ### " + " ####" + "#####" + " ####" + " ### "_str2bin, + + /* U+254B - BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL */ + " ### " + "#####" + "#####" + "#####" + " ### "_str2bin, + + /* U+254C - BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL */ + 0, /* not handled here */ + + /* U+254D - BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL */ + 0, /* not handled here */ + + /* U+254E - BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL */ + 0, /* not handled here */ + + /* U+254F - BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL */ + 0, /* not handled here */ + + /* U+2550 - BOX DRAWINGS DOUBLE HORIZONTAL */ + " " + "#####" + " " + "#####" + " "_str2bin, + + /* U+2551 - BOX DRAWINGS DOUBLE VERTICAL */ + " # # " + " # # " + " # # " + " # # " + " # # "_str2bin, + + /* U+2552 - BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE */ + " " + " ###" + " # " + " ###" + " # "_str2bin, + + /* U+2553 - BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE */ + " " + " " + " ####" + " # # " + " # # "_str2bin, + + /* U+2554 - BOX DRAWINGS DOUBLE DOWN AND RIGHT */ + " " + " ####" + " # " + " # ##" + " # # "_str2bin, + + /* U+2555 - BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE */ + " " + "### " + " # " + "### " + " # "_str2bin, + + /* U+2556 - BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE */ + " " + " " + "#### " + " # # " + " # # "_str2bin, + + /* U+2557 - BOX DRAWINGS DOUBLE DOWN AND LEFT */ + " " + "#### " + " # " + "## # " + " # # "_str2bin, + + /* U+2558 - BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE */ + " # " + " ###" + " # " + " ###" + " "_str2bin, + + /* U+2559 - BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE */ + " # # " + " # # " + " ####" + " " + " "_str2bin, + + /* U+255A - BOX DRAWINGS DOUBLE UP AND RIGHT */ + " # # " + " # ##" + " # " + " ####" + " "_str2bin, + + /* U+255B - BOX DRAWINGS UP SINGLE AND LEFT DOUBLE */ + " # " + "### " + " # " + "### " + " "_str2bin, + + /* U+255C - BOX DRAWINGS UP DOUBLE AND LEFT SINGLE */ + " # # " + " # # " + "#### " + " " + " "_str2bin, + + /* U+255D - BOX DRAWINGS DOUBLE UP AND LEFT */ + " # # " + "## # " + " # " + "#### " + " "_str2bin, + + /* U+255E - BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE */ + " # " + " ###" + " # " + " ###" + " # "_str2bin, + + /* U+255F - BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE */ + " # # " + " # # " + " # ##" + " # # " + " # # "_str2bin, + + /* U+2560 - BOX DRAWINGS DOUBLE VERTICAL AND RIGHT */ + " # # " + " # ##" + " # " + " # ##" + " # # "_str2bin, + + /* U+2561 - BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE */ + " # " + "### " + " # " + "### " + " # "_str2bin, + + /* U+2562 - BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE */ + " # # " + " # # " + "## # " + " # # " + " # # "_str2bin, + + /* U+2563 - BOX DRAWINGS DOUBLE VERTICAL AND LEFT */ + " # # " + "## # " + " # " + "## # " + " # # "_str2bin, + + /* U+2564 - BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE */ + " " + "#####" + " " + "#####" + " # "_str2bin, + + /* U+2565 - BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE */ + " " + " " + "#####" + " # # " + " # # "_str2bin, + + /* U+2566 - BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL */ + " " + "#####" + " " + "## ##" + " # # "_str2bin, + + /* U+2567 - BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE */ + " # " + "#####" + " " + "#####" + " "_str2bin, + + /* U+2568 - BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE */ + " # # " + " # # " + "#####" + " " + " "_str2bin, + + /* U+2569 - BOX DRAWINGS DOUBLE UP AND HORIZONTAL */ + " # # " + "## ##" + " " + "#####" + " "_str2bin, + + /* U+256A - BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE */ + " # " + "#####" + " # " + "#####" + " # "_str2bin, + + /* U+256B - BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE */ + " # # " + " # # " + "#####" + " # # " + " # # "_str2bin, + + /* U+256C - BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL */ + " # # " + "## ##" + " " + "## ##" + " # # "_str2bin, + + /* U+256D - BOX DRAWINGS LIGHT ARC DOWN AND RIGHT */ + 0, /* not handled here */ + + /* U+256E - BOX DRAWINGS LIGHT ARC DOWN AND LEFT */ + 0, /* not handled here */ + + /* U+256F - BOX DRAWINGS LIGHT ARC UP AND LEFT */ + 0, /* not handled here */ + + /* U+2570 - BOX DRAWINGS LIGHT ARC UP AND RIGHT */ + 0, /* not handled here */ + + /* U+2571 - BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT */ + 0, /* not handled here */ + + /* U+2572 - BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT */ + 0, /* not handled here */ + + /* U+2573 - BOX DRAWINGS LIGHT DIAGONAL CROSS */ + 0, /* not handled here */ + + /* U+2574 - BOX DRAWINGS LIGHT LEFT */ + " " + " " + "### " + " " + " "_str2bin, + + /* U+2575 - BOX DRAWINGS LIGHT UP */ + " # " + " # " + " # " + " " + " "_str2bin, + + /* U+2576 - BOX DRAWINGS LIGHT RIGHT */ + " " + " " + " ###" + " " + " "_str2bin, + + /* U+2577 - BOX DRAWINGS LIGHT DOWN */ + " " + " " + " # " + " # " + " # "_str2bin, + + /* U+2578 - BOX DRAWINGS HEAVY LEFT */ + " " + "### " + "### " + "### " + " "_str2bin, + + /* U+2579 - BOX DRAWINGS HEAVY UP */ + " ### " + " ### " + " ### " + " " + " "_str2bin, + + /* U+257A - BOX DRAWINGS HEAVY RIGHT */ + " " + " ###" + " ###" + " ###" + " "_str2bin, + + /* U+257B - BOX DRAWINGS HEAVY DOWN */ + " " + " " + " ### " + " ### " + " ### "_str2bin, + + /* U+257C - BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT */ + " " + " ###" + "#####" + " ###" + " "_str2bin, + + /* U+257D - BOX DRAWINGS LIGHT UP AND HEAVY DOWN */ + " # " + " # " + " ### " + " ### " + " ### "_str2bin, + + /* U+257E - BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT */ + " " + "### " + "#####" + "### " + " "_str2bin, + + /* U+257F - BOX DRAWINGS HEAVY UP AND LIGHT DOWN */ + " ### " + " ### " + " ### " + " # " + " # "_str2bin, + +}; diff --git a/src/box_drawing.txt b/src/box_drawing.txt deleted file mode 100644 index 966c34f1..00000000 --- a/src/box_drawing.txt +++ /dev/null @@ -1,768 +0,0 @@ -U+2500 - light horizontal -░░░░░ -░░░░░ -▓▓▓▓▓ -░░░░░ -░░░░░ -U+2501 - heavy horizontal -░░░░░ -▓▓▓▓▓ -▓▓▓▓▓ -▓▓▓▓▓ -░░░░░ -U+2502 - light vertical -░░▓░░ -░░▓░░ -░░▓░░ -░░▓░░ -░░▓░░ -U+2503 - heavy vertical -░▓▓▓░ -░▓▓▓░ -░▓▓▓░ -░▓▓▓░ -░▓▓▓░ -U+2504 - not handled here: light triple dash horizontal -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+2505 - not handled here: heavy triple dash horizontal -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+2506 - not handled here: light triple dash vertical -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+2507 - not handled here: heavy triple dash vertical -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+2508 - not handled here: light quadruple dash horizontal -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+2509 - not handled here: heavy quadruple dash horizontal -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+250A - not handled here: light quadruple dash vertical -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+250B - not handled here: heavy quadruple dash vertical -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+250C - light down and right -░░░░░ -░░░░░ -░░▓▓▓ -░░▓░░ -░░▓░░ -U+250D - down light and right heavy -░░░░░ -░░▓▓▓ -░░▓▓▓ -░░▓▓▓ -░░▓░░ -U+250E - down heavy and right light -░░░░░ -░░░░░ -░▓▓▓▓ -░▓▓▓░ -░▓▓▓░ -U+250F - heavy down and right -░░░░░ -░▓▓▓▓ -░▓▓▓▓ -░▓▓▓▓ -░▓▓▓░ -U+2510 - light down and left -░░░░░ -░░░░░ -▓▓▓░░ -░░▓░░ -░░▓░░ -U+2511 - down light and left heavy -░░░░░ -▓▓▓░░ -▓▓▓░░ -▓▓▓░░ -░░▓░░ -U+2512 - down heavy and left light -░░░░░ -░░░░░ -▓▓▓▓░ -░▓▓▓░ -░▓▓▓░ -U+2513 - heavy down and left -░░░░░ -▓▓▓▓░ -▓▓▓▓░ -▓▓▓▓░ -░▓▓▓░ -U+2514 - light up and right -░░▓░░ -░░▓░░ -░░▓▓▓ -░░░░░ -░░░░░ -U+2515 - up light and right heavy -░░▓░░ -░░▓▓▓ -░░▓▓▓ -░░▓▓▓ -░░░░░ -U+2516 - up heavy and right light -░▓▓▓░ -░▓▓▓░ -░▓▓▓▓ -░░░░░ -░░░░░ -U+2517 - heavy up and right -░▓▓▓░ -░▓▓▓▓ -░▓▓▓▓ -░▓▓▓▓ -░░░░░ -U+2518 - light up and left -░░▓░░ -░░▓░░ -▓▓▓░░ -░░░░░ -░░░░░ -U+2519 - up light and left heavy -░░▓░░ -▓▓▓░░ -▓▓▓░░ -▓▓▓░░ -░░░░░ -U+251A - up heavy and left light -░▓▓▓░ -░▓▓▓░ -▓▓▓▓░ -░░░░░ -░░░░░ -U+251B - heavy up and left -░▓▓▓░ -▓▓▓▓░ -▓▓▓▓░ -▓▓▓▓░ -░░░░░ -U+251C - light vertical and right -░░▓░░ -░░▓░░ -░░▓▓▓ -░░▓░░ -░░▓░░ -U+251D - vertical light and right heavy -░░▓░░ -░░▓▓▓ -░░▓▓▓ -░░▓▓▓ -░░▓░░ -U+251E - up heavy and right down light -░▓▓▓░ -░▓▓▓░ -░▓▓▓▓ -░░▓░░ -░░▓░░ -U+251F - down heavy and right up light -░░▓░░ -░░▓░░ -░▓▓▓▓ -░▓▓▓░ -░▓▓▓░ -U+2520 - vertical heavy and right light -░▓▓▓░ -░▓▓▓░ -░▓▓▓▓ -░▓▓▓░ -░▓▓▓░ -U+2521 - down light and right up heavy -░▓▓▓░ -░▓▓▓▓ -░▓▓▓▓ -░▓▓▓▓ -░░▓░░ -U+2522 - up light and right down heavy -░░▓░░ -░▓▓▓▓ -░▓▓▓▓ -░▓▓▓▓ -░▓▓▓░ -U+2523 - heavy vertical and right -░▓▓▓░ -░▓▓▓▓ -░▓▓▓▓ -░▓▓▓▓ -░▓▓▓░ -U+2524 - light vertical and left -░░▓░░ -░░▓░░ -▓▓▓░░ -░░▓░░ -░░▓░░ -U+2525 - vertical light and left heavy -░░▓░░ -▓▓▓░░ -▓▓▓░░ -▓▓▓░░ -░░▓░░ -U+2526 - up heavy and left down light -░▓▓▓░ -░▓▓▓░ -▓▓▓▓░ -░░▓░░ -░░▓░░ -U+2527 - down heavy and left up light -░░▓░░ -░░▓░░ -▓▓▓▓░ -░▓▓▓░ -░▓▓▓░ -U+2528 - vertical heavy and left light -░▓▓▓░ -░▓▓▓░ -▓▓▓▓░ -░▓▓▓░ -░▓▓▓░ -U+2529 - down light and left up heavy -░▓▓▓░ -▓▓▓▓░ -▓▓▓▓░ -▓▓▓▓░ -░░▓░░ -U+252A - up light and left down heavy -░░▓░░ -▓▓▓▓░ -▓▓▓▓░ -▓▓▓▓░ -░▓▓▓░ -U+252B - heavy vertical and left -░▓▓▓░ -▓▓▓▓░ -▓▓▓▓░ -▓▓▓▓░ -░▓▓▓░ -U+252C - light down and horizontal -░░░░░ -░░░░░ -▓▓▓▓▓ -░░▓░░ -░░▓░░ -U+252D - left heavy and right down light -░░░░░ -▓▓▓░░ -▓▓▓▓▓ -▓▓▓░░ -░░▓░░ -U+252E - right heavy and left down light -░░░░░ -░░▓▓▓ -▓▓▓▓▓ -░░▓▓▓ -░░▓░░ -U+252F - down light and horizontal heavy -░░░░░ -▓▓▓▓▓ -▓▓▓▓▓ -▓▓▓▓▓ -░░▓░░ -U+2530 - down heavy and horizontal light -░░░░░ -░░░░░ -▓▓▓▓▓ -░▓▓▓░ -░▓▓▓░ -U+2531 - right light and left down heavy -░░░░░ -▓▓▓▓░ -▓▓▓▓▓ -▓▓▓▓░ -░▓▓▓░ -U+2532 - left light and right down heavy -░░░░░ -░▓▓▓▓ -▓▓▓▓▓ -░▓▓▓▓ -░▓▓▓░ -U+2533 - heavy down and horizontal -░░░░░ -▓▓▓▓▓ -▓▓▓▓▓ -▓▓▓▓▓ -░▓▓▓░ -U+2534 - light up and horizontal -░░▓░░ -░░▓░░ -▓▓▓▓▓ -░░░░░ -░░░░░ -U+2535 - left heavy and right up light -░░▓░░ -▓▓▓░░ -▓▓▓▓▓ -▓▓▓░░ -░░░░░ -U+2536 - right heavy and left up light -░░▓░░ -░░▓▓▓ -▓▓▓▓▓ -░░▓▓▓ -░░░░░ -U+2537 - up light and horizontal heavy -░░▓░░ -▓▓▓▓▓ -▓▓▓▓▓ -▓▓▓▓▓ -░░░░░ -U+2538 - up heavy and horizontal light -░▓▓▓░ -░▓▓▓░ -▓▓▓▓▓ -░░░░░ -░░░░░ -U+2539 - right light and left up heavy -░▓▓▓░ -▓▓▓▓░ -▓▓▓▓▓ -▓▓▓▓░ -░░░░░ -U+253A - left light and right up heavy -░▓▓▓░ -░▓▓▓▓ -▓▓▓▓▓ -░▓▓▓▓ -░░░░░ -U+253B - heavy up and horizontal -░▓▓▓░ -▓▓▓▓▓ -▓▓▓▓▓ -▓▓▓▓▓ -░░░░░ -U+253C - light vertical and horizontal -░░▓░░ -░░▓░░ -▓▓▓▓▓ -░░▓░░ -░░▓░░ -U+253D - left heavy and right vertical light -░░▓░░ -▓▓▓░░ -▓▓▓▓▓ -▓▓▓░░ -░░▓░░ -U+253E - right heavy and left vertical light -░░▓░░ -░░▓▓▓ -▓▓▓▓▓ -░░▓▓▓ -░░▓░░ -U+253F - vertical light and horizontal heavy -░░▓░░ -▓▓▓▓▓ -▓▓▓▓▓ -▓▓▓▓▓ -░░▓░░ -U+2540 - up heavy and down horizontal light -░▓▓▓░ -░▓▓▓░ -▓▓▓▓▓ -░░▓░░ -░░▓░░ -U+2541 - down heavy and up horizontal light -░░▓░░ -░░▓░░ -▓▓▓▓▓ -░▓▓▓░ -░▓▓▓░ -U+2542 - vertical heavy and horizontal light -░▓▓▓░ -░▓▓▓░ -▓▓▓▓▓ -░▓▓▓░ -░▓▓▓░ -U+2543 - left up heavy and right down light -░▓▓▓░ -▓▓▓▓░ -▓▓▓▓▓ -▓▓▓▓░ -░░▓░░ -U+2544 - right up heavy and left down light -░▓▓▓░ -░▓▓▓▓ -▓▓▓▓▓ -░▓▓▓▓ -░░▓░░ -U+2545 - left down heavy and right up light -░░▓░░ -▓▓▓▓░ -▓▓▓▓▓ -▓▓▓▓░ -░▓▓▓░ -U+2546 - right down heavy and left up light -░░▓░░ -░▓▓▓▓ -▓▓▓▓▓ -░▓▓▓▓ -░▓▓▓░ -U+2547 - down light and up horizontal heavy -░▓▓▓░ -▓▓▓▓▓ -▓▓▓▓▓ -▓▓▓▓▓ -░░▓░░ -U+2548 - up light and down horizontal heavy -░░▓░░ -▓▓▓▓▓ -▓▓▓▓▓ -▓▓▓▓▓ -░▓▓▓░ -U+2549 - right light and left vertical heavy -░▓▓▓░ -▓▓▓▓░ -▓▓▓▓▓ -▓▓▓▓░ -░▓▓▓░ -U+254A - left light and right vertical heavy -░▓▓▓░ -░▓▓▓▓ -▓▓▓▓▓ -░▓▓▓▓ -░▓▓▓░ -U+254B - heavy vertical and horizontal -░▓▓▓░ -▓▓▓▓▓ -▓▓▓▓▓ -▓▓▓▓▓ -░▓▓▓░ -U+254C - not handled here: light double dash horizontal -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+254D - not handled here: heavy double dash horizontal -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+254E - not handled here: light double dash vertical -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+254F - not handled here: heavy double dash vertical -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+2550 - double horizontal -░░░░░ -▓▓▓▓▓ -░░░░░ -▓▓▓▓▓ -░░░░░ -U+2551 - double vertical -░▓░▓░ -░▓░▓░ -░▓░▓░ -░▓░▓░ -░▓░▓░ -U+2552 - down single and right double -░░░░░ -░░▓▓▓ -░░▓░░ -░░▓▓▓ -░░▓░░ -U+2553 - down double and right single -░░░░░ -░░░░░ -░▓▓▓▓ -░▓░▓░ -░▓░▓░ -U+2554 - double down and right -░░░░░ -░▓▓▓▓ -░▓░░░ -░▓░▓▓ -░▓░▓░ -U+2555 - down single and left double -░░░░░ -▓▓▓░░ -░░▓░░ -▓▓▓░░ -░░▓░░ -U+2556 - down double and left single -░░░░░ -░░░░░ -▓▓▓▓░ -░▓░▓░ -░▓░▓░ -U+2557 - double down and left -░░░░░ -▓▓▓▓░ -░░░▓░ -▓▓░▓░ -░▓░▓░ -U+2558 - up single and right double -░░▓░░ -░░▓▓▓ -░░▓░░ -░░▓▓▓ -░░░░░ -U+2559 - up double and right single -░▓░▓░ -░▓░▓░ -░▓▓▓▓ -░░░░░ -░░░░░ -U+255A - double up and right -░▓░▓░ -░▓░▓▓ -░▓░░░ -░▓▓▓▓ -░░░░░ -U+255B - up single and left double -░░▓░░ -▓▓▓░░ -░░▓░░ -▓▓▓░░ -░░░░░ -U+255C - up double and left single -░▓░▓░ -░▓░▓░ -▓▓▓▓░ -░░░░░ -░░░░░ -U+255D - double up and left -░▓░▓░ -▓▓░▓░ -░░░▓░ -▓▓▓▓░ -░░░░░ -U+255E - vertical single and right double -░░▓░░ -░░▓▓▓ -░░▓░░ -░░▓▓▓ -░░▓░░ -U+255F - vertical double and right single -░▓░▓░ -░▓░▓░ -░▓░▓▓ -░▓░▓░ -░▓░▓░ -U+2560 - double vertical and right -░▓░▓░ -░▓░▓▓ -░▓░░░ -░▓░▓▓ -░▓░▓░ -U+2561 - vertical single and left double -░░▓░░ -▓▓▓░░ -░░▓░░ -▓▓▓░░ -░░▓░░ -U+2562 - vertical double and left single -░▓░▓░ -░▓░▓░ -▓▓░▓░ -░▓░▓░ -░▓░▓░ -U+2563 - double vertical and left -░▓░▓░ -▓▓░▓░ -░░░▓░ -▓▓░▓░ -░▓░▓░ -U+2564 - down single and horizontal double -░░░░░ -▓▓▓▓▓ -░░░░░ -▓▓▓▓▓ -░░▓░░ -U+2565 - down double and horizontal single -░░░░░ -░░░░░ -▓▓▓▓▓ -░▓░▓░ -░▓░▓░ -U+2566 - double down and horizontal -░░░░░ -▓▓▓▓▓ -░░░░░ -▓▓░▓▓ -░▓░▓░ -U+2567 - up single and horizontal double -░░▓░░ -▓▓▓▓▓ -░░░░░ -▓▓▓▓▓ -░░░░░ -U+2568 - up double and horizontal single -░▓░▓░ -░▓░▓░ -▓▓▓▓▓ -░░░░░ -░░░░░ -U+2569 - double up and horizontal -░▓░▓░ -▓▓░▓▓ -░░░░░ -▓▓▓▓▓ -░░░░░ -U+256A - vertical single and horizontal double -░░▓░░ -▓▓▓▓▓ -░░▓░░ -▓▓▓▓▓ -░░▓░░ -U+256B - vertical double and horizontal single -░▓░▓░ -░▓░▓░ -▓▓▓▓▓ -░▓░▓░ -░▓░▓░ -U+256C - double vertical and horizontal -░▓░▓░ -▓▓░▓▓ -░░░░░ -▓▓░▓▓ -░▓░▓░ -U+256D - not handled here: light arc down and right -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+256E - not handled here: light arc down and left -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+256F - not handled here: light arc up and left -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+2570 - not handled here: light arc up and right -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+2571 - not handled here: light diagonal upper right to lower left -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+2572 - not handled here: light diagonal upper left to lower right -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+2573 - not handled here: light diagonal cross -░░░░░ -░░░░░ -░░░░░ -░░░░░ -░░░░░ -U+2574 - light left -░░░░░ -░░░░░ -▓▓▓░░ -░░░░░ -░░░░░ -U+2575 - light up -░░▓░░ -░░▓░░ -░░▓░░ -░░░░░ -░░░░░ -U+2576 - light right -░░░░░ -░░░░░ -░░▓▓▓ -░░░░░ -░░░░░ -U+2577 - light down -░░░░░ -░░░░░ -░░▓░░ -░░▓░░ -░░▓░░ -U+2578 - heavy left -░░░░░ -▓▓▓░░ -▓▓▓░░ -▓▓▓░░ -░░░░░ -U+2579 - heavy up -░▓▓▓░ -░▓▓▓░ -░▓▓▓░ -░░░░░ -░░░░░ -U+257A - heavy right -░░░░░ -░░▓▓▓ -░░▓▓▓ -░░▓▓▓ -░░░░░ -U+257B - heavy down -░░░░░ -░░░░░ -░▓▓▓░ -░▓▓▓░ -░▓▓▓░ -U+257C - light left and heavy right -░░░░░ -░░▓▓▓ -▓▓▓▓▓ -░░▓▓▓ -░░░░░ -U+257D - light up and heavy down -░░▓░░ -░░▓░░ -░▓▓▓░ -░▓▓▓░ -░▓▓▓░ -U+257E - heavy left and light right -░░░░░ -▓▓▓░░ -▓▓▓▓▓ -▓▓▓░░ -░░░░░ -U+257F - heavy up and light down -░▓▓▓░ -░▓▓▓░ -░▓▓▓░ -░░▓░░ -░░▓░░ diff --git a/src/box_drawing_generate.sh b/src/box_drawing_generate.sh deleted file mode 100755 index 67ff94e5..00000000 --- a/src/box_drawing_generate.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/env bash -# Copyright © 2014 Egmont Koblinger -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -cat <<"END" -/* Generated by box_drawing_generate.sh; do not edit! */ - -#define VTE_BOX_DRAWING_5_BY_5_BITMAP(x11, x12, x13, x14, x15, \ - x21, x22, x23, x24, x25, \ - x31, x32, x33, x34, x35, \ - x41, x42, x43, x44, x45, \ - x51, x52, x53, x54, x55) \ - (((x11) << 24) | ((x12) << 23) | ((x13) << 22) | ((x14) << 21) | ((x15) << 20) | \ - ((x21) << 19) | ((x22) << 18) | ((x23) << 17) | ((x24) << 16) | ((x25) << 15) | \ - ((x31) << 14) | ((x32) << 13) | ((x33) << 12) | ((x34) << 11) | ((x35) << 10) | \ - ((x41) << 9) | ((x42) << 8) | ((x43) << 7) | ((x44) << 6) | ((x45) << 5) | \ - ((x51) << 4) | ((x52) << 3) | ((x53) << 2) | ((x54) << 1) | ((x55))) - -/* Definition of most of the glyphs in the 2500..257F range as 5x5 bitmaps - (bits 24..0 in the obvious order), see bug 709556 and ../doc/boxes.txt */ -static const guint32 _vte_draw_box_drawing_bitmaps[128] = { -END - -LC_ALL=C -pos=$((0x2500)) -while [ $pos -lt $((0x2580)) ]; do - read header - echo -e "\\t/* $header */" - echo -e "\\tVTE_BOX_DRAWING_5_BY_5_BITMAP(" - for y in 1 2 3 4 5; do - echo -ne '\t\t' - read line - for x in 1 2 3 4 5; do - if [ "${line:0:3}" == "▓" ]; then - echo -n '1' - else - echo -n '0' - fi - line="${line:3}" - if [ $x = 5 -a $y = 5 ]; then - echo -n ')' - fi - echo -n ', ' - if [ $x = 5 ]; then - echo - fi - done - done - echo - pos=$((pos+1)) -done < "$1" - -cat <<"END" -}; - -#undef VTE_BOX_DRAWING_5_BY_5_BITMAP -END diff --git a/src/meson.build b/src/meson.build index 7737c04a..f94945d2 100644 --- a/src/meson.build +++ b/src/meson.build @@ -171,6 +171,7 @@ libvte_common_sources = config_sources + debug_sources + glib_glue_sources + gtk 'attr.hh', 'bidi.cc', 'bidi.hh', + 'box-drawing.hh', 'buffer.h', 'cairo-glue.hh', 'caps.hh', @@ -247,18 +248,6 @@ libvte_common_doc_sources = files( 'vteregex.cc', ) -# FIXMEchpe this should use files('...') (allowed as per docs, afaict), but that crashes meson -generate_box_drawing = find_program('box_drawing_generate.sh') - -libvte_common_sources += custom_target( - 'box-drawing', - input: 'box_drawing.txt', - output: 'box_drawing.h', - capture: true, - command: [generate_box_drawing, '@INPUT@'], - install: false, -) - libvte_common_sources += gnome.compile_resources( 'vteresources', 'vte.gresource.xml', diff --git a/src/minifont.cc b/src/minifont.cc index 418b1a1f..cefe99e4 100644 --- a/src/minifont.cc +++ b/src/minifont.cc @@ -139,7 +139,7 @@ pattern(cairo_t* cr, cairo_mask(cr, pattern); } -#include "box_drawing.h" +#include "box-drawing.hh" namespace vte::view { -- cgit v1.2.1