From d0b335cb1b8d7c80eafa77b5095e19ec143d558b Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Thu, 22 Dec 2022 20:09:51 -0800 Subject: [PATCH] Add some convenience functions with implicit cairo context Just to make the code easier to use. So it can look like: circle(x, y, radius); fill(); rather than: cr.arc(x, y, radius, 0, 2 * math.pi); cr.fill(); Also, provide a set_color() function that accepts a color name as a string, (using that classic list of color names from X11 I believe). --- bus.html | 18 +- interpret-cairo-to-svg.py | 784 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 797 insertions(+), 5 deletions(-) diff --git a/bus.html b/bus.html index 214174c..df6f572 100644 --- a/bus.html +++ b/bus.html @@ -121,10 +121,19 @@ Magic School Bus Central Processor
- +
@@ -169,7 +178,6 @@ cr.stroke(); form.addEventListener('submit', event => { event.preventDefault(); - console.log("Submitted form with code: " + code.value); socket.emit('run', code.value); }); diff --git a/interpret-cairo-to-svg.py b/interpret-cairo-to-svg.py index bc3ad35..de296f5 100755 --- a/interpret-cairo-to-svg.py +++ b/interpret-cairo-to-svg.py @@ -5,6 +5,13 @@ import tempfile import os import sys +import math +import random as rand + +# Some convenience things for the program to use +pi = math.pi +random = rand.random + OUTPUT_DIR_PREFIX='/srv/cworth.org/zombocom' OUTPUT_DIR="{}/busart".format(OUTPUT_DIR_PREFIX) @@ -24,9 +31,786 @@ del tempfile del os del sys +# Note: We'll let the following "safe" imports remain: +# +# math +# random + +COLORS = { + 'alice blue': (0xf0/0xff, 0xf8/0xff, 0xff/0xff), + 'aliceblue': (0xf0/0xff, 0xf8/0xff, 0xff/0xff), + 'antique white': (0xfa/0xff, 0xeb/0xff, 0xd7/0xff), + 'antiquewhite': (0xfa/0xff, 0xeb/0xff, 0xd7/0xff), + 'antiquewhite1': (0xff/0xff, 0xef/0xff, 0xdb/0xff), + 'antiquewhite2': (0xee/0xff, 0xdf/0xff, 0xcc/0xff), + 'antiquewhite3': (0xcd/0xff, 0xc0/0xff, 0xb0/0xff), + 'antiquewhite4': (0x8b/0xff, 0x83/0xff, 0x78/0xff), + 'aquamarine': (0x7f/0xff, 0xff/0xff, 0xd4/0xff), + 'aquamarine1': (0x7f/0xff, 0xff/0xff, 0xd4/0xff), + 'aquamarine2': (0x76/0xff, 0xee/0xff, 0xc6/0xff), + 'aquamarine3': (0x66/0xff, 0xcd/0xff, 0xaa/0xff), + 'aquamarine4': (0x45/0xff, 0x8b/0xff, 0x74/0xff), + 'azure': (0xf0/0xff, 0xff/0xff, 0xff/0xff), + 'azure1': (0xf0/0xff, 0xff/0xff, 0xff/0xff), + 'azure2': (0xe0/0xff, 0xee/0xff, 0xee/0xff), + 'azure3': (0xc1/0xff, 0xcd/0xff, 0xcd/0xff), + 'azure4': (0x83/0xff, 0x8b/0xff, 0x8b/0xff), + 'beige': (0xf5/0xff, 0xf5/0xff, 0xdc/0xff), + 'bisque': (0xff/0xff, 0xe4/0xff, 0xc4/0xff), + 'bisque1': (0xff/0xff, 0xe4/0xff, 0xc4/0xff), + 'bisque2': (0xee/0xff, 0xd5/0xff, 0xb7/0xff), + 'bisque3': (0xcd/0xff, 0xb7/0xff, 0x9e/0xff), + 'bisque4': (0x8b/0xff, 0x7d/0xff, 0x6b/0xff), + 'black': (0x00/0xff, 0x00/0xff, 0x00/0xff), + 'blanched almond': (0xff/0xff, 0xeb/0xff, 0xcd/0xff), + 'blanchedalmond': (0xff/0xff, 0xeb/0xff, 0xcd/0xff), + 'blue': (0x00/0xff, 0x00/0xff, 0xff/0xff), + 'blue violet': (0x8a/0xff, 0x2b/0xff, 0xe2/0xff), + 'blue1': (0x00/0xff, 0x00/0xff, 0xff/0xff), + 'blue2': (0x00/0xff, 0x00/0xff, 0xee/0xff), + 'blue3': (0x00/0xff, 0x00/0xff, 0xcd/0xff), + 'blue4': (0x00/0xff, 0x00/0xff, 0x8b/0xff), + 'blueviolet': (0x8a/0xff, 0x2b/0xff, 0xe2/0xff), + 'brown': (0xa5/0xff, 0x2a/0xff, 0x2a/0xff), + 'brown1': (0xff/0xff, 0x40/0xff, 0x40/0xff), + 'brown2': (0xee/0xff, 0x3b/0xff, 0x3b/0xff), + 'brown3': (0xcd/0xff, 0x33/0xff, 0x33/0xff), + 'brown4': (0x8b/0xff, 0x23/0xff, 0x23/0xff), + 'burlywood': (0xde/0xff, 0xb8/0xff, 0x87/0xff), + 'burlywood1': (0xff/0xff, 0xd3/0xff, 0x9b/0xff), + 'burlywood2': (0xee/0xff, 0xc5/0xff, 0x91/0xff), + 'burlywood3': (0xcd/0xff, 0xaa/0xff, 0x7d/0xff), + 'burlywood4': (0x8b/0xff, 0x73/0xff, 0x55/0xff), + 'cadet blue': (0x5f/0xff, 0x9e/0xff, 0xa0/0xff), + 'cadetblue': (0x5f/0xff, 0x9e/0xff, 0xa0/0xff), + 'cadetblue1': (0x98/0xff, 0xf5/0xff, 0xff/0xff), + 'cadetblue2': (0x8e/0xff, 0xe5/0xff, 0xee/0xff), + 'cadetblue3': (0x7a/0xff, 0xc5/0xff, 0xcd/0xff), + 'cadetblue4': (0x53/0xff, 0x86/0xff, 0x8b/0xff), + 'chartreuse': (0x7f/0xff, 0xff/0xff, 0x00/0xff), + 'chartreuse1': (0x7f/0xff, 0xff/0xff, 0x00/0xff), + 'chartreuse2': (0x76/0xff, 0xee/0xff, 0x00/0xff), + 'chartreuse3': (0x66/0xff, 0xcd/0xff, 0x00/0xff), + 'chartreuse4': (0x45/0xff, 0x8b/0xff, 0x00/0xff), + 'chocolate': (0xd2/0xff, 0x69/0xff, 0x1e/0xff), + 'chocolate1': (0xff/0xff, 0x7f/0xff, 0x24/0xff), + 'chocolate2': (0xee/0xff, 0x76/0xff, 0x21/0xff), + 'chocolate3': (0xcd/0xff, 0x66/0xff, 0x1d/0xff), + 'chocolate4': (0x8b/0xff, 0x45/0xff, 0x13/0xff), + 'coral': (0xff/0xff, 0x7f/0xff, 0x50/0xff), + 'coral1': (0xff/0xff, 0x72/0xff, 0x56/0xff), + 'coral2': (0xee/0xff, 0x6a/0xff, 0x50/0xff), + 'coral3': (0xcd/0xff, 0x5b/0xff, 0x45/0xff), + 'coral4': (0x8b/0xff, 0x3e/0xff, 0x2f/0xff), + 'cornflower blue': (0x64/0xff, 0x95/0xff, 0xed/0xff), + 'cornflowerblue': (0x64/0xff, 0x95/0xff, 0xed/0xff), + 'cornsilk': (0xff/0xff, 0xf8/0xff, 0xdc/0xff), + 'cornsilk1': (0xff/0xff, 0xf8/0xff, 0xdc/0xff), + 'cornsilk2': (0xee/0xff, 0xe8/0xff, 0xcd/0xff), + 'cornsilk3': (0xcd/0xff, 0xc8/0xff, 0xb1/0xff), + 'cornsilk4': (0x8b/0xff, 0x88/0xff, 0x78/0xff), + 'cyan': (0x00/0xff, 0xff/0xff, 0xff/0xff), + 'cyan1': (0x00/0xff, 0xff/0xff, 0xff/0xff), + 'cyan2': (0x00/0xff, 0xee/0xff, 0xee/0xff), + 'cyan3': (0x00/0xff, 0xcd/0xff, 0xcd/0xff), + 'cyan4': (0x00/0xff, 0x8b/0xff, 0x8b/0xff), + 'dark blue': (0x00/0xff, 0x00/0xff, 0x8b/0xff), + 'dark cyan': (0x00/0xff, 0x8b/0xff, 0x8b/0xff), + 'dark goldenrod': (0xb8/0xff, 0x86/0xff, 0x0b/0xff), + 'dark gray': (0xa9/0xff, 0xa9/0xff, 0xa9/0xff), + 'dark green': (0x00/0xff, 0x64/0xff, 0x00/0xff), + 'dark grey': (0xa9/0xff, 0xa9/0xff, 0xa9/0xff), + 'dark khaki': (0xbd/0xff, 0xb7/0xff, 0x6b/0xff), + 'dark magenta': (0x8b/0xff, 0x00/0xff, 0x8b/0xff), + 'dark olive green': (0x55/0xff, 0x6b/0xff, 0x2f/0xff), + 'dark orange': (0xff/0xff, 0x8c/0xff, 0x00/0xff), + 'dark orchid': (0x99/0xff, 0x32/0xff, 0xcc/0xff), + 'dark red': (0x8b/0xff, 0x00/0xff, 0x00/0xff), + 'dark salmon': (0xe9/0xff, 0x96/0xff, 0x7a/0xff), + 'dark sea green': (0x8f/0xff, 0xbc/0xff, 0x8f/0xff), + 'dark slate blue': (0x48/0xff, 0x3d/0xff, 0x8b/0xff), + 'dark slate gray': (0x2f/0xff, 0x4f/0xff, 0x4f/0xff), + 'dark slate grey': (0x2f/0xff, 0x4f/0xff, 0x4f/0xff), + 'dark turquoise': (0x00/0xff, 0xce/0xff, 0xd1/0xff), + 'dark violet': (0x94/0xff, 0x00/0xff, 0xd3/0xff), + 'darkblue': (0x00/0xff, 0x00/0xff, 0x8b/0xff), + 'darkcyan': (0x00/0xff, 0x8b/0xff, 0x8b/0xff), + 'darkgoldenrod': (0xb8/0xff, 0x86/0xff, 0x0b/0xff), + 'darkgoldenrod1': (0xff/0xff, 0xb9/0xff, 0x0f/0xff), + 'darkgoldenrod2': (0xee/0xff, 0xad/0xff, 0x0e/0xff), + 'darkgoldenrod3': (0xcd/0xff, 0x95/0xff, 0x0c/0xff), + 'darkgoldenrod4': (0x8b/0xff, 0x65/0xff, 0x08/0xff), + 'darkgray': (0xa9/0xff, 0xa9/0xff, 0xa9/0xff), + 'darkgreen': (0x00/0xff, 0x64/0xff, 0x00/0xff), + 'darkgrey': (0xa9/0xff, 0xa9/0xff, 0xa9/0xff), + 'darkkhaki': (0xbd/0xff, 0xb7/0xff, 0x6b/0xff), + 'darkmagenta': (0x8b/0xff, 0x00/0xff, 0x8b/0xff), + 'darkolivegreen': (0x55/0xff, 0x6b/0xff, 0x2f/0xff), + 'darkolivegreen1': (0xca/0xff, 0xff/0xff, 0x70/0xff), + 'darkolivegreen2': (0xbc/0xff, 0xee/0xff, 0x68/0xff), + 'darkolivegreen3': (0xa2/0xff, 0xcd/0xff, 0x5a/0xff), + 'darkolivegreen4': (0x6e/0xff, 0x8b/0xff, 0x3d/0xff), + 'darkorange': (0xff/0xff, 0x8c/0xff, 0x00/0xff), + 'darkorange1': (0xff/0xff, 0x7f/0xff, 0x00/0xff), + 'darkorange2': (0xee/0xff, 0x76/0xff, 0x00/0xff), + 'darkorange3': (0xcd/0xff, 0x66/0xff, 0x00/0xff), + 'darkorange4': (0x8b/0xff, 0x45/0xff, 0x00/0xff), + 'darkorchid': (0x99/0xff, 0x32/0xff, 0xcc/0xff), + 'darkorchid1': (0xbf/0xff, 0x3e/0xff, 0xff/0xff), + 'darkorchid2': (0xb2/0xff, 0x3a/0xff, 0xee/0xff), + 'darkorchid3': (0x9a/0xff, 0x32/0xff, 0xcd/0xff), + 'darkorchid4': (0x68/0xff, 0x22/0xff, 0x8b/0xff), + 'darkred': (0x8b/0xff, 0x00/0xff, 0x00/0xff), + 'darksalmon': (0xe9/0xff, 0x96/0xff, 0x7a/0xff), + 'darkseagreen': (0x8f/0xff, 0xbc/0xff, 0x8f/0xff), + 'darkseagreen1': (0xc1/0xff, 0xff/0xff, 0xc1/0xff), + 'darkseagreen2': (0xb4/0xff, 0xee/0xff, 0xb4/0xff), + 'darkseagreen3': (0x9b/0xff, 0xcd/0xff, 0x9b/0xff), + 'darkseagreen4': (0x69/0xff, 0x8b/0xff, 0x69/0xff), + 'darkslateblue': (0x48/0xff, 0x3d/0xff, 0x8b/0xff), + 'darkslategray': (0x2f/0xff, 0x4f/0xff, 0x4f/0xff), + 'darkslategray1': (0x97/0xff, 0xff/0xff, 0xff/0xff), + 'darkslategray2': (0x8d/0xff, 0xee/0xff, 0xee/0xff), + 'darkslategray3': (0x79/0xff, 0xcd/0xff, 0xcd/0xff), + 'darkslategray4': (0x52/0xff, 0x8b/0xff, 0x8b/0xff), + 'darkslategrey': (0x2f/0xff, 0x4f/0xff, 0x4f/0xff), + 'darkturquoise': (0x00/0xff, 0xce/0xff, 0xd1/0xff), + 'darkviolet': (0x94/0xff, 0x00/0xff, 0xd3/0xff), + 'deep pink': (0xff/0xff, 0x14/0xff, 0x93/0xff), + 'deep sky blue': (0x00/0xff, 0xbf/0xff, 0xff/0xff), + 'deeppink': (0xff/0xff, 0x14/0xff, 0x93/0xff), + 'deeppink1': (0xff/0xff, 0x14/0xff, 0x93/0xff), + 'deeppink2': (0xee/0xff, 0x12/0xff, 0x89/0xff), + 'deeppink3': (0xcd/0xff, 0x10/0xff, 0x76/0xff), + 'deeppink4': (0x8b/0xff, 0x0a/0xff, 0x50/0xff), + 'deepskyblue': (0x00/0xff, 0xbf/0xff, 0xff/0xff), + 'deepskyblue1': (0x00/0xff, 0xbf/0xff, 0xff/0xff), + 'deepskyblue2': (0x00/0xff, 0xb2/0xff, 0xee/0xff), + 'deepskyblue3': (0x00/0xff, 0x9a/0xff, 0xcd/0xff), + 'deepskyblue4': (0x00/0xff, 0x68/0xff, 0x8b/0xff), + 'dim gray': (0x69/0xff, 0x69/0xff, 0x69/0xff), + 'dim grey': (0x69/0xff, 0x69/0xff, 0x69/0xff), + 'dimgray': (0x69/0xff, 0x69/0xff, 0x69/0xff), + 'dimgrey': (0x69/0xff, 0x69/0xff, 0x69/0xff), + 'dodger blue': (0x1e/0xff, 0x90/0xff, 0xff/0xff), + 'dodgerblue': (0x1e/0xff, 0x90/0xff, 0xff/0xff), + 'dodgerblue1': (0x1e/0xff, 0x90/0xff, 0xff/0xff), + 'dodgerblue2': (0x1c/0xff, 0x86/0xff, 0xee/0xff), + 'dodgerblue3': (0x18/0xff, 0x74/0xff, 0xcd/0xff), + 'dodgerblue4': (0x10/0xff, 0x4e/0xff, 0x8b/0xff), + 'firebrick': (0xb2/0xff, 0x22/0xff, 0x22/0xff), + 'firebrick1': (0xff/0xff, 0x30/0xff, 0x30/0xff), + 'firebrick2': (0xee/0xff, 0x2c/0xff, 0x2c/0xff), + 'firebrick3': (0xcd/0xff, 0x26/0xff, 0x26/0xff), + 'firebrick4': (0x8b/0xff, 0x1a/0xff, 0x1a/0xff), + 'floral white': (0xff/0xff, 0xfa/0xff, 0xf0/0xff), + 'floralwhite': (0xff/0xff, 0xfa/0xff, 0xf0/0xff), + 'forest green': (0x22/0xff, 0x8b/0xff, 0x22/0xff), + 'forestgreen': (0x22/0xff, 0x8b/0xff, 0x22/0xff), + 'gainsboro': (0xdc/0xff, 0xdc/0xff, 0xdc/0xff), + 'ghost white': (0xf8/0xff, 0xf8/0xff, 0xff/0xff), + 'ghostwhite': (0xf8/0xff, 0xf8/0xff, 0xff/0xff), + 'gold': (0xff/0xff, 0xd7/0xff, 0x00/0xff), + 'gold1': (0xff/0xff, 0xd7/0xff, 0x00/0xff), + 'gold2': (0xee/0xff, 0xc9/0xff, 0x00/0xff), + 'gold3': (0xcd/0xff, 0xad/0xff, 0x00/0xff), + 'gold4': (0x8b/0xff, 0x75/0xff, 0x00/0xff), + 'goldenrod': (0xda/0xff, 0xa5/0xff, 0x20/0xff), + 'goldenrod1': (0xff/0xff, 0xc1/0xff, 0x25/0xff), + 'goldenrod2': (0xee/0xff, 0xb4/0xff, 0x22/0xff), + 'goldenrod3': (0xcd/0xff, 0x9b/0xff, 0x1d/0xff), + 'goldenrod4': (0x8b/0xff, 0x69/0xff, 0x14/0xff), + 'gray': (0x80/0xff, 0x80/0xff, 0x80/0xff), + 'gray0': (0x00/0xff, 0x00/0xff, 0x00/0xff), + 'gray1': (0x03/0xff, 0x03/0xff, 0x03/0xff), + 'gray2': (0x05/0xff, 0x05/0xff, 0x05/0xff), + 'gray3': (0x08/0xff, 0x08/0xff, 0x08/0xff), + 'gray4': (0x0a/0xff, 0x0a/0xff, 0x0a/0xff), + 'gray5': (0x0d/0xff, 0x0d/0xff, 0x0d/0xff), + 'gray6': (0x0f/0xff, 0x0f/0xff, 0x0f/0xff), + 'gray7': (0x12/0xff, 0x12/0xff, 0x12/0xff), + 'gray8': (0x14/0xff, 0x14/0xff, 0x14/0xff), + 'gray9': (0x17/0xff, 0x17/0xff, 0x17/0xff), + 'gray10': (0x1a/0xff, 0x1a/0xff, 0x1a/0xff), + 'gray11': (0x1c/0xff, 0x1c/0xff, 0x1c/0xff), + 'gray12': (0x1f/0xff, 0x1f/0xff, 0x1f/0xff), + 'gray13': (0x21/0xff, 0x21/0xff, 0x21/0xff), + 'gray14': (0x24/0xff, 0x24/0xff, 0x24/0xff), + 'gray15': (0x26/0xff, 0x26/0xff, 0x26/0xff), + 'gray16': (0x29/0xff, 0x29/0xff, 0x29/0xff), + 'gray17': (0x2b/0xff, 0x2b/0xff, 0x2b/0xff), + 'gray18': (0x2e/0xff, 0x2e/0xff, 0x2e/0xff), + 'gray19': (0x30/0xff, 0x30/0xff, 0x30/0xff), + 'gray20': (0x33/0xff, 0x33/0xff, 0x33/0xff), + 'gray21': (0x36/0xff, 0x36/0xff, 0x36/0xff), + 'gray22': (0x38/0xff, 0x38/0xff, 0x38/0xff), + 'gray23': (0x3b/0xff, 0x3b/0xff, 0x3b/0xff), + 'gray24': (0x3d/0xff, 0x3d/0xff, 0x3d/0xff), + 'gray25': (0x40/0xff, 0x40/0xff, 0x40/0xff), + 'gray26': (0x42/0xff, 0x42/0xff, 0x42/0xff), + 'gray27': (0x45/0xff, 0x45/0xff, 0x45/0xff), + 'gray28': (0x47/0xff, 0x47/0xff, 0x47/0xff), + 'gray29': (0x4a/0xff, 0x4a/0xff, 0x4a/0xff), + 'gray30': (0x4d/0xff, 0x4d/0xff, 0x4d/0xff), + 'gray31': (0x4f/0xff, 0x4f/0xff, 0x4f/0xff), + 'gray32': (0x52/0xff, 0x52/0xff, 0x52/0xff), + 'gray33': (0x54/0xff, 0x54/0xff, 0x54/0xff), + 'gray34': (0x57/0xff, 0x57/0xff, 0x57/0xff), + 'gray35': (0x59/0xff, 0x59/0xff, 0x59/0xff), + 'gray36': (0x5c/0xff, 0x5c/0xff, 0x5c/0xff), + 'gray37': (0x5e/0xff, 0x5e/0xff, 0x5e/0xff), + 'gray38': (0x61/0xff, 0x61/0xff, 0x61/0xff), + 'gray39': (0x63/0xff, 0x63/0xff, 0x63/0xff), + 'gray40': (0x66/0xff, 0x66/0xff, 0x66/0xff), + 'gray41': (0x69/0xff, 0x69/0xff, 0x69/0xff), + 'gray42': (0x6b/0xff, 0x6b/0xff, 0x6b/0xff), + 'gray43': (0x6e/0xff, 0x6e/0xff, 0x6e/0xff), + 'gray44': (0x70/0xff, 0x70/0xff, 0x70/0xff), + 'gray45': (0x73/0xff, 0x73/0xff, 0x73/0xff), + 'gray46': (0x75/0xff, 0x75/0xff, 0x75/0xff), + 'gray47': (0x78/0xff, 0x78/0xff, 0x78/0xff), + 'gray48': (0x7a/0xff, 0x7a/0xff, 0x7a/0xff), + 'gray49': (0x7d/0xff, 0x7d/0xff, 0x7d/0xff), + 'gray50': (0x7f/0xff, 0x7f/0xff, 0x7f/0xff), + 'gray51': (0x82/0xff, 0x82/0xff, 0x82/0xff), + 'gray52': (0x85/0xff, 0x85/0xff, 0x85/0xff), + 'gray53': (0x87/0xff, 0x87/0xff, 0x87/0xff), + 'gray54': (0x8a/0xff, 0x8a/0xff, 0x8a/0xff), + 'gray55': (0x8c/0xff, 0x8c/0xff, 0x8c/0xff), + 'gray56': (0x8f/0xff, 0x8f/0xff, 0x8f/0xff), + 'gray57': (0x91/0xff, 0x91/0xff, 0x91/0xff), + 'gray58': (0x94/0xff, 0x94/0xff, 0x94/0xff), + 'gray59': (0x96/0xff, 0x96/0xff, 0x96/0xff), + 'gray60': (0x99/0xff, 0x99/0xff, 0x99/0xff), + 'gray61': (0x9c/0xff, 0x9c/0xff, 0x9c/0xff), + 'gray62': (0x9e/0xff, 0x9e/0xff, 0x9e/0xff), + 'gray63': (0xa1/0xff, 0xa1/0xff, 0xa1/0xff), + 'gray64': (0xa3/0xff, 0xa3/0xff, 0xa3/0xff), + 'gray65': (0xa6/0xff, 0xa6/0xff, 0xa6/0xff), + 'gray66': (0xa8/0xff, 0xa8/0xff, 0xa8/0xff), + 'gray67': (0xab/0xff, 0xab/0xff, 0xab/0xff), + 'gray68': (0xad/0xff, 0xad/0xff, 0xad/0xff), + 'gray69': (0xb0/0xff, 0xb0/0xff, 0xb0/0xff), + 'gray70': (0xb3/0xff, 0xb3/0xff, 0xb3/0xff), + 'gray71': (0xb5/0xff, 0xb5/0xff, 0xb5/0xff), + 'gray72': (0xb8/0xff, 0xb8/0xff, 0xb8/0xff), + 'gray73': (0xba/0xff, 0xba/0xff, 0xba/0xff), + 'gray74': (0xbd/0xff, 0xbd/0xff, 0xbd/0xff), + 'gray75': (0xbf/0xff, 0xbf/0xff, 0xbf/0xff), + 'gray76': (0xc2/0xff, 0xc2/0xff, 0xc2/0xff), + 'gray77': (0xc4/0xff, 0xc4/0xff, 0xc4/0xff), + 'gray78': (0xc7/0xff, 0xc7/0xff, 0xc7/0xff), + 'gray79': (0xc9/0xff, 0xc9/0xff, 0xc9/0xff), + 'gray80': (0xcc/0xff, 0xcc/0xff, 0xcc/0xff), + 'gray81': (0xcf/0xff, 0xcf/0xff, 0xcf/0xff), + 'gray82': (0xd1/0xff, 0xd1/0xff, 0xd1/0xff), + 'gray83': (0xd4/0xff, 0xd4/0xff, 0xd4/0xff), + 'gray84': (0xd6/0xff, 0xd6/0xff, 0xd6/0xff), + 'gray85': (0xd9/0xff, 0xd9/0xff, 0xd9/0xff), + 'gray86': (0xdb/0xff, 0xdb/0xff, 0xdb/0xff), + 'gray87': (0xde/0xff, 0xde/0xff, 0xde/0xff), + 'gray88': (0xe0/0xff, 0xe0/0xff, 0xe0/0xff), + 'gray89': (0xe3/0xff, 0xe3/0xff, 0xe3/0xff), + 'gray90': (0xe5/0xff, 0xe5/0xff, 0xe5/0xff), + 'gray91': (0xe8/0xff, 0xe8/0xff, 0xe8/0xff), + 'gray92': (0xeb/0xff, 0xeb/0xff, 0xeb/0xff), + 'gray93': (0xed/0xff, 0xed/0xff, 0xed/0xff), + 'gray94': (0xf0/0xff, 0xf0/0xff, 0xf0/0xff), + 'gray95': (0xf2/0xff, 0xf2/0xff, 0xf2/0xff), + 'gray96': (0xf5/0xff, 0xf5/0xff, 0xf5/0xff), + 'gray97': (0xf7/0xff, 0xf7/0xff, 0xf7/0xff), + 'gray98': (0xfa/0xff, 0xfa/0xff, 0xfa/0xff), + 'gray99': (0xfc/0xff, 0xfc/0xff, 0xfc/0xff), + 'gray100': (0xff/0xff, 0xff/0xff, 0xff/0xff), + 'green': (0x00/0xff, 0x80/0xff, 0x00/0xff), + 'green yellow': (0xad/0xff, 0xff/0xff, 0x2f/0xff), + 'green1': (0x00/0xff, 0xff/0xff, 0x00/0xff), + 'green2': (0x00/0xff, 0xee/0xff, 0x00/0xff), + 'green3': (0x00/0xff, 0xcd/0xff, 0x00/0xff), + 'green4': (0x00/0xff, 0x8b/0xff, 0x00/0xff), + 'greenyellow': (0xad/0xff, 0xff/0xff, 0x2f/0xff), + 'grey': (0x80/0xff, 0x80/0xff, 0x80/0xff), + 'grey0': (0x00/0xff, 0x00/0xff, 0x00/0xff), + 'grey1': (0x03/0xff, 0x03/0xff, 0x03/0xff), + 'grey2': (0x05/0xff, 0x05/0xff, 0x05/0xff), + 'grey3': (0x08/0xff, 0x08/0xff, 0x08/0xff), + 'grey4': (0x0a/0xff, 0x0a/0xff, 0x0a/0xff), + 'grey5': (0x0d/0xff, 0x0d/0xff, 0x0d/0xff), + 'grey6': (0x0f/0xff, 0x0f/0xff, 0x0f/0xff), + 'grey7': (0x12/0xff, 0x12/0xff, 0x12/0xff), + 'grey8': (0x14/0xff, 0x14/0xff, 0x14/0xff), + 'grey9': (0x17/0xff, 0x17/0xff, 0x17/0xff), + 'grey10': (0x1a/0xff, 0x1a/0xff, 0x1a/0xff), + 'grey11': (0x1c/0xff, 0x1c/0xff, 0x1c/0xff), + 'grey12': (0x1f/0xff, 0x1f/0xff, 0x1f/0xff), + 'grey13': (0x21/0xff, 0x21/0xff, 0x21/0xff), + 'grey14': (0x24/0xff, 0x24/0xff, 0x24/0xff), + 'grey15': (0x26/0xff, 0x26/0xff, 0x26/0xff), + 'grey16': (0x29/0xff, 0x29/0xff, 0x29/0xff), + 'grey17': (0x2b/0xff, 0x2b/0xff, 0x2b/0xff), + 'grey18': (0x2e/0xff, 0x2e/0xff, 0x2e/0xff), + 'grey19': (0x30/0xff, 0x30/0xff, 0x30/0xff), + 'grey20': (0x33/0xff, 0x33/0xff, 0x33/0xff), + 'grey21': (0x36/0xff, 0x36/0xff, 0x36/0xff), + 'grey22': (0x38/0xff, 0x38/0xff, 0x38/0xff), + 'grey23': (0x3b/0xff, 0x3b/0xff, 0x3b/0xff), + 'grey24': (0x3d/0xff, 0x3d/0xff, 0x3d/0xff), + 'grey25': (0x40/0xff, 0x40/0xff, 0x40/0xff), + 'grey26': (0x42/0xff, 0x42/0xff, 0x42/0xff), + 'grey27': (0x45/0xff, 0x45/0xff, 0x45/0xff), + 'grey28': (0x47/0xff, 0x47/0xff, 0x47/0xff), + 'grey29': (0x4a/0xff, 0x4a/0xff, 0x4a/0xff), + 'grey30': (0x4d/0xff, 0x4d/0xff, 0x4d/0xff), + 'grey31': (0x4f/0xff, 0x4f/0xff, 0x4f/0xff), + 'grey32': (0x52/0xff, 0x52/0xff, 0x52/0xff), + 'grey33': (0x54/0xff, 0x54/0xff, 0x54/0xff), + 'grey34': (0x57/0xff, 0x57/0xff, 0x57/0xff), + 'grey35': (0x59/0xff, 0x59/0xff, 0x59/0xff), + 'grey36': (0x5c/0xff, 0x5c/0xff, 0x5c/0xff), + 'grey37': (0x5e/0xff, 0x5e/0xff, 0x5e/0xff), + 'grey38': (0x61/0xff, 0x61/0xff, 0x61/0xff), + 'grey39': (0x63/0xff, 0x63/0xff, 0x63/0xff), + 'grey40': (0x66/0xff, 0x66/0xff, 0x66/0xff), + 'grey41': (0x69/0xff, 0x69/0xff, 0x69/0xff), + 'grey42': (0x6b/0xff, 0x6b/0xff, 0x6b/0xff), + 'grey43': (0x6e/0xff, 0x6e/0xff, 0x6e/0xff), + 'grey44': (0x70/0xff, 0x70/0xff, 0x70/0xff), + 'grey45': (0x73/0xff, 0x73/0xff, 0x73/0xff), + 'grey46': (0x75/0xff, 0x75/0xff, 0x75/0xff), + 'grey47': (0x78/0xff, 0x78/0xff, 0x78/0xff), + 'grey48': (0x7a/0xff, 0x7a/0xff, 0x7a/0xff), + 'grey49': (0x7d/0xff, 0x7d/0xff, 0x7d/0xff), + 'grey50': (0x7f/0xff, 0x7f/0xff, 0x7f/0xff), + 'grey51': (0x82/0xff, 0x82/0xff, 0x82/0xff), + 'grey52': (0x85/0xff, 0x85/0xff, 0x85/0xff), + 'grey53': (0x87/0xff, 0x87/0xff, 0x87/0xff), + 'grey54': (0x8a/0xff, 0x8a/0xff, 0x8a/0xff), + 'grey55': (0x8c/0xff, 0x8c/0xff, 0x8c/0xff), + 'grey56': (0x8f/0xff, 0x8f/0xff, 0x8f/0xff), + 'grey57': (0x91/0xff, 0x91/0xff, 0x91/0xff), + 'grey58': (0x94/0xff, 0x94/0xff, 0x94/0xff), + 'grey59': (0x96/0xff, 0x96/0xff, 0x96/0xff), + 'grey60': (0x99/0xff, 0x99/0xff, 0x99/0xff), + 'grey61': (0x9c/0xff, 0x9c/0xff, 0x9c/0xff), + 'grey62': (0x9e/0xff, 0x9e/0xff, 0x9e/0xff), + 'grey63': (0xa1/0xff, 0xa1/0xff, 0xa1/0xff), + 'grey64': (0xa3/0xff, 0xa3/0xff, 0xa3/0xff), + 'grey65': (0xa6/0xff, 0xa6/0xff, 0xa6/0xff), + 'grey66': (0xa8/0xff, 0xa8/0xff, 0xa8/0xff), + 'grey67': (0xab/0xff, 0xab/0xff, 0xab/0xff), + 'grey68': (0xad/0xff, 0xad/0xff, 0xad/0xff), + 'grey69': (0xb0/0xff, 0xb0/0xff, 0xb0/0xff), + 'grey70': (0xb3/0xff, 0xb3/0xff, 0xb3/0xff), + 'grey71': (0xb5/0xff, 0xb5/0xff, 0xb5/0xff), + 'grey72': (0xb8/0xff, 0xb8/0xff, 0xb8/0xff), + 'grey73': (0xba/0xff, 0xba/0xff, 0xba/0xff), + 'grey74': (0xbd/0xff, 0xbd/0xff, 0xbd/0xff), + 'grey75': (0xbf/0xff, 0xbf/0xff, 0xbf/0xff), + 'grey76': (0xc2/0xff, 0xc2/0xff, 0xc2/0xff), + 'grey77': (0xc4/0xff, 0xc4/0xff, 0xc4/0xff), + 'grey78': (0xc7/0xff, 0xc7/0xff, 0xc7/0xff), + 'grey79': (0xc9/0xff, 0xc9/0xff, 0xc9/0xff), + 'grey80': (0xcc/0xff, 0xcc/0xff, 0xcc/0xff), + 'grey81': (0xcf/0xff, 0xcf/0xff, 0xcf/0xff), + 'grey82': (0xd1/0xff, 0xd1/0xff, 0xd1/0xff), + 'grey83': (0xd4/0xff, 0xd4/0xff, 0xd4/0xff), + 'grey84': (0xd6/0xff, 0xd6/0xff, 0xd6/0xff), + 'grey85': (0xd9/0xff, 0xd9/0xff, 0xd9/0xff), + 'grey86': (0xdb/0xff, 0xdb/0xff, 0xdb/0xff), + 'grey87': (0xde/0xff, 0xde/0xff, 0xde/0xff), + 'grey88': (0xe0/0xff, 0xe0/0xff, 0xe0/0xff), + 'grey89': (0xe3/0xff, 0xe3/0xff, 0xe3/0xff), + 'grey90': (0xe5/0xff, 0xe5/0xff, 0xe5/0xff), + 'grey91': (0xe8/0xff, 0xe8/0xff, 0xe8/0xff), + 'grey92': (0xeb/0xff, 0xeb/0xff, 0xeb/0xff), + 'grey93': (0xed/0xff, 0xed/0xff, 0xed/0xff), + 'grey94': (0xf0/0xff, 0xf0/0xff, 0xf0/0xff), + 'grey95': (0xf2/0xff, 0xf2/0xff, 0xf2/0xff), + 'grey96': (0xf5/0xff, 0xf5/0xff, 0xf5/0xff), + 'grey97': (0xf7/0xff, 0xf7/0xff, 0xf7/0xff), + 'grey98': (0xfa/0xff, 0xfa/0xff, 0xfa/0xff), + 'grey99': (0xfc/0xff, 0xfc/0xff, 0xfc/0xff), + 'grey100': (0xff/0xff, 0xff/0xff, 0xff/0xff), + 'honeydew': (0xf0/0xff, 0xff/0xff, 0xf0/0xff), + 'honeydew1': (0xf0/0xff, 0xff/0xff, 0xf0/0xff), + 'honeydew2': (0xe0/0xff, 0xee/0xff, 0xe0/0xff), + 'honeydew3': (0xc1/0xff, 0xcd/0xff, 0xc1/0xff), + 'honeydew4': (0x83/0xff, 0x8b/0xff, 0x83/0xff), + 'hot pink': (0xff/0xff, 0x69/0xff, 0xb4/0xff), + 'hotpink': (0xff/0xff, 0x69/0xff, 0xb4/0xff), + 'hotpink1': (0xff/0xff, 0x6e/0xff, 0xb4/0xff), + 'hotpink2': (0xee/0xff, 0x6a/0xff, 0xa7/0xff), + 'hotpink3': (0xcd/0xff, 0x60/0xff, 0x90/0xff), + 'hotpink4': (0x8b/0xff, 0x3a/0xff, 0x62/0xff), + 'indian red': (0xcd/0xff, 0x5c/0xff, 0x5c/0xff), + 'indianred': (0xcd/0xff, 0x5c/0xff, 0x5c/0xff), + 'indianred1': (0xff/0xff, 0x6a/0xff, 0x6a/0xff), + 'indianred2': (0xee/0xff, 0x63/0xff, 0x63/0xff), + 'indianred3': (0xcd/0xff, 0x55/0xff, 0x55/0xff), + 'indianred4': (0x8b/0xff, 0x3a/0xff, 0x3a/0xff), + 'ivory': (0xff/0xff, 0xff/0xff, 0xf0/0xff), + 'ivory1': (0xff/0xff, 0xff/0xff, 0xf0/0xff), + 'ivory2': (0xee/0xff, 0xee/0xff, 0xe0/0xff), + 'ivory3': (0xcd/0xff, 0xcd/0xff, 0xc1/0xff), + 'ivory4': (0x8b/0xff, 0x8b/0xff, 0x83/0xff), + 'khaki': (0xf0/0xff, 0xe6/0xff, 0x8c/0xff), + 'khaki1': (0xff/0xff, 0xf6/0xff, 0x8f/0xff), + 'khaki2': (0xee/0xff, 0xe6/0xff, 0x85/0xff), + 'khaki3': (0xcd/0xff, 0xc6/0xff, 0x73/0xff), + 'khaki4': (0x8b/0xff, 0x86/0xff, 0x4e/0xff), + 'lavender': (0xe6/0xff, 0xe6/0xff, 0xfa/0xff), + 'lavender blush': (0xff/0xff, 0xf0/0xff, 0xf5/0xff), + 'lavenderblush': (0xff/0xff, 0xf0/0xff, 0xf5/0xff), + 'lavenderblush1': (0xff/0xff, 0xf0/0xff, 0xf5/0xff), + 'lavenderblush2': (0xee/0xff, 0xe0/0xff, 0xe5/0xff), + 'lavenderblush3': (0xcd/0xff, 0xc1/0xff, 0xc5/0xff), + 'lavenderblush4': (0x8b/0xff, 0x83/0xff, 0x86/0xff), + 'lawn green': (0x7c/0xff, 0xfc/0xff, 0x00/0xff), + 'lawngreen': (0x7c/0xff, 0xfc/0xff, 0x00/0xff), + 'lemon chiffon': (0xff/0xff, 0xfa/0xff, 0xcd/0xff), + 'lemonchiffon': (0xff/0xff, 0xfa/0xff, 0xcd/0xff), + 'lemonchiffon1': (0xff/0xff, 0xfa/0xff, 0xcd/0xff), + 'lemonchiffon2': (0xee/0xff, 0xe9/0xff, 0xbf/0xff), + 'lemonchiffon3': (0xcd/0xff, 0xc9/0xff, 0xa5/0xff), + 'lemonchiffon4': (0x8b/0xff, 0x89/0xff, 0x70/0xff), + 'light blue': (0xad/0xff, 0xd8/0xff, 0xe6/0xff), + 'light coral': (0xf0/0xff, 0x80/0xff, 0x80/0xff), + 'light cyan': (0xe0/0xff, 0xff/0xff, 0xff/0xff), + 'light goldenrod': (0xee/0xff, 0xdd/0xff, 0x82/0xff), + 'light goldenrod yellow': (0xfa/0xff, 0xfa/0xff, 0xd2/0xff), + 'light gray': (0xd3/0xff, 0xd3/0xff, 0xd3/0xff), + 'light green': (0x90/0xff, 0xee/0xff, 0x90/0xff), + 'light grey': (0xd3/0xff, 0xd3/0xff, 0xd3/0xff), + 'light pink': (0xff/0xff, 0xb6/0xff, 0xc1/0xff), + 'light salmon': (0xff/0xff, 0xa0/0xff, 0x7a/0xff), + 'light sea green': (0x20/0xff, 0xb2/0xff, 0xaa/0xff), + 'light sky blue': (0x87/0xff, 0xce/0xff, 0xfa/0xff), + 'light slate blue': (0x84/0xff, 0x70/0xff, 0xff/0xff), + 'light slate gray': (0x77/0xff, 0x88/0xff, 0x99/0xff), + 'light slate grey': (0x77/0xff, 0x88/0xff, 0x99/0xff), + 'light steel blue': (0xb0/0xff, 0xc4/0xff, 0xde/0xff), + 'light yellow': (0xff/0xff, 0xff/0xff, 0xe0/0xff), + 'lightblue': (0xad/0xff, 0xd8/0xff, 0xe6/0xff), + 'lightblue1': (0xbf/0xff, 0xef/0xff, 0xff/0xff), + 'lightblue2': (0xb2/0xff, 0xdf/0xff, 0xee/0xff), + 'lightblue3': (0x9a/0xff, 0xc0/0xff, 0xcd/0xff), + 'lightblue4': (0x68/0xff, 0x83/0xff, 0x8b/0xff), + 'lightcoral': (0xf0/0xff, 0x80/0xff, 0x80/0xff), + 'lightcyan': (0xe0/0xff, 0xff/0xff, 0xff/0xff), + 'lightcyan1': (0xe0/0xff, 0xff/0xff, 0xff/0xff), + 'lightcyan2': (0xd1/0xff, 0xee/0xff, 0xee/0xff), + 'lightcyan3': (0xb4/0xff, 0xcd/0xff, 0xcd/0xff), + 'lightcyan4': (0x7a/0xff, 0x8b/0xff, 0x8b/0xff), + 'lightgoldenrod': (0xee/0xff, 0xdd/0xff, 0x82/0xff), + 'lightgoldenrod1': (0xff/0xff, 0xec/0xff, 0x8b/0xff), + 'lightgoldenrod2': (0xee/0xff, 0xdc/0xff, 0x82/0xff), + 'lightgoldenrod3': (0xcd/0xff, 0xbe/0xff, 0x70/0xff), + 'lightgoldenrod4': (0x8b/0xff, 0x81/0xff, 0x4c/0xff), + 'lightgoldenrodyellow': (0xfa/0xff, 0xfa/0xff, 0xd2/0xff), + 'lightgray': (0xd3/0xff, 0xd3/0xff, 0xd3/0xff), + 'lightgreen': (0x90/0xff, 0xee/0xff, 0x90/0xff), + 'lightgrey': (0xd3/0xff, 0xd3/0xff, 0xd3/0xff), + 'lightpink': (0xff/0xff, 0xb6/0xff, 0xc1/0xff), + 'lightpink1': (0xff/0xff, 0xae/0xff, 0xb9/0xff), + 'lightpink2': (0xee/0xff, 0xa2/0xff, 0xad/0xff), + 'lightpink3': (0xcd/0xff, 0x8c/0xff, 0x95/0xff), + 'lightpink4': (0x8b/0xff, 0x5f/0xff, 0x65/0xff), + 'lightsalmon': (0xff/0xff, 0xa0/0xff, 0x7a/0xff), + 'lightsalmon1': (0xff/0xff, 0xa0/0xff, 0x7a/0xff), + 'lightsalmon2': (0xee/0xff, 0x95/0xff, 0x72/0xff), + 'lightsalmon3': (0xcd/0xff, 0x81/0xff, 0x62/0xff), + 'lightsalmon4': (0x8b/0xff, 0x57/0xff, 0x42/0xff), + 'lightseagreen': (0x20/0xff, 0xb2/0xff, 0xaa/0xff), + 'lightskyblue': (0x87/0xff, 0xce/0xff, 0xfa/0xff), + 'lightskyblue1': (0xb0/0xff, 0xe2/0xff, 0xff/0xff), + 'lightskyblue2': (0xa4/0xff, 0xd3/0xff, 0xee/0xff), + 'lightskyblue3': (0x8d/0xff, 0xb6/0xff, 0xcd/0xff), + 'lightskyblue4': (0x60/0xff, 0x7b/0xff, 0x8b/0xff), + 'lightslateblue': (0x84/0xff, 0x70/0xff, 0xff/0xff), + 'lightslategray': (0x77/0xff, 0x88/0xff, 0x99/0xff), + 'lightslategrey': (0x77/0xff, 0x88/0xff, 0x99/0xff), + 'lightsteelblue': (0xb0/0xff, 0xc4/0xff, 0xde/0xff), + 'lightsteelblue1': (0xca/0xff, 0xe1/0xff, 0xff/0xff), + 'lightsteelblue2': (0xbc/0xff, 0xd2/0xff, 0xee/0xff), + 'lightsteelblue3': (0xa2/0xff, 0xb5/0xff, 0xcd/0xff), + 'lightsteelblue4': (0x6e/0xff, 0x7b/0xff, 0x8b/0xff), + 'lightyellow': (0xff/0xff, 0xff/0xff, 0xe0/0xff), + 'lightyellow1': (0xff/0xff, 0xff/0xff, 0xe0/0xff), + 'lightyellow2': (0xee/0xff, 0xee/0xff, 0xd1/0xff), + 'lightyellow3': (0xcd/0xff, 0xcd/0xff, 0xb4/0xff), + 'lightyellow4': (0x8b/0xff, 0x8b/0xff, 0x7a/0xff), + 'lime green': (0x32/0xff, 0xcd/0xff, 0x32/0xff), + 'limegreen': (0x32/0xff, 0xcd/0xff, 0x32/0xff), + 'linen': (0xfa/0xff, 0xf0/0xff, 0xe6/0xff), + 'magenta': (0xff/0xff, 0x00/0xff, 0xff/0xff), + 'magenta1': (0xff/0xff, 0x00/0xff, 0xff/0xff), + 'magenta2': (0xee/0xff, 0x00/0xff, 0xee/0xff), + 'magenta3': (0xcd/0xff, 0x00/0xff, 0xcd/0xff), + 'magenta4': (0x8b/0xff, 0x00/0xff, 0x8b/0xff), + 'maroon': (0x80/0xff, 0x00/0xff, 0x00/0xff), + 'maroon1': (0xff/0xff, 0x34/0xff, 0xb3/0xff), + 'maroon2': (0xee/0xff, 0x30/0xff, 0xa7/0xff), + 'maroon3': (0xcd/0xff, 0x29/0xff, 0x90/0xff), + 'maroon4': (0x8b/0xff, 0x1c/0xff, 0x62/0xff), + 'medium aquamarine': (0x66/0xff, 0xcd/0xff, 0xaa/0xff), + 'medium blue': (0x00/0xff, 0x00/0xff, 0xcd/0xff), + 'medium orchid': (0xba/0xff, 0x55/0xff, 0xd3/0xff), + 'medium purple': (0x93/0xff, 0x70/0xff, 0xdb/0xff), + 'medium sea green': (0x3c/0xff, 0xb3/0xff, 0x71/0xff), + 'medium slate blue': (0x7b/0xff, 0x68/0xff, 0xee/0xff), + 'medium spring green': (0x00/0xff, 0xfa/0xff, 0x9a/0xff), + 'medium turquoise': (0x48/0xff, 0xd1/0xff, 0xcc/0xff), + 'medium violet red': (0xc7/0xff, 0x15/0xff, 0x85/0xff), + 'mediumaquamarine': (0x66/0xff, 0xcd/0xff, 0xaa/0xff), + 'mediumblue': (0x00/0xff, 0x00/0xff, 0xcd/0xff), + 'mediumorchid': (0xba/0xff, 0x55/0xff, 0xd3/0xff), + 'mediumorchid1': (0xe0/0xff, 0x66/0xff, 0xff/0xff), + 'mediumorchid2': (0xd1/0xff, 0x5f/0xff, 0xee/0xff), + 'mediumorchid3': (0xb4/0xff, 0x52/0xff, 0xcd/0xff), + 'mediumorchid4': (0x7a/0xff, 0x37/0xff, 0x8b/0xff), + 'mediumpurple': (0x93/0xff, 0x70/0xff, 0xdb/0xff), + 'mediumpurple1': (0xab/0xff, 0x82/0xff, 0xff/0xff), + 'mediumpurple2': (0x9f/0xff, 0x79/0xff, 0xee/0xff), + 'mediumpurple3': (0x89/0xff, 0x68/0xff, 0xcd/0xff), + 'mediumpurple4': (0x5d/0xff, 0x47/0xff, 0x8b/0xff), + 'mediumseagreen': (0x3c/0xff, 0xb3/0xff, 0x71/0xff), + 'mediumslateblue': (0x7b/0xff, 0x68/0xff, 0xee/0xff), + 'mediumspringgreen': (0x00/0xff, 0xfa/0xff, 0x9a/0xff), + 'mediumturquoise': (0x48/0xff, 0xd1/0xff, 0xcc/0xff), + 'mediumvioletred': (0xc7/0xff, 0x15/0xff, 0x85/0xff), + 'midnight blue': (0x19/0xff, 0x19/0xff, 0x70/0xff), + 'midnightblue': (0x19/0xff, 0x19/0xff, 0x70/0xff), + 'mint cream': (0xf5/0xff, 0xff/0xff, 0xfa/0xff), + 'mintcream': (0xf5/0xff, 0xff/0xff, 0xfa/0xff), + 'misty rose': (0xff/0xff, 0xe4/0xff, 0xe1/0xff), + 'mistyrose': (0xff/0xff, 0xe4/0xff, 0xe1/0xff), + 'mistyrose1': (0xff/0xff, 0xe4/0xff, 0xe1/0xff), + 'mistyrose2': (0xee/0xff, 0xd5/0xff, 0xd2/0xff), + 'mistyrose3': (0xcd/0xff, 0xb7/0xff, 0xb5/0xff), + 'mistyrose4': (0x8b/0xff, 0x7d/0xff, 0x7b/0xff), + 'moccasin': (0xff/0xff, 0xe4/0xff, 0xb5/0xff), + 'navajo white': (0xff/0xff, 0xde/0xff, 0xad/0xff), + 'navajowhite': (0xff/0xff, 0xde/0xff, 0xad/0xff), + 'navajowhite1': (0xff/0xff, 0xde/0xff, 0xad/0xff), + 'navajowhite2': (0xee/0xff, 0xcf/0xff, 0xa1/0xff), + 'navajowhite3': (0xcd/0xff, 0xb3/0xff, 0x8b/0xff), + 'navajowhite4': (0x8b/0xff, 0x79/0xff, 0x5e/0xff), + 'navy': (0x00/0xff, 0x00/0xff, 0x80/0xff), + 'navy blue': (0x00/0xff, 0x00/0xff, 0x80/0xff), + 'navyblue': (0x00/0xff, 0x00/0xff, 0x80/0xff), + 'old lace': (0xfd/0xff, 0xf5/0xff, 0xe6/0xff), + 'oldlace': (0xfd/0xff, 0xf5/0xff, 0xe6/0xff), + 'olive drab': (0x6b/0xff, 0x8e/0xff, 0x23/0xff), + 'olivedrab': (0x6b/0xff, 0x8e/0xff, 0x23/0xff), + 'olivedrab1': (0xc0/0xff, 0xff/0xff, 0x3e/0xff), + 'olivedrab2': (0xb3/0xff, 0xee/0xff, 0x3a/0xff), + 'olivedrab3': (0x9a/0xff, 0xcd/0xff, 0x32/0xff), + 'olivedrab4': (0x69/0xff, 0x8b/0xff, 0x22/0xff), + 'orange': (0xff/0xff, 0xa5/0xff, 0x00/0xff), + 'orange red': (0xff/0xff, 0x45/0xff, 0x00/0xff), + 'orange1': (0xff/0xff, 0xa5/0xff, 0x00/0xff), + 'orange2': (0xee/0xff, 0x9a/0xff, 0x00/0xff), + 'orange3': (0xcd/0xff, 0x85/0xff, 0x00/0xff), + 'orange4': (0x8b/0xff, 0x5a/0xff, 0x00/0xff), + 'orangered': (0xff/0xff, 0x45/0xff, 0x00/0xff), + 'orangered1': (0xff/0xff, 0x45/0xff, 0x00/0xff), + 'orangered2': (0xee/0xff, 0x40/0xff, 0x00/0xff), + 'orangered3': (0xcd/0xff, 0x37/0xff, 0x00/0xff), + 'orangered4': (0x8b/0xff, 0x25/0xff, 0x00/0xff), + 'orchid': (0xda/0xff, 0x70/0xff, 0xd6/0xff), + 'orchid1': (0xff/0xff, 0x83/0xff, 0xfa/0xff), + 'orchid2': (0xee/0xff, 0x7a/0xff, 0xe9/0xff), + 'orchid3': (0xcd/0xff, 0x69/0xff, 0xc9/0xff), + 'orchid4': (0x8b/0xff, 0x47/0xff, 0x89/0xff), + 'pale goldenrod': (0xee/0xff, 0xe8/0xff, 0xaa/0xff), + 'pale green': (0x98/0xff, 0xfb/0xff, 0x98/0xff), + 'pale turquoise': (0xaf/0xff, 0xee/0xff, 0xee/0xff), + 'pale violet red': (0xdb/0xff, 0x70/0xff, 0x93/0xff), + 'palegoldenrod': (0xee/0xff, 0xe8/0xff, 0xaa/0xff), + 'palegreen': (0x98/0xff, 0xfb/0xff, 0x98/0xff), + 'palegreen1': (0x9a/0xff, 0xff/0xff, 0x9a/0xff), + 'palegreen2': (0x90/0xff, 0xee/0xff, 0x90/0xff), + 'palegreen3': (0x7c/0xff, 0xcd/0xff, 0x7c/0xff), + 'palegreen4': (0x54/0xff, 0x8b/0xff, 0x54/0xff), + 'paleturquoise': (0xaf/0xff, 0xee/0xff, 0xee/0xff), + 'paleturquoise1': (0xbb/0xff, 0xff/0xff, 0xff/0xff), + 'paleturquoise2': (0xae/0xff, 0xee/0xff, 0xee/0xff), + 'paleturquoise3': (0x96/0xff, 0xcd/0xff, 0xcd/0xff), + 'paleturquoise4': (0x66/0xff, 0x8b/0xff, 0x8b/0xff), + 'palevioletred': (0xdb/0xff, 0x70/0xff, 0x93/0xff), + 'palevioletred1': (0xff/0xff, 0x82/0xff, 0xab/0xff), + 'palevioletred2': (0xee/0xff, 0x79/0xff, 0x9f/0xff), + 'palevioletred3': (0xcd/0xff, 0x68/0xff, 0x7f/0xff), + 'palevioletred4': (0x8b/0xff, 0x47/0xff, 0x5d/0xff), + 'papaya whip': (0xff/0xff, 0xef/0xff, 0xd5/0xff), + 'papayawhip': (0xff/0xff, 0xef/0xff, 0xd5/0xff), + 'peach puff': (0xff/0xff, 0xda/0xff, 0xb9/0xff), + 'peachpuff': (0xff/0xff, 0xda/0xff, 0xb9/0xff), + 'peachpuff1': (0xff/0xff, 0xda/0xff, 0xb9/0xff), + 'peachpuff2': (0xee/0xff, 0xcb/0xff, 0xad/0xff), + 'peachpuff3': (0xcd/0xff, 0xaf/0xff, 0x95/0xff), + 'peachpuff4': (0x8b/0xff, 0x77/0xff, 0x65/0xff), + 'peru': (0xcd/0xff, 0x85/0xff, 0x3f/0xff), + 'pink': (0xff/0xff, 0xc0/0xff, 0xcb/0xff), + 'pink1': (0xff/0xff, 0xb5/0xff, 0xc5/0xff), + 'pink2': (0xee/0xff, 0xa9/0xff, 0xb8/0xff), + 'pink3': (0xcd/0xff, 0x91/0xff, 0x9e/0xff), + 'pink4': (0x8b/0xff, 0x63/0xff, 0x6c/0xff), + 'plum': (0xdd/0xff, 0xa0/0xff, 0xdd/0xff), + 'plum1': (0xff/0xff, 0xbb/0xff, 0xff/0xff), + 'plum2': (0xee/0xff, 0xae/0xff, 0xee/0xff), + 'plum3': (0xcd/0xff, 0x96/0xff, 0xcd/0xff), + 'plum4': (0x8b/0xff, 0x66/0xff, 0x8b/0xff), + 'powder blue': (0xb0/0xff, 0xe0/0xff, 0xe6/0xff), + 'powderblue': (0xb0/0xff, 0xe0/0xff, 0xe6/0xff), + 'purple': (0x80/0xff, 0x00/0xff, 0x80/0xff), + 'purple1': (0x9b/0xff, 0x30/0xff, 0xff/0xff), + 'purple2': (0x91/0xff, 0x2c/0xff, 0xee/0xff), + 'purple3': (0x7d/0xff, 0x26/0xff, 0xcd/0xff), + 'purple4': (0x55/0xff, 0x1a/0xff, 0x8b/0xff), + 'red': (0xff/0xff, 0x00/0xff, 0x00/0xff), + 'red1': (0xff/0xff, 0x00/0xff, 0x00/0xff), + 'red2': (0xee/0xff, 0x00/0xff, 0x00/0xff), + 'red3': (0xcd/0xff, 0x00/0xff, 0x00/0xff), + 'red4': (0x8b/0xff, 0x00/0xff, 0x00/0xff), + 'rosy brown': (0xbc/0xff, 0x8f/0xff, 0x8f/0xff), + 'rosybrown': (0xbc/0xff, 0x8f/0xff, 0x8f/0xff), + 'rosybrown1': (0xff/0xff, 0xc1/0xff, 0xc1/0xff), + 'rosybrown2': (0xee/0xff, 0xb4/0xff, 0xb4/0xff), + 'rosybrown3': (0xcd/0xff, 0x9b/0xff, 0x9b/0xff), + 'rosybrown4': (0x8b/0xff, 0x69/0xff, 0x69/0xff), + 'royal blue': (0x41/0xff, 0x69/0xff, 0xe1/0xff), + 'royalblue': (0x41/0xff, 0x69/0xff, 0xe1/0xff), + 'royalblue1': (0x48/0xff, 0x76/0xff, 0xff/0xff), + 'royalblue2': (0x43/0xff, 0x6e/0xff, 0xee/0xff), + 'royalblue3': (0x3a/0xff, 0x5f/0xff, 0xcd/0xff), + 'royalblue4': (0x27/0xff, 0x40/0xff, 0x8b/0xff), + 'saddle brown': (0x8b/0xff, 0x45/0xff, 0x13/0xff), + 'saddlebrown': (0x8b/0xff, 0x45/0xff, 0x13/0xff), + 'salmon': (0xfa/0xff, 0x80/0xff, 0x72/0xff), + 'salmon1': (0xff/0xff, 0x8c/0xff, 0x69/0xff), + 'salmon2': (0xee/0xff, 0x82/0xff, 0x62/0xff), + 'salmon3': (0xcd/0xff, 0x70/0xff, 0x54/0xff), + 'salmon4': (0x8b/0xff, 0x4c/0xff, 0x39/0xff), + 'sandy brown': (0xf4/0xff, 0xa4/0xff, 0x60/0xff), + 'sandybrown': (0xf4/0xff, 0xa4/0xff, 0x60/0xff), + 'sea green': (0x2e/0xff, 0x8b/0xff, 0x57/0xff), + 'seagreen': (0x2e/0xff, 0x8b/0xff, 0x57/0xff), + 'seagreen1': (0x54/0xff, 0xff/0xff, 0x9f/0xff), + 'seagreen2': (0x4e/0xff, 0xee/0xff, 0x94/0xff), + 'seagreen3': (0x43/0xff, 0xcd/0xff, 0x80/0xff), + 'seagreen4': (0x2e/0xff, 0x8b/0xff, 0x57/0xff), + 'seashell': (0xff/0xff, 0xf5/0xff, 0xee/0xff), + 'seashell1': (0xff/0xff, 0xf5/0xff, 0xee/0xff), + 'seashell2': (0xee/0xff, 0xe5/0xff, 0xde/0xff), + 'seashell3': (0xcd/0xff, 0xc5/0xff, 0xbf/0xff), + 'seashell4': (0x8b/0xff, 0x86/0xff, 0x82/0xff), + 'sienna': (0xa0/0xff, 0x52/0xff, 0x2d/0xff), + 'sienna1': (0xff/0xff, 0x82/0xff, 0x47/0xff), + 'sienna2': (0xee/0xff, 0x79/0xff, 0x42/0xff), + 'sienna3': (0xcd/0xff, 0x68/0xff, 0x39/0xff), + 'sienna4': (0x8b/0xff, 0x47/0xff, 0x26/0xff), + 'sky blue': (0x87/0xff, 0xce/0xff, 0xeb/0xff), + 'skyblue': (0x87/0xff, 0xce/0xff, 0xeb/0xff), + 'skyblue1': (0x87/0xff, 0xce/0xff, 0xff/0xff), + 'skyblue2': (0x7e/0xff, 0xc0/0xff, 0xee/0xff), + 'skyblue3': (0x6c/0xff, 0xa6/0xff, 0xcd/0xff), + 'skyblue4': (0x4a/0xff, 0x70/0xff, 0x8b/0xff), + 'slate blue': (0x6a/0xff, 0x5a/0xff, 0xcd/0xff), + 'slate gray': (0x70/0xff, 0x80/0xff, 0x90/0xff), + 'slate grey': (0x70/0xff, 0x80/0xff, 0x90/0xff), + 'slateblue': (0x6a/0xff, 0x5a/0xff, 0xcd/0xff), + 'slateblue1': (0x83/0xff, 0x6f/0xff, 0xff/0xff), + 'slateblue2': (0x7a/0xff, 0x67/0xff, 0xee/0xff), + 'slateblue3': (0x69/0xff, 0x59/0xff, 0xcd/0xff), + 'slateblue4': (0x47/0xff, 0x3c/0xff, 0x8b/0xff), + 'slategray': (0x70/0xff, 0x80/0xff, 0x90/0xff), + 'slategray1': (0xc6/0xff, 0xe2/0xff, 0xff/0xff), + 'slategray2': (0xb9/0xff, 0xd3/0xff, 0xee/0xff), + 'slategray3': (0x9f/0xff, 0xb6/0xff, 0xcd/0xff), + 'slategray4': (0x6c/0xff, 0x7b/0xff, 0x8b/0xff), + 'slategrey': (0x70/0xff, 0x80/0xff, 0x90/0xff), + 'snow': (0xff/0xff, 0xfa/0xff, 0xfa/0xff), + 'snow1': (0xff/0xff, 0xfa/0xff, 0xfa/0xff), + 'snow2': (0xee/0xff, 0xe9/0xff, 0xe9/0xff), + 'snow3': (0xcd/0xff, 0xc9/0xff, 0xc9/0xff), + 'snow4': (0x8b/0xff, 0x89/0xff, 0x89/0xff), + 'spring green': (0x00/0xff, 0xff/0xff, 0x7f/0xff), + 'springgreen': (0x00/0xff, 0xff/0xff, 0x7f/0xff), + 'springgreen1': (0x00/0xff, 0xff/0xff, 0x7f/0xff), + 'springgreen2': (0x00/0xff, 0xee/0xff, 0x76/0xff), + 'springgreen3': (0x00/0xff, 0xcd/0xff, 0x66/0xff), + 'springgreen4': (0x00/0xff, 0x8b/0xff, 0x45/0xff), + 'steel blue': (0x46/0xff, 0x82/0xff, 0xb4/0xff), + 'steelblue': (0x46/0xff, 0x82/0xff, 0xb4/0xff), + 'steelblue1': (0x63/0xff, 0xb8/0xff, 0xff/0xff), + 'steelblue2': (0x5c/0xff, 0xac/0xff, 0xee/0xff), + 'steelblue3': (0x4f/0xff, 0x94/0xff, 0xcd/0xff), + 'steelblue4': (0x36/0xff, 0x64/0xff, 0x8b/0xff), + 'tan': (0xd2/0xff, 0xb4/0xff, 0x8c/0xff), + 'tan1': (0xff/0xff, 0xa5/0xff, 0x4f/0xff), + 'tan2': (0xee/0xff, 0x9a/0xff, 0x49/0xff), + 'tan3': (0xcd/0xff, 0x85/0xff, 0x3f/0xff), + 'tan4': (0x8b/0xff, 0x5a/0xff, 0x2b/0xff), + 'thistle': (0xd8/0xff, 0xbf/0xff, 0xd8/0xff), + 'thistle1': (0xff/0xff, 0xe1/0xff, 0xff/0xff), + 'thistle2': (0xee/0xff, 0xd2/0xff, 0xee/0xff), + 'thistle3': (0xcd/0xff, 0xb5/0xff, 0xcd/0xff), + 'thistle4': (0x8b/0xff, 0x7b/0xff, 0x8b/0xff), + 'tomato': (0xff/0xff, 0x63/0xff, 0x47/0xff), + 'tomato1': (0xff/0xff, 0x63/0xff, 0x47/0xff), + 'tomato2': (0xee/0xff, 0x5c/0xff, 0x42/0xff), + 'tomato3': (0xcd/0xff, 0x4f/0xff, 0x39/0xff), + 'tomato4': (0x8b/0xff, 0x36/0xff, 0x26/0xff), + 'turquoise': (0x40/0xff, 0xe0/0xff, 0xd0/0xff), + 'turquoise1': (0x00/0xff, 0xf5/0xff, 0xff/0xff), + 'turquoise2': (0x00/0xff, 0xe5/0xff, 0xee/0xff), + 'turquoise3': (0x00/0xff, 0xc5/0xff, 0xcd/0xff), + 'turquoise4': (0x00/0xff, 0x86/0xff, 0x8b/0xff), + 'violet': (0xee/0xff, 0x82/0xff, 0xee/0xff), + 'violet red': (0xd0/0xff, 0x20/0xff, 0x90/0xff), + 'violetred': (0xd0/0xff, 0x20/0xff, 0x90/0xff), + 'violetred1': (0xff/0xff, 0x3e/0xff, 0x96/0xff), + 'violetred2': (0xee/0xff, 0x3a/0xff, 0x8c/0xff), + 'violetred3': (0xcd/0xff, 0x32/0xff, 0x78/0xff), + 'violetred4': (0x8b/0xff, 0x22/0xff, 0x52/0xff), + 'wheat': (0xf5/0xff, 0xde/0xff, 0xb3/0xff), + 'wheat1': (0xff/0xff, 0xe7/0xff, 0xba/0xff), + 'wheat2': (0xee/0xff, 0xd8/0xff, 0xae/0xff), + 'wheat3': (0xcd/0xff, 0xba/0xff, 0x96/0xff), + 'wheat4': (0x8b/0xff, 0x7e/0xff, 0x66/0xff), + 'white': (0xff/0xff, 0xff/0xff, 0xff/0xff), + 'white smoke': (0xf5/0xff, 0xf5/0xff, 0xf5/0xff), + 'whitesmoke': (0xf5/0xff, 0xf5/0xff, 0xf5/0xff), + 'yellow': (0xff/0xff, 0xff/0xff, 0x00/0xff), + 'yellow green': (0x9a/0xff, 0xcd/0xff, 0x32/0xff), + 'yellow1': (0xff/0xff, 0xff/0xff, 0x00/0xff), + 'yellow2': (0xee/0xff, 0xee/0xff, 0x00/0xff), + 'yellow3': (0xcd/0xff, 0xcd/0xff, 0x00/0xff), + 'yellow4': (0x8b/0xff, 0x8b/0xff, 0x00/0xff), + 'yellowgreen': (0x9a/0xff, 0xcd/0xff, 0x32/0xff) +}; + with cairo.SVGSurface(filename, 512, 512) as surface: cr = cairo.Context(surface); del cairo + + def arc(x, y, r, a1, a2): + cr.arc(x, y, r, a1, a2); + + def circle(x, y, r): + cr.arc(x, y, r, 0, 2 * math.pi); + + def fill(): + cr.fill(); + + def set_color(color): + if color in COLORS: + (r,g,b) = COLORS[color]; + else: + (r,g,b) = (0,0,0) + cr.set_source_rgb(r, g, b) + cr.set_line_width(6); exec(input) -- 2.43.0