<?php declare(strict_types=1); if (!$test->ffi->tb_has_truecolor()) { // This will only work with truecolor support $test->skip(); } $css_colors = [ 'aliceblue' => 0xf0f8ff, 'antiquewhite' => 0xfaebd7, 'aqua' => 0x00ffff, 'aquamarine' => 0x7fffd4, 'azure' => 0xf0ffff, 'beige' => 0xf5f5dc, 'bisque' => 0xffe4c4, 'black' => 0x000000, 'blanchedalmond' => 0xffebcd, 'blue' => 0x0000ff, 'blueviolet' => 0x8a2be2, 'brown' => 0xa52a2a, 'burlywood' => 0xdeb887, 'cadetblue' => 0x5f9ea0, 'chartreuse' => 0x7fff00, 'chocolate' => 0xd2691e, 'coral' => 0xff7f50, 'cornflowerblue' => 0x6495ed, 'cornsilk' => 0xfff8dc, 'crimson' => 0xdc143c, 'cyan' => 0x00ffff, 'darkblue' => 0x00008b, 'darkcyan' => 0x008b8b, 'darkgoldenrod' => 0xb8860b, 'darkgray' => 0xa9a9a9, 'darkgreen' => 0x006400, 'darkgrey' => 0xa9a9a9, 'darkkhaki' => 0xbdb76b, 'darkmagenta' => 0x8b008b, 'darkolivegreen' => 0x556b2f, 'darkorange' => 0xff8c00, 'darkorchid' => 0x9932cc, 'darkred' => 0x8b0000, 'darksalmon' => 0xe9967a, 'darkseagreen' => 0x8fbc8f, 'darkslateblue' => 0x483d8b, 'darkslategrey' => 0x2f4f4f, 'darkturquoise' => 0x00ced1, 'darkviolet' => 0x9400d3, 'deeppink' => 0xff1493, 'deepskyblue' => 0x00bfff, 'dimgray' => 0x696969, 'dimgrey' => 0x696969, 'dodgerblue' => 0x1e90ff, 'firebrick' => 0xb22222, 'floralwhite' => 0xfffaf0, 'forestgreen' => 0x228b22, 'fuchsia' => 0xff00ff, 'gainsboro' => 0xdcdcdc, 'ghostwhite' => 0xf8f8ff, 'gold' => 0xffd700, 'goldenrod' => 0xdaa520, 'gray' => 0x808080, 'green' => 0x008000, 'greenyellow' => 0xadff2f, 'grey' => 0x808080, 'honeydew' => 0xf0fff0, 'hotpink' => 0xff69b4, 'indianred' => 0xcd5c5c, 'indigo' => 0x4b0082, 'ivory' => 0xfffff0, 'khaki' => 0xf0e68c, 'lavender' => 0xe6e6fa, 'lavenderblush' => 0xfff0f5, 'lawngreen' => 0x7cfc00, 'lemonchiffon' => 0xfffacd, 'lightblue' => 0xadd8e6, 'lightcoral' => 0xf08080, 'lightcyan' => 0xe0ffff, 'lightgoldenrodyellow' => 0xfafad2, 'lightgray' => 0xd3d3d3, 'lightgreen' => 0x90ee90, 'lightgrey' => 0xd3d3d3, 'lightpink' => 0xffb6c1, 'lightsalmon' => 0xffa07a, 'lightseagreen' => 0x20b2aa, 'lightskyblue' => 0x87cefa, 'lightslategrey' => 0x778899, 'lightsteelblue' => 0xb0c4de, 'lightyellow' => 0xffffe0, 'lime' => 0x00ff00, 'limegreen' => 0x32cd32, 'linen' => 0xfaf0e6, 'magenta' => 0xff00ff, 'maroon' => 0x800000, 'mediumaquamarine' => 0x66cdaa, 'mediumblue' => 0x0000cd, 'mediumorchid' => 0xba55d3, 'mediumpurple' => 0x9370db, 'mediumseagreen' => 0x3cb371, 'mediumslateblue' => 0x7b68ee, 'mediumspringgreen' => 0x00fa9a, 'mediumturquoise' => 0x48d1cc, 'mediumvioletred' => 0xc71585, 'midnightblue' => 0x191970, 'mintcream' => 0xf5fffa, 'mistyrose' => 0xffe4e1, 'moccasin' => 0xffe4b5, 'navajowhite' => 0xffdead, 'navy' => 0x000080, 'oldlace' => 0xfdf5e6, 'olive' => 0x808000, 'olivedrab' => 0x6b8e23, 'orange' => 0xffa500, 'orangered' => 0xff4500, 'orchid' => 0xda70d6, 'palegoldenrod' => 0xeee8aa, 'palegreen' => 0x98fb98, 'paleturquoise' => 0xafeeee, 'palevioletred' => 0xdb7093, 'papayawhip' => 0xffefd5, 'peachpuff' => 0xffdab9, 'peru' => 0xcd853f, 'pink' => 0xffc0cb, 'plum' => 0xdda0dd, 'powderblue' => 0xb0e0e6, 'purple' => 0x800080, 'red' => 0xff0000, 'rosybrown' => 0xbc8f8f, 'royalblue' => 0x4169e1, 'saddlebrown' => 0x8b4513, 'salmon' => 0xfa8072, 'sandybrown' => 0xf4a460, 'seagreen' => 0x2e8b57, 'seashell' => 0xfff5ee, 'sienna' => 0xa0522d, 'silver' => 0xc0c0c0, 'skyblue' => 0x87ceeb, 'slateblue' => 0x6a5acd, 'slategrey' => 0x708090, 'snow' => 0xfffafa, 'springgreen' => 0x00ff7f, 'steelblue' => 0x4682b4, 'tan' => 0xd2b48c, 'teal' => 0x008080, 'thistle' => 0xd8bfd8, 'tomato' => 0xff6347, 'turquoise' => 0x40e0d0, 'violet' => 0xee82ee, 'wheat' => 0xf5deb3, 'white' => 0xffffff, 'whitesmoke' => 0xf5f5f5, 'yellow' => 0xffff00, 'yellowgreen' => 0x9acd32, ]; $test->ffi->tb_init(); $w = $test->ffi->tb_width(); $h = $test->ffi->tb_height(); $test->ffi->tb_set_output_mode($test->defines['TB_OUTPUT_TRUECOLOR']); // Print some color names $x = 0; $y = 0; foreach ($css_colors as $color_name => $fg) { $test->ffi->tb_print($x, $y, $fg, 0, "{$color_name} "); $x += strlen($color_name) + 1; if ($x >= $w) { $x = 0; $y++; } } // Test bold, underline, italic in true-color mode $x = 0; $color = 0x808080 | $test->defines['TB_TRUECOLOR_BOLD']; $test->ffi->tb_printf($x, ++$y, $color, 0, 'yes bold (#%06x)', $color); $color = 0x808080 | $test->defines['TB_TRUECOLOR_UNDERLINE']; $test->ffi->tb_printf($x, ++$y, $color, 0, 'yes underline (#%06x)', $color); $color = 0x808080 | $test->defines['TB_TRUECOLOR_ITALIC']; $test->ffi->tb_printf($x, ++$y, $color, 0, 'yes italic (#%06x)', $color); // Test fg/bg together $x = 0; $y += 1; for ($r = 0x00; $r <= 0xff; $r += 0xff) { for ($g = 0x00; $g <= 0xff; $g += 0xff) { for ($b = 0x00; $b <= 0xff; $b += 0xff) { $fg = ($r << 16) + ($g << 8) + $b; $bg = ((0xff - $r) << 16) + ((0xff - $g) << 8) + (0xff - $b); $str = sprintf('#%06x on #%06x ', $fg, $bg); $test->ffi->tb_print($x, $y, $fg, $bg, $str); $x += strlen($str); if ($x >= $w) { $x = 0; $y++; } } } } $test->ffi->tb_present(); $test->screencap();