├── pick ├── __init__.py ├── snark.py ├── __main__.py └── colours.py ├── debian ├── compat ├── source │ └── format ├── watch ├── patches │ └── README ├── upstream │ └── metadata ├── rules ├── control ├── changelog └── copyright ├── .github └── FUNDING.yml ├── pick-colour-picker-flatpak-runscript.sh ├── pick-colour-picker.png ├── pick-screenshot-16x9.png ├── data └── icons │ ├── 16x16 │ └── apps │ │ └── pick-colour-picker.png │ ├── 22x22 │ └── apps │ │ └── pick-colour-picker.png │ ├── 24x24 │ └── apps │ │ └── pick-colour-picker.png │ ├── 32x32 │ └── apps │ │ └── pick-colour-picker.png │ ├── 48x48 │ └── apps │ │ └── pick-colour-picker.png │ ├── 64x64 │ └── apps │ │ └── pick-colour-picker.png │ ├── 128x128 │ └── apps │ │ └── pick-colour-picker.png │ ├── 512x512 │ └── apps │ │ └── pick-colour-picker.png │ └── scalable │ └── apps │ └── pick-colour-picker-symbolic.svg ├── .gitignore ├── sil-build.sh ├── pick-colour-picker.desktop ├── LICENSE ├── org.kryogenix.Pick.yml ├── README.md ├── setup.py ├── pick-colour-picker.appdata.xml └── snap └── snapcraft.yaml /pick/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /debian/compat: -------------------------------------------------------------------------------- 1 | 10 2 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (native) 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: https://paypal.me/stuartlangridge 2 | -------------------------------------------------------------------------------- /pick-colour-picker-flatpak-runscript.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | PYTHONPATH=/app python3 -m pick 4 | -------------------------------------------------------------------------------- /debian/watch: -------------------------------------------------------------------------------- 1 | version=3 2 | https://github.com/stuartlangridge/ColourPicker/tags .*/V?(\d\S*)\.tar\.gz 3 | -------------------------------------------------------------------------------- /pick-colour-picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stuartlangridge/ColourPicker/HEAD/pick-colour-picker.png -------------------------------------------------------------------------------- /pick-screenshot-16x9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stuartlangridge/ColourPicker/HEAD/pick-screenshot-16x9.png -------------------------------------------------------------------------------- /data/icons/16x16/apps/pick-colour-picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stuartlangridge/ColourPicker/HEAD/data/icons/16x16/apps/pick-colour-picker.png -------------------------------------------------------------------------------- /data/icons/22x22/apps/pick-colour-picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stuartlangridge/ColourPicker/HEAD/data/icons/22x22/apps/pick-colour-picker.png -------------------------------------------------------------------------------- /data/icons/24x24/apps/pick-colour-picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stuartlangridge/ColourPicker/HEAD/data/icons/24x24/apps/pick-colour-picker.png -------------------------------------------------------------------------------- /data/icons/32x32/apps/pick-colour-picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stuartlangridge/ColourPicker/HEAD/data/icons/32x32/apps/pick-colour-picker.png -------------------------------------------------------------------------------- /data/icons/48x48/apps/pick-colour-picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stuartlangridge/ColourPicker/HEAD/data/icons/48x48/apps/pick-colour-picker.png -------------------------------------------------------------------------------- /data/icons/64x64/apps/pick-colour-picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stuartlangridge/ColourPicker/HEAD/data/icons/64x64/apps/pick-colour-picker.png -------------------------------------------------------------------------------- /data/icons/128x128/apps/pick-colour-picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stuartlangridge/ColourPicker/HEAD/data/icons/128x128/apps/pick-colour-picker.png -------------------------------------------------------------------------------- /data/icons/512x512/apps/pick-colour-picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stuartlangridge/ColourPicker/HEAD/data/icons/512x512/apps/pick-colour-picker.png -------------------------------------------------------------------------------- /debian/patches/README: -------------------------------------------------------------------------------- 1 | 0xxx: Grabbed from upstream development. 2 | 1xxx: Possibly relevant for upstream adoption. 3 | 2xxx: Only relevant for official Debian release. 4 | -------------------------------------------------------------------------------- /debian/upstream/metadata: -------------------------------------------------------------------------------- 1 | Name: Pick 2 | Bug-Database: https://github.com/stuartlangridge/ColourPicker/issues 3 | Bug-Submit: https://github.com/stuartlangridge/ColourPicker/issues/new 4 | Contact: sil@kryogenix.org 5 | Repository: https://github.com/stuartlangridge/ColourPicker.git 6 | Repository-Browse: https://github.com/stuartlangridge/ColourPicker/ 7 | Security-Contact: sil@kryogenix.org 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.dsc 2 | *.tar.gz 3 | *_all.deb 4 | *.build 5 | *.changes 6 | 7 | build 8 | pick.egg-info 9 | debian/pick/ 10 | debian/pick.* 11 | debian/files 12 | *.pyc 13 | pick_colour_picker.egg-info 14 | debian/pick-colour-picker* 15 | 16 | .flatpak-builder/ 17 | debian/debhelper-build-stamp 18 | pick-colour-picker_master_amd64.snap 19 | pick-colour-picker_master_source.tar.bz2 20 | ppadl.php 21 | sil-flatpack-build.sh 22 | snap/.snapcraft/ 23 | flathub 24 | gitcommit 25 | -------------------------------------------------------------------------------- /debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | 3 | DHFLAGS= 4 | export PYBUILD_SYSTEM=distutils 5 | 6 | %: 7 | dh $@ $(DHFLAGS) --with python3 --buildsystem=pybuild 8 | 9 | override_dh_auto_clean: 10 | rm -Rf pick_colour_picker.egg-info/ 11 | 12 | # dh_auto_clean with pybuild/distutils only works if setup.py is 13 | # present 14 | if [ -f setup.py ]; then \ 15 | dh_auto_clean; \ 16 | fi 17 | 18 | get-orig-source: 19 | uscan --noconf --force-download --rename --download-current-version --repack --destdir=.. 20 | -------------------------------------------------------------------------------- /sil-build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Stuart's build script. Yes. 4 | # Basically this is here to confirm that Stuart remembered to update __VERSION__ in __main__.py 5 | 6 | PYV=$(grep "__VERSION__ =" pick/__main__.py | cut -d'"' -f2) 7 | SNAPV=$(grep '^version:' snapcraft.yaml | cut -d'"' -f2) 8 | 9 | if [ A$PYV != A$SNAPV ]; then 10 | echo The versions from snapcraft.yaml and pick/__main__.py differ. Fix it. 11 | exit 1 12 | fi 13 | 14 | echo Building version $SNAPV as snap 15 | snapcraft --debug 16 | 17 | 18 | -------------------------------------------------------------------------------- /pick-colour-picker.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Name=Pick 4 | Comment=Pick is a colour picker 5 | Comment[en_US]=Pick is a color picker 6 | GenericName=Colour Picker 7 | GenericName[en_US]=Color Picker 8 | Icon=pick-colour-picker 9 | Exec=pick-colour-picker 10 | Terminal=false 11 | Actions=AboutDialog;PickFirst; 12 | Keywords=color;colour;picker;pick;chooser;palette;screen;selection; 13 | Categories=GTK;Graphics; 14 | 15 | [Desktop Action AboutDialog] 16 | Name=About Pick 17 | Exec=pick-colour-picker --about 18 | 19 | [Desktop Action PickFirst] 20 | Name=Pick a colour 21 | Name[en_US]=Pick a color 22 | Exec=pick-colour-picker --pick 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Stuart Langridge 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /org.kryogenix.Pick.yml: -------------------------------------------------------------------------------- 1 | app-id: org.kryogenix.Pick 2 | runtime: org.gnome.Platform 3 | runtime-version: '42' 4 | sdk: org.gnome.Sdk 5 | command: pick-colour-picker 6 | 7 | finish-args: 8 | - --share=ipc 9 | - --socket=pulseaudio 10 | - --socket=x11 11 | 12 | rename-desktop-file: pick-colour-picker.desktop 13 | rename-appdata-file: pick-colour-picker.appdata.xml 14 | rename-icon: pick-colour-picker 15 | 16 | modules: 17 | - name: pick-colour-picker 18 | buildsystem: simple 19 | build-commands: 20 | - install -Dm755 pick-colour-picker-flatpak-runscript.sh /app/bin/pick-colour-picker 21 | - cp -r pick /app/pick 22 | - rm -rf /app/pick/__pycache__ 23 | - install -d /app/share/icons 24 | - cp -r data/icons /app/share/icons/hicolor 25 | - install -D pick-colour-picker.desktop /app/share/applications/pick-colour-picker.desktop 26 | - install -D pick-colour-picker.appdata.xml /app/share/metainfo/pick-colour-picker.appdata.xml 27 | sources: 28 | - type: dir 29 | path: . 30 | skip: 31 | - flatpak-build 32 | - flathub 33 | - debian 34 | - pick_colour_picker.egg-info 35 | 36 | -------------------------------------------------------------------------------- /debian/control: -------------------------------------------------------------------------------- 1 | Source: pick-colour-picker 2 | Section: utils 3 | Priority: optional 4 | Maintainer: Stuart Langridge 5 | Build-Depends: debhelper (>= 10), 6 | dh-python, 7 | python3, 8 | python3-pkg-resources, 9 | python3-setuptools, 10 | Standards-Version: 3.9.3 11 | 12 | Package: pick-colour-picker 13 | Architecture: all 14 | Depends: gir1.2-dee-1.0, 15 | gir1.2-gdkpixbuf-2.0, 16 | gir1.2-glib-2.0, 17 | gir1.2-gtk-3.0, 18 | gir1.2-unity-5.0, 19 | python3 (>= 3.3), 20 | python3-cairo, 21 | python3-gi, 22 | python3-gi-cairo, 23 | ${misc:Depends}, 24 | ${python3:Depends}, 25 | Description: A colour picker that remembers where you picked colours from 26 | Pick lets you pick colours from anywhere on your screen. Choose the 27 | colour you want and Pick remembers it, names it, and shows you a 28 | screenshot so you can remember where you got it from. Zoom all the way 29 | in to pixels to pick just the right one. Show your colours in your 30 | choice of format: rgba() or hex, CSS or Gdk or Qt, whichever you prefer. 31 | Copy to the clipboard ready for pasting into code or graphics apps. 32 | -------------------------------------------------------------------------------- /debian/changelog: -------------------------------------------------------------------------------- 1 | pick-colour-picker (1.5) trusty; urgency=low 2 | 3 | * Change icon and desktop file names to pick-colour-picker to match the executable, as per HEXcube PR and dobey recommendation 4 | 5 | -- Stuart Langridge Wed, 1 Jun 2016 12:38:01 +0000 6 | 7 | pick-colour-picker (1.4) trusty; urgency=low 8 | 9 | * Brown paper bag bug; if the font size never got big enough, we hung in an infinite loop 10 | 11 | -- Stuart Langridge Sun, 29 May 2016 14:45:01 +0000 12 | 13 | pick-colour-picker (1.3) trusty; urgency=low 14 | 15 | * Save window size and position 16 | * Cap zoom levels 17 | * Show a colour swatch in the magnifier 18 | * Properly calculate font width in the magnifier 19 | * Zoom in one more step by default 20 | * Add version number to about dialog 21 | 22 | -- Stuart Langridge Sun, 29 May 2016 10:31:01 +0000 23 | 24 | pick-colour-picker (1.2) trusty; urgency=low 25 | 26 | * Attempt to handle dark themes 27 | 28 | -- Stuart Langridge Tue, 24 May 2016 22:31:01 +0000 29 | 30 | pick-colour-picker (1.1) trusty; urgency=low 31 | 32 | * Make --about work even if the app isn't running 33 | * Add en_us translations of the word "colour" in the desktop file 34 | * Add --pick command line option to launch straight into picking 35 | 36 | -- Stuart Langridge Mon, 23 May 2016 21:11:01 +0000 37 | 38 | pick-colour-picker (1.0) trusty; urgency=low 39 | 40 | * Initial release 41 | 42 | -- Stuart Langridge Tue, 17 May 2016 00:09:53 +0000 43 | 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Pick 3 |
4 | Pick 5 |

6 | 7 |

A colour picker app for Ubuntu and Linux which allows picking any colour on the screen and remembers the last few you picked.

8 | 9 | ![Pick Screenshot](pick-screenshot-16x9.png?raw=true) 10 | 11 |

Made with 💝 for

12 | 13 | [![Pick](https://snapcraft.io/pick-colour-picker/badge.svg)](https://snapcraft.io/pick-colour-picker) [![Snap Status](https://build.snapcraft.io/badge/stuartlangridge/ColourPicker.svg)](https://build.snapcraft.io/user/stuartlangridge/ColourPicker) 14 | 15 | ## Building, Testing, and Installation 16 | 17 | ### Linux 18 | 19 | [![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/pick-colour-picker) 20 | 21 | ```bash 22 | snap install pick-colour-picker 23 | ``` 24 | 25 | ### Source 26 | 27 | You'll need the following dependencies: 28 | 29 | * `gir1.2-dee-1.0` 30 | * `gir1.2-gdkpixbuf-2.0` 31 | * `gir1.2-glib-2.0` 32 | * `gir1.2-gtk-3.0` 33 | * `gir1.2-unity-5.0` 34 | * `python3-cairo` 35 | * `python3-gi` 36 | * `python3-gi-cairo` 37 | 38 | Pick can be run from the checkout with `python3 -m pick`. 39 | 40 | A `setup.py` is present, so `python3 setup.py install` is possible, but beware that [uninstalling setup.py-installed apps is not as easy as it should be](https://github.com/stuartlangridge/ColourPicker/issues/62) and prepare accordingly if you plan to use this install method. 41 | -------------------------------------------------------------------------------- /debian/copyright: -------------------------------------------------------------------------------- 1 | Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: Pick 3 | Upstream-Contact: Stuart Langridge 4 | Source: https://github.com/stuartlangridge/ColourPicker 5 | Files-Excluded: .github/* 6 | .gitignore 7 | snap/snapcraft.yaml 8 | pick-screenshot-16x9.png 9 | 10 | 11 | Files: setup.py 12 | data/* 13 | debian/* 14 | pick/* 15 | README.md 16 | Copyright: 2016 - 2019, Stuart Langridge 17 | License: Expat 18 | 19 | License: Expat 20 | Permission is hereby granted, free of charge, to any person obtaining a copy 21 | of this software and associated documentation files (the "Software"), to deal 22 | in the Software without restriction, including without limitation the rights 23 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 24 | copies of the Software, and to permit persons to whom the Software is 25 | furnished to do so, subject to the following conditions: 26 | . 27 | The above copyright notice and this permission notice shall be included in 28 | all copies or substantial portions of the Software. 29 | . 30 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 31 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 32 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 33 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 34 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 35 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 36 | THE SOFTWARE. 37 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | import sys, os 4 | from setuptools import setup 5 | 6 | icons = [] 7 | for dirpath, dirnames, filenames in os.walk("data/icons/"): 8 | relpath = dirpath[len("data/icons/"):] 9 | if relpath and filenames: 10 | icons.append((sys.prefix+"/share/icons/hicolor/"+relpath, [os.path.join(dirpath, x) for x in filenames])) 11 | 12 | 13 | setup( 14 | name='pick-colour-picker', 15 | version='1.0', 16 | 17 | url='https://kryogenix.org/code/pick', 18 | 19 | author='Stuart Langridge', 20 | author_email='sil@kryogenix.org', 21 | 22 | packages=['pick'], 23 | package_dir={'pick': 'pick'}, 24 | 25 | data_files=[ 26 | (sys.prefix+'/share/applications',['pick-colour-picker.desktop']), 27 | (sys.prefix+'/share/pixmaps', ['pick-colour-picker.png']) 28 | ] + icons, 29 | 30 | zip_safe=True, 31 | include_package_data=True, 32 | 33 | platforms='any', 34 | 35 | install_requires=[ 36 | 'setuptools' 37 | ], 38 | 39 | description='A colour picker that remembers where you picked colours from', 40 | long_description=("Pick lets you pick colours from anywhere on your screen. " 41 | "Choose the colour you want and Pick remembers it, names it, and shows you a screenshot " 42 | "so you can remember where you got it from. Zoom all the way in to pixels to pick " 43 | "just the right one. Show your colours in your choice of format: rgba() or hex, " 44 | "CSS or Gdk or Qt, whichever you prefer. Copy to the clipboard ready for pasting into " 45 | "code or graphics apps."), 46 | 47 | keywords=['pick', 'colour', 'colour picker', 'color', 'color picker'], 48 | 49 | license='MIT', 50 | classifiers=[ 51 | 'Programming Language :: Python', 52 | 'Environment :: X11 Applications :: GTK', 53 | 'Development Status :: 4 - Beta', 54 | 'Intended Audience :: End Users/Desktop', 55 | 'License :: OSI Approved :: MIT License', 56 | 'Operating System :: POSIX :: Linux', 57 | 'Topic :: Multimedia :: Graphics' 58 | ], 59 | 60 | entry_points={ 61 | 'gui_scripts': [ 62 | 'pick-colour-picker = pick.__main__:main', 63 | ] 64 | }, 65 | ) 66 | -------------------------------------------------------------------------------- /pick-colour-picker.appdata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | pick-colour-picker.desktop 5 | pick-colour-picker.desktop 6 | CC0-1.0 7 | MIT 8 | Pick 9 | A colour picker 10 | 11 |

Pick lets you pick colours from anywhere on your screen. Choose the 12 | colour you want and Pick remembers it, names it, and shows you a 13 | screenshot so you can remember where you got it from.

14 |

Zoom all the way in to pixels to pick just the right one. Show your colours in 15 | your choice of format: rgba() or hex, CSS or Gdk or Qt or Android, whichever you 16 | prefer. Copy to the clipboard ready for pasting into code or graphics apps.

17 |
18 | 19 | pick-colour-picker 20 | 21 | 22 | 23 | https://raw.githubusercontent.com/stuartlangridge/ColourPicker/app/pick-screenshot-16x9.png 24 | 25 | 26 | https://kryogenix.org/code/pick/ 27 | sil at kryogenix.org 28 | 29 | mild 30 | mild 31 | moderate 32 | moderate 33 | 34 | Stuart Langridge 35 | https://github.com/stuartlangridge/ColourPicker/issues 36 | https://paypal.me/stuartlangridge 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
45 | -------------------------------------------------------------------------------- /snap/snapcraft.yaml: -------------------------------------------------------------------------------- 1 | name: pick-colour-picker 2 | version: git 3 | version-script: | 4 | VER=$(grep __VERSION__ pick/__main__.py | head -n 1 | cut -d'=' -f2 | sed 's/ //g' | sed "s/\"//g") 5 | REV=$(git rev-parse --short HEAD) 6 | echo $VER-$REV 7 | summary: A colour picker that remembers where you picked colours from 8 | description: | 9 | Choose the colour you want and Pick remembers it, names it, and shows you a screenshot 10 | so you can remember where you got it from. Zoom all the way in to pixels to pick 11 | just the right one. Show your colours in your choice of format: rgba() or hex, 12 | CSS or Gdk or Qt, whichever you prefer. Copy to the clipboard ready for pasting into 13 | code or graphics apps. 14 | icon: pick-colour-picker.png 15 | 16 | base: core18 17 | grade: stable 18 | confinement: strict 19 | 20 | plugs: 21 | gnome-3-28-1804: 22 | interface: content 23 | target: gnome-platform 24 | default-provider: gnome-3-28-1804:gnome-3-28-1804 25 | gtk-3-themes: 26 | interface: content 27 | target: $SNAP/share/themes 28 | default-provider: gtk-common-themes:gtk-3-themes 29 | icon-themes: 30 | interface: content 31 | target: $SNAP/share/icons 32 | default-provider: gtk-common-themes:icon-themes 33 | sound-themes: 34 | interface: content 35 | target: $SNAP/share/sounds 36 | default-provider: gtk-common-themes:sounds-themes 37 | 38 | slots: 39 | pick-colour-picker-dbus: 40 | interface: dbus 41 | name: org.kryogenix.Pick 42 | bus: session 43 | 44 | apps: 45 | pick-colour-picker: 46 | environment: 47 | XDG_DATA_DIRS: $SNAP/share:$XDG_DATA_DIRS 48 | LD_LIBRARY_PATH: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libunity 49 | command: desktop-launch $SNAP/bin/pick-colour-picker 50 | desktop: usr/share/applications/pick-colour-picker.desktop 51 | plugs: 52 | - desktop 53 | - gsettings 54 | - home 55 | - unity7 56 | - wayland 57 | - x11 58 | 59 | parts: 60 | desktop-gtk3: 61 | build-packages: 62 | - libgtk-3-dev 63 | make-parameters: 64 | - FLAVOR=gtk3 65 | plugin: make 66 | source: https://github.com/ubuntu/snapcraft-desktop-helpers.git 67 | source-subdir: gtk 68 | 69 | pick-colour-picker: 70 | after: 71 | - desktop-gtk3 72 | source: . 73 | plugin: python 74 | python-version: python3 75 | stage-packages: 76 | - gir1.2-dee-1.0 77 | - gir1.2-gdkpixbuf-2.0 78 | - gir1.2-glib-2.0 79 | - gir1.2-gtk-3.0 80 | - gir1.2-unity-5.0 81 | - python3-cairo 82 | - python3-gi 83 | - python3-gi-cairo 84 | override-pull: | 85 | snapcraftctl pull 86 | sed -i 's|Icon=pick-colour-picker|Icon=${SNAP}/usr/share/pixmaps/pick-colour-picker.png|g' pick-colour-picker.desktop 87 | # Most of what Pick requires is provided by the GNOME platform snap; so just prime what we need. 88 | prime: 89 | - bin 90 | - command-*.wrapper 91 | - flavor-select 92 | - lib 93 | - usr/bin/python* 94 | - usr/lib/girepository-1.0 95 | - usr/lib/python3* 96 | - usr/lib/*/gio 97 | - usr/lib/*/girepository-1.0 98 | - usr/lib/*/libdbusmenu* 99 | - usr/lib/*/libdee* 100 | - usr/lib/*/libunity* 101 | - usr/share/applications/pick-colour-picker.desktop 102 | - usr/share/icons/hicolor/*/apps/pick-colour-picker.png 103 | - usr/share/icons/hicolor/*/apps/pick-colour-picker-symbolic.svg 104 | - usr/share/pixmaps/pick-colour-picker.png 105 | -------------------------------------------------------------------------------- /pick/snark.py: -------------------------------------------------------------------------------- 1 | # Names from https://glitch.com/~name-that-color by shorties_jooce and Adrienne Porter Felt 2 | # Used with permission ("Feel free to use this however you like. Please be cool about giving credit.") 3 | 4 | COLOUR_NAMES = [ 5 | (0, 0, 0, '"we don\'t know who struck first... but we know that it was us that scorched the sky"'), 6 | (0, 0, 85, 'the deep part of the ocean, with the creepy fish'), 7 | (0, 0, 170, 'the necklace that cursed the Titanic'), 8 | (0, 0, 255, 'the necklace that cursed the Titanic'), 9 | (0, 85, 0, "I'm not Irish, but I've got quite a bit of Scotch in me"), 10 | (0, 85, 85, 'liquid Nyquil'), 11 | (0, 85, 170, "every social media app's brand color"), 12 | (0, 85, 255, 'blue raspberries are not a real thing'), 13 | (0, 170, 0, "kiss me, I'm (pretending to be) Irish"), 14 | (0, 170, 85, 'what fearfully sits at the bottom of the ocean? (a nervous wreck)'), 15 | (0, 170, 170, "every social media app's brand color"), 16 | (0, 170, 255, 'the baby boy section at Target'), 17 | (0, 255, 0, "if you touch this you'll get superpowers"), 18 | (0, 255, 85, "if you touch this you'll get superpowers"), 19 | (0, 255, 170, 'any box this color better have jewelry in it'), 20 | (0, 255, 255, 'any box this color better have jewelry in it'), 21 | (85, 0, 0, 'lipstick for haunting the descendents of your enemies'), 22 | (85, 0, 85, '"grape" flavor (never seen a real grape)'), 23 | (85, 0, 170, 'failed search engine brand color'), 24 | (85, 0, 255, 'do not trifle with anyone wearing this eyeshadow'), 25 | (85, 85, 0, 'poopy diaper'), 26 | (85, 85, 85, 'the ashes of your (disappointed) ancestors'), 27 | (85, 85, 170, 'Purple Rain'), 28 | (85, 85, 255, 'Purple Rain'), 29 | (85, 170, 0, "kiss me, I'm (pretending to be) Irish"), 30 | (85, 170, 85, 'wet grass is the enemy of white sneakers'), 31 | (85, 170, 170, 'smurf blood'), 32 | (85, 170, 255, "what's blue and doesn't weigh very much? (light blue)"), 33 | (85, 255, 0, 'I bought 1.8 million avocados instead of a house'), 34 | (85, 255, 85, 'Lisa Frank dolphins'), 35 | (85, 255, 170, "if you touch this you'll get superpowers"), 36 | (85, 255, 255, "if you touch this you'll get superpowers"), 37 | (170, 0, 0, 'murder scene'), 38 | (170, 0, 85, 'nail color for committing summertime crimes'), 39 | (170, 0, 170, 'Lisa Frank dolphins'), 40 | (170, 0, 255, 'nail color for committing summertime crimes'), 41 | (170, 85, 0, "it's fall so you better like orange"), 42 | (170, 85, 85, 'men call this "salmon" because fish are manlier than pink'), 43 | (170, 85, 170, 'unicorn poop'), 44 | (170, 85, 255, 'positive pregnancy test'), 45 | (170, 170, 0, 'a sports drink with more calories than your jog burned'), 46 | (170, 170, 85, 'midlife crisis Porsche'), 47 | (170, 170, 170, 'pollution-enhanced sunset'), 48 | (170, 170, 255, 'the last color anyone sees before the gender reveal party goes horribly wrong'), 49 | (170, 255, 0, "what's a fly in a black and yellow jumper? (a wannabee)"), 50 | (170, 255, 85, "drinking something this color can't be a good idea"), 51 | (170, 255, 170, 'boogers'), 52 | (170, 255, 255, 'the last color anyone sees before the gender reveal party goes horribly wrong'), 53 | (255, 0, 0, "AOC's lipstick"), 54 | (255, 0, 85, 'LadyPink (costs 20% more)'), 55 | (255, 0, 170, 'LadyPink (costs 20% more)'), 56 | (255, 0, 255, 'liquid Benadryl'), 57 | (255, 85, 0, 'unflattering sports team shirt'), 58 | (255, 85, 85, 'white people on the beach'), 59 | (255, 85, 170, "millenials can't afford houses but at least we have this shade of pink"), 60 | (255, 85, 255, 'positive pregnancy test'), 61 | (255, 170, 0, 'spray "cheese"'), 62 | (255, 170, 85, 'no one actually likes canteloupe'), 63 | (255, 170, 170, '"nude" tights that only match Becky\'s skin'), 64 | (255, 170, 255, "millenials can't afford houses but at least we have this shade of pink"), 65 | (255, 255, 0, 'piss'), 66 | (255, 255, 85, 'piss'), 67 | (255, 255, 170, '"I\'d like to speak to the manager" hair'), 68 | (255, 255, 255, 'wedding dress (first wedding)') 69 | ] -------------------------------------------------------------------------------- /data/icons/scalable/apps/pick-colour-picker-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | image/svg+xml 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /pick/__main__.py: -------------------------------------------------------------------------------- 1 | import gi 2 | gi.require_version('Gtk', '3.0') 3 | from gi.repository import Gtk, Gdk, GLib, GdkPixbuf, Gio 4 | try: 5 | gi.require_version('Unity', '7.0') 6 | from gi.repository import Unity 7 | except: 8 | Unity = False 9 | import cairo, math, json, os, codecs, time, subprocess, sys, base64, colorsys 10 | 11 | __VERSION__ = "1.60.178" 12 | 13 | if "--snark" in sys.argv: 14 | from .snark import COLOUR_NAMES 15 | else: 16 | from .colours import COLOUR_NAMES 17 | 18 | 19 | def rgb_to_lab(r, g, b): 20 | """Convert RGB colours to LAB colours 21 | thank you Roman Nazarkin, http://stackoverflow.com/a/16020102/1418014""" 22 | inputColor = [r, g, b] 23 | num = 0 24 | RGB = [0, 0, 0] 25 | for value in inputColor: 26 | value = float(value) / 255 27 | if value > 0.04045: 28 | value = ((value + 0.055) / 1.055) ** 2.4 29 | else: 30 | value = value / 12.92 31 | RGB[num] = value * 100 32 | num = num + 1 33 | XYZ = [0, 0, 0] 34 | X = RGB[0] * 0.4124 + RGB[1] * 0.3576 + RGB[2] * 0.1805 35 | Y = RGB[0] * 0.2126 + RGB[1] * 0.7152 + RGB[2] * 0.0722 36 | Z = RGB[0] * 0.0193 + RGB[1] * 0.1192 + RGB[2] * 0.9505 37 | XYZ[0] = round(X, 4) 38 | XYZ[1] = round(Y, 4) 39 | XYZ[2] = round(Z, 4) 40 | 41 | XYZ[0] = float(XYZ[0]) / 95.047 # ref_X = 95.047 42 | # XYZ[0]: Observer= 2deg, Illuminant= D65 43 | XYZ[1] = float(XYZ[1]) / 100.0 # ref_Y = 100.000 44 | XYZ[2] = float(XYZ[2]) / 108.883 # ref_Z = 108.883 45 | 46 | num = 0 47 | for value in XYZ: 48 | if value > 0.008856: 49 | value = value ** (0.3333333333333333) 50 | else: 51 | value = (7.787 * value) + (16 / 116) 52 | XYZ[num] = value 53 | num = num + 1 54 | 55 | Lab = [0, 0, 0] 56 | L = (116 * XYZ[1]) - 16 57 | a = 500 * (XYZ[0] - XYZ[1]) 58 | b = 200 * (XYZ[1] - XYZ[2]) 59 | 60 | Lab[0] = round(L, 4) 61 | Lab[1] = round(a, 4) 62 | Lab[2] = round(b, 4) 63 | 64 | return Lab 65 | 66 | 67 | def deltaE(labA, labB): 68 | """deltaE is the standard way to compare two colours 69 | for how visibly alike they are""" 70 | deltaL = labA[0] - labB[0] 71 | deltaA = labA[1] - labB[1] 72 | deltaB = labA[2] - labB[2] 73 | c1 = math.sqrt(labA[1] * labA[1] + labA[2] * labA[2]) 74 | c2 = math.sqrt(labB[1] * labB[1] + labB[2] * labB[2]) 75 | deltaC = c1 - c2 76 | deltaH = deltaA * deltaA + deltaB * deltaB - deltaC * deltaC 77 | if deltaH < 0: 78 | deltaH = 0 79 | else: 80 | deltaH = math.sqrt(deltaH) 81 | sc = 1.0 + 0.045 * c1 82 | sh = 1.0 + 0.015 * c1 83 | deltaLKlsl = deltaL / (1.0) 84 | deltaCkcsc = deltaC / (sc) 85 | deltaHkhsh = deltaH / (sh) 86 | i = (deltaLKlsl * deltaLKlsl + deltaCkcsc * deltaCkcsc + 87 | deltaHkhsh * deltaHkhsh) 88 | if i < 0: 89 | return 0 90 | else: 91 | return math.sqrt(i) 92 | 93 | 94 | LAB_COLOUR_NAMES = [(rgb_to_lab(x[0], x[1], x[2]), x[3]) for x in COLOUR_NAMES] 95 | 96 | 97 | class Main(object): 98 | def __init__(self): 99 | # useful globals 100 | self.snapsize = (120, 120) # must both be even, and must be square 101 | self.closest_name_cache = {} 102 | self.history = [] 103 | self.colour_text_labels = [] 104 | self.grabbed = False 105 | self.zoomlevel = 2 106 | self.resize_timeout = None 107 | self.window_metrics = None 108 | self.window_metrics_restored = False 109 | 110 | # create application 111 | self.app = Gtk.Application.new( 112 | "org.kryogenix.Pick", 113 | Gio.ApplicationFlags.HANDLES_COMMAND_LINE) 114 | self.app.connect("command-line", self.handle_commandline) 115 | 116 | def pick_after_window_mapped(self, window, _): 117 | window.disconnect_by_func(self.pick_after_window_mapped) 118 | self.grab(self.btngrab) 119 | 120 | def handle_commandline(self, app, cmdline): 121 | if hasattr(self, "w"): 122 | # already started 123 | if "--about" in cmdline.get_arguments(): 124 | self.show_about_dialog() 125 | if "--pick" in cmdline.get_arguments(): 126 | GLib.idle_add(self.grab, self.btngrab) 127 | return 0 128 | # First time startup 129 | if "--pick" in cmdline.get_arguments(): 130 | self.start_everything_first_time(self.pick_after_window_mapped) 131 | else: 132 | self.start_everything_first_time() 133 | if "--about" in cmdline.get_arguments(): 134 | self.show_about_dialog() 135 | return 0 136 | 137 | def start_everything_first_time(self, on_window_map=None): 138 | GLib.set_application_name("Pick") 139 | 140 | # the window 141 | self.w = Gtk.ApplicationWindow.new(self.app) 142 | self.w.set_title("Pick") 143 | self.w.set_size_request((self.snapsize[0]/2) * 2 + 200, 144 | (self.snapsize[1]/2) * 5 + 200) 145 | self.w.connect("motion-notify-event", self.magnifier_move) 146 | self.w.connect("button-press-event", self.magnifier_clicked) 147 | self.w.connect("scroll-event", self.magnifier_scrollwheel) 148 | self.w.connect("key-press-event", self.magnifier_keypress) 149 | self.w.connect("configure-event", self.window_configure) 150 | self.w.connect("destroy", lambda a: self.app.quit()) 151 | if on_window_map: 152 | self.w.connect("map-event", on_window_map) 153 | 154 | devman = self.w.get_screen().get_display().get_device_manager() 155 | self.pointer = devman.get_client_pointer() 156 | keyboards = [ 157 | x for x in devman.list_devices(Gdk.DeviceType.MASTER) 158 | if x.get_property("input-source") == Gdk.InputSource.KEYBOARD 159 | ] 160 | self.keyboard = None 161 | if len(keyboards) > 0: 162 | self.keyboard = keyboards[0] 163 | # bit lairy, that, but it should be OK in normal use cases 164 | 165 | # The lowlight colour: used for subsidiary text throughout, 166 | # and looked up from the theme 167 | ok, col = self.w.get_style_context().lookup_color("theme_text_color") 168 | if ok: 169 | self.lowlight_rgba = col 170 | else: 171 | self.lowlight_rgba = Gdk.RGBA(red=0.5, green=0.5, 172 | blue=0.5, alpha=1) 173 | ok, col = self.w.get_style_context().lookup_color("theme_fg_color") 174 | if ok: 175 | self.highlight_rgba = col 176 | else: 177 | self.highlight_rgba = self.w.get_style_context().get_color( 178 | Gtk.StateFlags.NORMAL) 179 | 180 | # The CSS 181 | highlight_average = (self.highlight_rgba.red + 182 | self.highlight_rgba.green + 183 | self.highlight_rgba.blue) / 3 184 | if highlight_average > 0.5: 185 | ROWBGCOL = "rgba(0, 0, 0, 0.6)" 186 | else: 187 | ROWBGCOL = "rgba(255, 255, 255, 0.6)" 188 | style_provider = Gtk.CssProvider() 189 | css = """ 190 | GtkLabel { transition: 250ms ease-in-out; } 191 | GtkLabel.highlighted { background-color: rgba(255, 255, 0, 0.4); } 192 | GtkLabel#empty-heading { font-size: 200%; } 193 | GtkFrame { 194 | background-color: ROWBGCOL 195 | } 196 | GtkEventBox GtkFrame { 197 | border-width: 0 0 1px 0; 198 | padding: 6px 0; 199 | } 200 | GtkEventBox:focus { 201 | background: rgba(0, 0, 0, 0.2); 202 | } 203 | GtkEventBox:nth-child(5) GtkFrame { 204 | border-width: 0; 205 | padding: 6px 0; 206 | } 207 | """.replace("ROWBGCOL", ROWBGCOL).encode("utf-8") 208 | style_provider.load_from_data(css) 209 | Gtk.StyleContext.add_provider_for_screen( 210 | Gdk.Screen.get_default(), 211 | style_provider, 212 | Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION 213 | ) 214 | 215 | # the headerbar 216 | head = Gtk.HeaderBar() 217 | head.set_show_close_button(True) 218 | head.props.title = "Pick" 219 | self.w.set_titlebar(head) 220 | btngrab = Gtk.Button() 221 | self.btngrab = btngrab 222 | icon = Gio.ThemedIcon(name="pick-colour-picker-symbolic") 223 | theme_icon = Gtk.IconTheme.get_default().lookup_by_gicon(icon, 0, 0) 224 | image = None 225 | if theme_icon: 226 | # our symbolic icon is included in the theme, so use it 227 | image = Gtk.Image.new_from_gicon(icon, Gtk.IconSize.BUTTON) 228 | else: 229 | # not in the theme, so we're probably running locally; 230 | # use the local one 231 | snap_icon = os.path.join(os.path.split(__file__)[0], "..", 232 | "data", "icons", "scalable", "apps", 233 | "pick-colour-picker-symbolic.svg") 234 | flatpak_icon = ("/app/share/icons/hicolor/scalable/apps/" 235 | "org.kryogenix.Pick-symbolic.svg") 236 | if os.path.isfile(snap_icon): 237 | image = Gtk.Image.new_from_file(snap_icon) 238 | elif os.path.isfile(flatpak_icon): 239 | image = Gtk.Image.new_from_file(flatpak_icon) 240 | else: 241 | print("Warning: couldn't find the symbolic icon") 242 | btngrab.add(image) 243 | head.pack_start(btngrab) 244 | btngrab.connect("clicked", self.grab) 245 | 246 | # the box that contains everything 247 | self.vb = Gtk.VBox() 248 | 249 | # The menu 250 | if Unity: 251 | self.add_desktop_menu() 252 | 253 | # the status bar and its formats list 254 | hb = Gtk.HBox() 255 | self.formatters = { 256 | "CSS hex": lambda r, g, b: "#%02x%02x%02x" % ( 257 | int(r), int(g), int(b)), 258 | "CSS uppercase hex": lambda r, g, b: ("#%02x%02x%02x" % ( 259 | int(r), int(g), int(b))).upper(), 260 | "CSS rgb": lambda r, g, b: "rgb(%s, %s, %s)" % ( 261 | int(r), int(g), int(b)), 262 | "CSS rgba": lambda r, g, b: "rgba(%s, %s, %s, 1)" % ( 263 | int(r), int(g), int(b)), 264 | "CSS rgb (new-style)": lambda r, g, b: "rgb(%s %s %s)" % ( 265 | int(r), int(g), int(b)), 266 | "CSS rgba (new-style)": lambda r, g, b: "rgb(%s %s %s / 100%%)" % ( 267 | int(r), int(g), int(b)), 268 | "CSS lab": lambda r, g, b: "lab({:.0f}% {:.0f} {:.0f} / 100%)".format(*rgb_to_lab( 269 | int(r), int(g), int(b))), 270 | "CSS hsl": lambda r, g, b: "hsl({:.0f}deg {:.0f}% {:.0f}%)".format( 271 | colorsys.rgb_to_hls(r/255.0, g/255.0, b/255.0)[0] * 360, 272 | colorsys.rgb_to_hls(r/255.0, g/255.0, b/255.0)[2] * 100, 273 | colorsys.rgb_to_hls(r/255.0, g/255.0, b/255.0)[1] * 100), 274 | "GDK.RGBA": lambda r, g, b: "Gdk.RGBA(%.3f, %.3f, %.3f, 1.0)" % ( 275 | r/255.0, g/255.0, b/255.0), 276 | "QML Qt.rgba": lambda r, g, b: "Qt.rgba(%.3f, %.3f, %.3f, 1.0)" % ( 277 | r/255.0, g/255.0, b/255.0), 278 | "Android resource": lambda r, g, b: 279 | "#%02x%02x%02x" % ( 280 | self.closest_name(r, g, b).lower(), r, g, b) 281 | } 282 | formats = Gtk.ListStore(str) 283 | for fr, fn in self.formatters.items(): 284 | formats.append((fr,)) 285 | self.fcom = Gtk.ComboBox.new_with_model(formats) 286 | fcell = Gtk.CellRendererText() 287 | self.fcom.pack_start(fcell, expand=True) 288 | self.fcom.add_attribute(fcell, "text", 0) 289 | vcell = Gtk.CellRendererText() 290 | self.fcom.pack_start(vcell, True) 291 | self.fcom.set_cell_data_func(vcell, self.formatRGB) 292 | vcell.set_property('xalign', 1.0) 293 | vcell.set_property("foreground_rgba", self.lowlight_rgba) 294 | self.active_formatter = "CSS rgb" 295 | self.fcom.set_active(list(self.formatters.keys()).index( 296 | self.active_formatter)) 297 | self.fcom.connect("changed", self.change_format) 298 | hb.pack_start(Gtk.Label(label="Format:"), False, False, 12) 299 | hb.pack_start(self.fcom, False, False, 12) 300 | self.vb.pack_start(hb, False, False, 12) 301 | 302 | # the box that history items go in 303 | hb3 = Gtk.HBox() 304 | f = Gtk.Frame() 305 | self.container_vb = Gtk.VBox() 306 | self.vb.pack_start(hb3, True, True, 0) 307 | hb3.pack_start(f, True, True, 12) 308 | f.add(self.container_vb) 309 | self.container_vb.get_style_context().add_class("container_vb") 310 | 311 | # The clear history button 312 | self.btnclear = Gtk.Button(label="Clear history") 313 | self.btnclear.set_sensitive(False) 314 | self.btnclear.connect("clicked", self.clear_history) 315 | hb2 = Gtk.HBox() 316 | hb2.pack_end(self.btnclear, False, False, 12) 317 | self.vb.pack_end(hb2, False, False, 12) 318 | 319 | # the empty state, which we always show now because we don't 320 | # know if there is history until we've loaded it, which is done lazily 321 | self.empty = Gtk.VBox() 322 | icon = Gio.ThemedIcon(name="pick-colour-picker") 323 | theme_icon = Gtk.IconTheme.get_default().lookup_by_gicon(icon, 48, 0) 324 | if theme_icon and False: 325 | # print("Theme icon exists") 326 | image = Gtk.Image.new_from_gicon(icon, Gtk.IconSize.DIALOG) 327 | # and get a pixbuf from it to use as the default icon 328 | self.w.set_default_icon(theme_icon.load_icon()) 329 | else: 330 | image = None 331 | # not in the theme, so we're probably running locally; 332 | # use the local one 333 | licon = os.path.join( 334 | os.path.split(__file__)[0], "..", 335 | "data", "icons", "48x48", "apps", "pick-colour-picker.png") 336 | if os.path.exists(licon): 337 | # print("Using local icon", licon) 338 | image = Gtk.Image.new_from_file(licon) 339 | elif os.environ.get("SNAP"): 340 | # probably we're in a snap 341 | sicon = os.path.join( 342 | os.path.split(__file__)[0], 343 | os.environ.get('SNAP'), "usr", "share", "icons", "hicolor", 344 | "48x48", "apps", "pick-colour-picker.png") 345 | if os.path.exists(sicon): 346 | # print("Using local snap icon", sicon) 347 | image = Gtk.Image.new_from_file(sicon) 348 | else: 349 | # probably we're in a flatpak 350 | #print("Probably in a flatpak" 351 | ficon = "/app/share/icons/hicolor/48x48/apps/org.kryogenix.Pick.png" 352 | if os.path.exists(ficon): 353 | # print("Using local flatpak icon", ficon) 354 | image = Gtk.Image.new_from_file(ficon) 355 | # and set this as the default icon if it exists 356 | if image: 357 | self.w.set_default_icon(image.get_pixbuf()) 358 | if image: 359 | image.set_property("valign", Gtk.Align.END) 360 | self.empty.pack_start(image, True, True, 0) 361 | nocol1 = Gtk.Label(label="No Colours") 362 | nocol1.set_name("empty-heading") 363 | self.empty.pack_start(nocol1, False, False, 12) 364 | nocol2 = Gtk.Label(label="You haven't picked any colours.") 365 | nocol2.set_property("valign", Gtk.Align.START) 366 | self.empty.pack_start(nocol2, True, True, 0) 367 | self.w.add(self.empty) 368 | 369 | # and, go 370 | self.w.show_all() 371 | GLib.idle_add(self.load_history) 372 | 373 | def window_configure(self, window, ev): 374 | if not self.window_metrics_restored: 375 | return False 376 | if self.resize_timeout: 377 | GLib.source_remove(self.resize_timeout) 378 | self.resize_timeout = GLib.timeout_add_seconds( 379 | 1, self.save_window_metrics_after_timeout, 380 | {"x": ev.x, "y": ev.y, "w": ev.width, "h": ev.height}) 381 | 382 | def save_window_metrics_after_timeout(self, props): 383 | GLib.source_remove(self.resize_timeout) 384 | self.resize_timeout = None 385 | self.save_window_metrics(props) 386 | 387 | def save_window_metrics(self, props): 388 | scr = self.w.get_screen() 389 | sw = float(scr.get_width()) 390 | sh = float(scr.get_height()) 391 | # We save window dimensions as fractions of the screen dimensions, 392 | # to cope with screen resolution changes while we weren't running 393 | self.window_metrics = { 394 | "ww": props["w"] / sw, 395 | "wh": props["h"] / sh, 396 | "wx": props["x"] / sw, 397 | "wy": props["y"] / sh 398 | } 399 | self.serialise() 400 | 401 | def moveit(self, x, y): 402 | self.w.move(x, y) 403 | 404 | def sizeit(self, w, h): 405 | self.w.resize(w, h) 406 | 407 | def restore_window_metrics(self, metrics): 408 | scr = self.w.get_screen() 409 | sw = float(scr.get_width()) 410 | sh = float(scr.get_height()) 411 | GLib.timeout_add(50, self.moveit, 412 | int(sw * metrics["wx"]), int(sh * metrics["wy"])) 413 | GLib.timeout_add(55, self.sizeit, 414 | int(sw * metrics["ww"]), int(sh * metrics["wh"])) 415 | 416 | def add_desktop_menu(self): 417 | action_group = Gtk.ActionGroup("menu_actions") 418 | action_filemenu = Gtk.Action("FileMenu", "File", None, None) 419 | action_group.add_action(action_filemenu) 420 | action_new = Gtk.Action("FileCapture", "_Capture", 421 | "Capture a pixel colour", Gtk.STOCK_NEW) 422 | action_new.connect("activate", self.grab) 423 | action_group.add_action_with_accel(action_new, None) 424 | action_filequit = Gtk.Action("FileQuit", None, None, Gtk.STOCK_QUIT) 425 | action_filequit.connect("activate", lambda a: self.app.quit()) 426 | action_group.add_action(action_filequit) 427 | action_group.add_actions([ 428 | ("HelpMenu", None, "Help"), 429 | ("HelpAbout", None, "About", None, None, self.show_about_dialog) 430 | ]) 431 | uimanager = Gtk.UIManager() 432 | uimanager.add_ui_from_string(""" 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | """) 444 | accelgroup = uimanager.get_accel_group() 445 | self.w.add_accel_group(accelgroup) 446 | uimanager.insert_action_group(action_group) 447 | menubar = uimanager.get_widget("/MenuBar") 448 | box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) 449 | box.pack_start(menubar, False, False, 0) 450 | self.vb.pack_start(box, False, False, 0) 451 | 452 | def show_about_dialog(self, *args): 453 | about_dialog = Gtk.AboutDialog() 454 | about_dialog.set_artists(["Sam Hewitt"]) 455 | about_dialog.set_authors(["Stuart Langridge"]) 456 | about_dialog.set_version(__VERSION__) 457 | about_dialog.set_license_type(Gtk.License.MIT_X11) 458 | about_dialog.set_website("https://www.kryogenix.org/code/pick") 459 | about_dialog.run() 460 | if about_dialog: 461 | about_dialog.destroy() 462 | 463 | def play_sound(self, soundid): 464 | # Normally shelling uot is a terrible thing to do, but GI bindings 465 | # for GSound require Ubuntu 16.04 or later and aren't installed 466 | # by default, and we're not passing user input to this function, 467 | # and it's fire-and-forget, and we don't care if it 468 | # fails, so it's fine. 469 | try: 470 | subprocess.Popen(["canberra-gtk-play", "-i", soundid]) 471 | except: 472 | pass 473 | 474 | def clear_history(self, button): 475 | self.history = [] 476 | for c in self.container_vb.get_children(): 477 | c.get_parent().remove(c) 478 | self.w.remove(self.vb) 479 | self.w.add(self.empty) 480 | self.serialise() 481 | 482 | def grab(self, btn): 483 | self.grabbed = True 484 | # we grab the keyboard so that we get the Escape keypress to cancel 485 | # a pick even though we're transparent 486 | if self.keyboard: 487 | self.keyboard.grab( 488 | self.w.get_window(), 489 | Gdk.GrabOwnership.APPLICATION, 490 | True, 491 | Gdk.EventMask.KEY_PRESS_MASK, 492 | None, 493 | Gdk.CURRENT_TIME) 494 | self.w.set_opacity(0.0) 495 | self.set_magnifier_cursor() 496 | # grab cursor img again after win is transparent 497 | # even if mouse doesn't move 498 | GLib.timeout_add(250, self.set_magnifier_cursor) 499 | 500 | def set_magnifier_cursor(self): 501 | root = Gdk.get_default_root_window() 502 | pointer, px, py = self.pointer.get_position() 503 | 504 | # Screenshot where the cursor is, at snapsize 505 | self.latest_pb = self.snap( 506 | px-(self.snapsize[0]/2), py-(self.snapsize[1]/2), 507 | self.snapsize[0], self.snapsize[1]) 508 | 509 | # Zoom that screenshot up, and grab a 510 | # snapsize-sized piece from the middle 511 | scaled_pb = self.latest_pb.scale_simple( 512 | self.snapsize[0] * 2, self.snapsize[1] * 2, 513 | GdkPixbuf.InterpType.NEAREST) 514 | scaled_pb_subset = scaled_pb.new_subpixbuf( 515 | self.snapsize[0] / 2 + 1, self.snapsize[1] / 2 + 1, 516 | self.snapsize[0], self.snapsize[1]) 517 | 518 | # Create the base surface for our cursor 519 | base = cairo.ImageSurface(cairo.FORMAT_ARGB32, 520 | self.snapsize[0] * self.zoomlevel, 521 | self.snapsize[1] * self.zoomlevel) 522 | base_context = cairo.Context(base) 523 | base_context.scale(self.zoomlevel, self.zoomlevel) 524 | 525 | # Create the circular path on our base surface 526 | base_context.arc(self.snapsize[0] / 2, self.snapsize[1] / 2, 527 | self.snapsize[0] / 2, 0, 2*math.pi) 528 | 529 | # Paste in the screenshot 530 | Gdk.cairo_set_source_pixbuf(base_context, scaled_pb_subset, 0, 0) 531 | 532 | # Save the context now, before clipping, so we can restore it later 533 | base_context.save() 534 | 535 | # Clip to that circular path, keeping the path around for later, 536 | # and paint the pasted screenshot 537 | base_context.clip_preserve() 538 | base_context.paint() 539 | 540 | # set scale back for when we're drawing the borders 541 | base_context.scale(1, 1) 542 | 543 | # Draw the outside border of the magnifier 544 | base_context.set_source_rgba(0, 0, 0, 1) 545 | base_context.set_line_width(4) 546 | base_context.stroke() 547 | 548 | # Restore the context, thus removing the clip region 549 | base_context.restore() 550 | 551 | # Draw the inside square border of the magnifier 552 | base_context.set_source_rgba(255, 0, 0, 0.5) 553 | base_context.set_line_width(1) 554 | base_context.move_to(self.snapsize[0]/2 - 2, self.snapsize[1]/2 - 2) 555 | base_context.rel_line_to(3, 0) 556 | base_context.rel_line_to(0, 3) 557 | base_context.rel_line_to(-3, 0) 558 | base_context.rel_line_to(0, -3) 559 | base_context.stroke() 560 | 561 | # Get the current colour and write it on the magnifier, 562 | # in the default font with a black rectangle under it 563 | rect_border_width = 2 564 | col = self.get_colour_from_pb(self.latest_pb) 565 | text = self.formatters[self.active_formatter](col[0], col[1], col[2]) 566 | # calculate maximum text size 567 | nfs = 6 568 | loopcount = 0 569 | max_rwidth = self.snapsize[0] * 0.7 570 | while True: 571 | x_bearing, y_bearing, text_width, text_height, x_advance, y_advance = \ 572 | base_context.text_extents(text) 573 | rwidth = text_width + (2 * rect_border_width) 574 | if rwidth > max_rwidth: 575 | nfs = nfs - 1 576 | break 577 | nfs += 1 578 | base_context.set_font_size(nfs) 579 | loopcount += 1 580 | if loopcount > 50: 581 | # probably an infinite loop 582 | nfs = 6 583 | break 584 | 585 | base_context.set_font_size(nfs) 586 | x_bearing, y_bearing, text_width, text_height, x_advance, y_advance = \ 587 | base_context.text_extents(text) 588 | text_draw_x = ((base.get_width() / self.zoomlevel) * 0.98) - text_width 589 | text_draw_y = (((base.get_height() / self.zoomlevel) * 0.95) - 590 | text_height) 591 | base_context.rectangle( 592 | text_draw_x - rect_border_width + x_bearing, 593 | text_draw_y - rect_border_width + y_bearing, 594 | text_width + (2 * rect_border_width), 595 | text_height + (2 * rect_border_width) 596 | ) 597 | base_context.set_source_rgba(0, 0, 0, 0.7) 598 | base_context.fill() 599 | base_context.set_source_rgba(255, 255, 255, 1.0) 600 | base_context.move_to(text_draw_x, text_draw_y) 601 | base_context.show_text(text) 602 | # and draw colour swatch next to colour name 603 | base_context.rectangle( 604 | text_draw_x - rect_border_width + x_bearing - ( 605 | text_height + (2 * rect_border_width)), 606 | text_draw_y - rect_border_width + y_bearing, 607 | text_height + (2 * rect_border_width), 608 | text_height + (2 * rect_border_width) 609 | ) 610 | base_context.set_source_rgba(col[0]/255.0, col[1]/255.0, 611 | col[2]/255.0, 1.0) 612 | base_context.fill() 613 | 614 | # turn the base surface into a pixbuf and thence a cursor 615 | drawn_pb = Gdk.pixbuf_get_from_surface(base, 0, 0, base.get_width(), 616 | base.get_height()) 617 | zoom_pb = drawn_pb.scale_simple( 618 | self.snapsize[0] * self.zoomlevel, self.snapsize[1] * self.zoomlevel, 619 | GdkPixbuf.InterpType.TILES) 620 | magnifier = Gdk.Cursor.new_from_pixbuf( 621 | self.w.get_screen().get_display(), 622 | zoom_pb, 623 | zoom_pb.get_width()/2, zoom_pb.get_height()/2) 624 | 625 | # Set the cursor 626 | res = self.pointer.grab( 627 | self.w.get_window(), 628 | Gdk.GrabOwnership.APPLICATION, 629 | True, 630 | (Gdk.EventMask.BUTTON_PRESS_MASK | 631 | Gdk.EventMask.POINTER_MOTION_MASK | 632 | Gdk.EventMask.SCROLL_MASK), 633 | magnifier, 634 | Gdk.CURRENT_TIME) 635 | 636 | def ungrab(self, *args, **kwargs): 637 | self.pointer.ungrab(Gdk.CURRENT_TIME) 638 | if self.keyboard: 639 | self.keyboard.ungrab(Gdk.CURRENT_TIME) 640 | self.grabbed = False 641 | self.w.set_opacity(1.0) 642 | self.w.present() 643 | 644 | def get_cache_file(self): 645 | return os.path.join(GLib.get_user_cache_dir(), "colour-picker.json") 646 | 647 | def serialise(self, *args, **kwargs): 648 | # yeah, yeah, supposed to use Gio's async file stuff here. But it 649 | # was writing corrupted files, and I have no idea why; probably the 650 | # Python var containing the data was going out of scope or something. 651 | # Anyway, we're only storing five small images, so life's too short 652 | # to hammer on this; we'll write with Python and take the hit. 653 | fp = codecs.open(self.get_cache_file(), encoding="utf8", mode="w") 654 | data = {"colours": self.history, "formatter": self.active_formatter} 655 | if self.window_metrics: 656 | data["metrics"] = self.window_metrics 657 | json.dump(data, fp, indent=2) 658 | fp.close() 659 | 660 | def rounded_path(self, surface, w, h): 661 | radius = w / 10 662 | # https://www.cairographics.org/samples/rounded_rectangle/ 663 | surface.arc(w - radius, radius, radius, -90 * math.pi / 180, 0) 664 | surface.arc(w - radius, h - radius, radius, 0, 90 * math.pi / 180) 665 | surface.arc(radius, h - radius, radius, 90 * math.pi / 180, 666 | 180 * math.pi / 180) 667 | surface.arc(radius, radius, radius, 180 * math.pi / 180, 668 | 270 * math.pi / 180) 669 | surface.close_path() 670 | 671 | def rectangle_draw(self, da, surface, r, g, b): 672 | w, h = da.get_size_request() 673 | self.rounded_path(surface, w, h) 674 | surface.set_source_rgb(r/255.0, g/255.0, b/255.0) 675 | surface.clip_preserve() 676 | surface.fill_preserve() 677 | surface.set_line_width(2) 678 | surface.set_source_rgba(0, 0, 0, 0.1) 679 | surface.stroke() 680 | 681 | def image_draw(self, da, surface, pixbuf): 682 | w, h = da.get_size_request() 683 | self.rounded_path(surface, w, h) 684 | Gdk.cairo_set_source_pixbuf(surface, pixbuf, 0, 0) 685 | surface.clip_preserve() 686 | surface.paint() 687 | surface.set_line_width(2) 688 | surface.set_source_rgba(0, 0, 0, 0.1) 689 | surface.stroke() 690 | 691 | def add_history_item(self, r, g, b, base64_imgdata=None, pixbuf=None): 692 | def show_copy(eb, ev, img): img.set_opacity(1) 693 | 694 | def hide_copy(eb, ev, img): img.set_opacity(0) 695 | 696 | def clipboard(button, r, g, b, label): 697 | def unfade(label): 698 | label.get_style_context().remove_class("highlighted") 699 | colour = self.formatters[self.active_formatter](r, g, b) 700 | Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD).set_text( 701 | colour, len(colour)) 702 | label.get_style_context().add_class("highlighted") 703 | GLib.timeout_add(300, unfade, label) 704 | self.play_sound("dialog-information") 705 | 706 | eb = Gtk.EventBox() 707 | hb = Gtk.HBox() 708 | f = Gtk.Frame() 709 | eb.add(f) 710 | f.add(hb) 711 | 712 | if base64_imgdata: 713 | loader = GdkPixbuf.PixbufLoader.new_with_type("png") 714 | loader.write(base64.b64decode(base64_imgdata.encode("utf-8"))) 715 | pixbuf = loader.get_pixbuf() 716 | loader.close() 717 | elif pixbuf: 718 | success, data = pixbuf.save_to_bufferv("png", [], []) 719 | base64_imgdata = base64.b64encode(data).decode("utf-8") 720 | else: 721 | raise Exception( 722 | "A history item must have either imgdata or a pixbuf") 723 | 724 | i = Gtk.DrawingArea() 725 | i.set_size_request(self.snapsize[0]/2, self.snapsize[1]/2) 726 | i.connect("draw", self.image_draw, pixbuf) 727 | hb.pack_start(i, False, False, 6) 728 | 729 | area = Gtk.DrawingArea() 730 | area.set_size_request(self.snapsize[0]/2, self.snapsize[1]/2) 731 | area.connect("draw", self.rectangle_draw, r, g, b) 732 | hb.pack_start(area, False, False, 6) 733 | 734 | lbl = Gtk.Label() 735 | self.colour_text_labels.append(lbl) 736 | self.set_colour_label_text(lbl, r, g, b) 737 | lbl.set_halign(Gtk.Align.START) 738 | hb.pack_start(lbl, True, True, 6) 739 | 740 | copy = Gtk.Button.new_from_icon_name("edit-copy-symbolic", 0) 741 | copy.set_label("Copy") 742 | copy.set_opacity(0) 743 | copy.connect("clicked", clipboard, r, g, b, lbl) 744 | copy.connect("enter-notify-event", show_copy, copy) 745 | copy.connect("leave-notify-event", hide_copy, copy) 746 | hb.pack_start(copy, False, False, 6) 747 | 748 | eb.connect("enter-notify-event", show_copy, copy) 749 | eb.connect("leave-notify-event", hide_copy, copy) 750 | eb.set_tooltip_text("Copy to clipboard") 751 | 752 | eb.set_property("can_focus", True) 753 | eb.connect("focus-in-event", show_copy, copy) 754 | eb.connect("focus-out-event", hide_copy, copy) 755 | 756 | revealer = Gtk.Revealer() 757 | revealer.set_transition_type(Gtk.RevealerTransitionType.SLIDE_DOWN) 758 | revealer.add(eb) 759 | 760 | self.container_vb.pack_start(revealer, False, False, 0) 761 | self.container_vb.reorder_child(revealer, 0) 762 | self.vb.show_all() 763 | eb.show_all() 764 | revealer.set_reveal_child(True) 765 | 766 | self.history.append({ 767 | "imgdata": base64_imgdata, 768 | "colour": [r, g, b] 769 | }) 770 | 771 | while len(self.history) > 5: 772 | del self.history[0] 773 | del self.colour_text_labels[0] 774 | self.container_vb.get_children()[5].destroy() 775 | 776 | if self.empty.get_parent(): 777 | self.empty.get_parent().remove(self.empty) 778 | if not self.vb.get_parent(): 779 | self.w.add(self.vb) 780 | self.vb.show_all() 781 | self.btnclear.set_sensitive(True) 782 | 783 | def set_colour_label_text(self, lbl, r, g, b): 784 | mk = '%s\n%s' 785 | lbl.set_markup(mk % ( 786 | self.formatters["CSS hex"]( 787 | 255 * self.highlight_rgba.red, 788 | 255 * self.highlight_rgba.green, 789 | 255 * self.highlight_rgba.blue), 790 | self.closest_name(r, g, b), 791 | self.formatters["CSS hex"]( 792 | 255 * self.lowlight_rgba.red, 793 | 255 * self.lowlight_rgba.green, 794 | 255 * self.lowlight_rgba.blue), 795 | self.formatters[self.active_formatter](r, g, b).replace( 796 | "<", "<") 797 | )) 798 | 799 | def finish_loading_history(self, f, res): 800 | try: 801 | try: 802 | success, contents, _ = f.load_contents_finish(res) 803 | except GLib.Error as e: 804 | print(("couldn't restore settings (error: %s)," 805 | " so assuming they're blank") % (e,)) 806 | contents = "{}" # fake contents 807 | 808 | try: 809 | data = json.loads(contents) 810 | except: 811 | print("Failed to restore data") 812 | data = {} 813 | colours = data.get("colours") 814 | if colours: 815 | for item in colours: 816 | self.add_history_item( 817 | item["colour"][0], 818 | item["colour"][1], 819 | item["colour"][2], 820 | base64_imgdata=item["imgdata"] 821 | ) 822 | f = data.get("formatter") 823 | if f and f in self.formatters.keys(): 824 | self.active_formatter = f 825 | self.fcom.set_active(list(self.formatters.keys()).index(f)) 826 | metrics = data.get("metrics") 827 | if metrics: 828 | self.restore_window_metrics(metrics) 829 | self.window_metrics_restored = True 830 | 831 | except: 832 | # print "Failed to restore data" 833 | raise 834 | 835 | def load_history(self): 836 | f = Gio.File.new_for_path(self.get_cache_file()) 837 | f.load_contents_async(None, self.finish_loading_history) 838 | 839 | def magnifier_scrollwheel(self, window, ev): 840 | if self.grabbed: 841 | if ev.direction == Gdk.ScrollDirection.SMOOTH: 842 | return 843 | if ev.direction == Gdk.ScrollDirection.UP: 844 | self.zoomlevel += 1 845 | if self.zoomlevel > 7: 846 | self.zoomlevel = 7 847 | elif ev.direction == Gdk.ScrollDirection.DOWN: 848 | self.zoomlevel -= 1 849 | if self.zoomlevel < 2: 850 | self.zoomlevel = 2 851 | else: 852 | return 853 | self.set_magnifier_cursor() 854 | 855 | def magnifier_keypress(self, window, ev): 856 | if self.grabbed: 857 | if ev.keyval == Gdk.KEY_Escape: 858 | self.ungrab() 859 | 860 | def magnifier_clicked(self, window, ev): 861 | if self.grabbed: 862 | self.ungrab() 863 | if ev.button != 1: 864 | return # if this is not the primary button, bail 865 | colour = self.get_colour_from_pb(self.latest_pb) 866 | pbcopy = self.latest_pb.scale_simple( 867 | self.snapsize[0] / 2, 868 | self.snapsize[1] / 2, 869 | GdkPixbuf.InterpType.TILES) 870 | self.add_history_item(colour[0], colour[1], colour[2], 871 | pixbuf=pbcopy) 872 | GLib.idle_add(self.serialise) 873 | self.play_sound("camera-shutter") 874 | 875 | def get_colour_from_pb(self, pb): 876 | pixel_data = pb.get_pixels() 877 | offset = ( 878 | (pb.get_rowstride() * (self.snapsize[1] / 2)) + 879 | ((self.latest_pb.get_rowstride() / self.snapsize[0]) * 880 | (self.snapsize[0] / 2))) 881 | offset = int(offset) 882 | rgb_vals = [] 883 | # pixel data gets returned as bytes or int depending 884 | # on which Python version we're in 885 | for x in pixel_data[offset:offset+3]: 886 | if type(x) == int: 887 | rgb_vals.append(x) 888 | else: 889 | rgb_vals.append(ord(x)) 890 | rgb_vals = tuple(rgb_vals) 891 | return rgb_vals 892 | 893 | def magnifier_move(self, *args, **kwargs): 894 | if not self.grabbed: 895 | return 896 | self.set_magnifier_cursor() 897 | 898 | def change_format(self, cb): 899 | self.active_formatter = cb.get_model().get_value( 900 | cb.get_active_iter(), 0) 901 | for lbl, hist in zip(self.colour_text_labels, self.history): 902 | self.set_colour_label_text(lbl, hist["colour"][0], 903 | hist["colour"][1], hist["colour"][2]) 904 | GLib.idle_add(self.serialise) 905 | 906 | def closest_name(self, r, g, b): 907 | max_deltaE_found = 999999999 908 | col = self.closest_name_cache.get((r, g, b)) 909 | if col is not None: 910 | return col 911 | labcol = rgb_to_lab(r, g, b) 912 | for reflabcol, name in LAB_COLOUR_NAMES: 913 | dE = deltaE(labcol, reflabcol) 914 | if dE < max_deltaE_found: 915 | col = name 916 | max_deltaE_found = dE 917 | self.closest_name_cache[(r, g, b)] = col 918 | return col 919 | 920 | def formatRGB(self, column, cell_renderer, model, iter): 921 | formatter = self.formatters.get(model.get_value(iter, 0)) 922 | text = "?" 923 | if formatter: 924 | text = formatter(255, 255, 255) 925 | cell_renderer.set_property("text", text) 926 | 927 | def snap(self, x, y, w, h): 928 | display = Gdk.Display.get_default() 929 | (screen, self.x, self.y, modifier) = display.get_pointer() 930 | root = Gdk.get_default_root_window() 931 | screenshot = Gdk.pixbuf_get_from_window(root, x, y, w, h) 932 | return screenshot 933 | 934 | 935 | def main(): 936 | m = Main() 937 | m.app.run(sys.argv) 938 | 939 | 940 | if __name__ == "__main__": main() 941 | -------------------------------------------------------------------------------- /pick/colours.py: -------------------------------------------------------------------------------- 1 | # Colour names list from http://chir.ag/projects/ntc/ntc.js, for which many thanks 2 | # Used under CC-BY 2.5 3 | COLOUR_NAMES = [ 4 | (0, 0, 0, 'Black'), 5 | (0, 0, 128, 'Navy Blue'), 6 | (0, 0, 200, 'Dark Blue'), 7 | (0, 0, 255, 'Blue'), 8 | (0, 7, 65, 'Stratos'), 9 | (0, 27, 28, 'Swamp'), 10 | (0, 35, 135, 'Resolution Blue'), 11 | (0, 41, 0, 'Deep Fir'), 12 | (0, 46, 32, 'Burnham'), 13 | (0, 47, 167, 'International Klein Blue'), 14 | (0, 49, 83, 'Prussian Blue'), 15 | (0, 51, 102, 'Midnight Blue'), 16 | (0, 51, 153, 'Smalt'), 17 | (0, 53, 50, 'Deep Teal'), 18 | (0, 62, 64, 'Cyprus'), 19 | (0, 70, 32, 'Kaitoke Green'), 20 | (0, 71, 171, 'Cobalt'), 21 | (0, 72, 22, 'Crusoe'), 22 | (0, 73, 80, 'Sherpa Blue'), 23 | (0, 86, 167, 'Endeavour'), 24 | (0, 88, 26, 'Camarone'), 25 | (0, 102, 204, 'Science Blue'), 26 | (0, 102, 255, 'Blue Ribbon'), 27 | (0, 117, 94, 'Tropical Rain Forest'), 28 | (0, 118, 163, 'Allports'), 29 | (0, 123, 167, 'Deep Cerulean'), 30 | (0, 126, 199, 'Lochmara'), 31 | (0, 127, 255, 'Azure Radiance'), 32 | (0, 128, 128, 'Teal'), 33 | (0, 149, 182, 'Bondi Blue'), 34 | (0, 157, 196, 'Pacific Blue'), 35 | (0, 166, 147, 'Persian Green'), 36 | (0, 168, 107, 'Jade'), 37 | (0, 204, 153, 'Caribbean Green'), 38 | (0, 204, 204, "Robin's Egg Blue"), 39 | (0, 255, 0, 'Green'), 40 | (0, 255, 127, 'Spring Green'), 41 | (0, 255, 255, 'Cyan / Aqua'), 42 | (1, 13, 26, 'Blue Charcoal'), 43 | (1, 22, 53, 'Midnight'), 44 | (1, 29, 19, 'Holly'), 45 | (1, 39, 49, 'Daintree'), 46 | (1, 54, 28, 'Cardin Green'), 47 | (1, 55, 26, 'County Green'), 48 | (1, 62, 98, 'Astronaut Blue'), 49 | (1, 63, 106, 'Regal Blue'), 50 | (1, 75, 67, 'Aqua Deep'), 51 | (1, 94, 133, 'Orient'), 52 | (1, 97, 98, 'Blue Stone'), 53 | (1, 109, 57, 'Fun Green'), 54 | (1, 121, 111, 'Pine Green'), 55 | (1, 121, 135, 'Blue Lagoon'), 56 | (1, 130, 107, 'Deep Sea'), 57 | (1, 163, 104, 'Green Haze'), 58 | (2, 45, 21, 'English Holly'), 59 | (2, 64, 44, 'Sherwood Green'), 60 | (2, 71, 142, 'Congress Blue'), 61 | (2, 78, 70, 'Evening Sea'), 62 | (2, 99, 149, 'Bahama Blue'), 63 | (2, 134, 111, 'Observatory'), 64 | (2, 164, 211, 'Cerulean'), 65 | (3, 22, 60, 'Tangaroa'), 66 | (3, 43, 82, 'Green Vogue'), 67 | (3, 106, 110, 'Mosque'), 68 | (4, 16, 4, 'Midnight Moss'), 69 | (4, 19, 34, 'Black Pearl'), 70 | (4, 46, 76, 'Blue Whale'), 71 | (4, 64, 34, 'Zuccini'), 72 | (4, 66, 89, 'Teal Blue'), 73 | (5, 16, 64, 'Deep Cove'), 74 | (5, 22, 87, 'Gulf Blue'), 75 | (5, 89, 137, 'Venice Blue'), 76 | (5, 111, 87, 'Watercourse'), 77 | (6, 42, 120, 'Catalina Blue'), 78 | (6, 53, 55, 'Tiber'), 79 | (6, 155, 129, 'Gossamer'), 80 | (6, 161, 137, 'Niagara'), 81 | (7, 58, 80, 'Tarawera'), 82 | (8, 1, 16, 'Jaguar'), 83 | (8, 25, 16, 'Black Bean'), 84 | (8, 37, 103, 'Deep Sapphire'), 85 | (8, 131, 112, 'Elf Green'), 86 | (8, 232, 222, 'Bright Turquoise'), 87 | (9, 34, 86, 'Downriver'), 88 | (9, 35, 15, 'Palm Green'), 89 | (9, 37, 93, 'Madison'), 90 | (9, 54, 36, 'Bottle Green'), 91 | (9, 88, 89, 'Deep Sea Green'), 92 | (9, 127, 75, 'Salem'), 93 | (10, 0, 28, 'Black Russian'), 94 | (10, 72, 13, 'Dark Fern'), 95 | (10, 105, 6, 'Japanese Laurel'), 96 | (10, 111, 117, 'Atoll'), 97 | (11, 11, 11, 'Cod Gray'), 98 | (11, 15, 8, 'Marshland'), 99 | (11, 17, 7, 'Gordons Green'), 100 | (11, 19, 4, 'Black Forest'), 101 | (11, 98, 7, 'San Felix'), 102 | (11, 218, 81, 'Malachite'), 103 | (12, 11, 29, 'Ebony'), 104 | (12, 13, 15, 'Woodsmoke'), 105 | (12, 25, 17, 'Racing Green'), 106 | (12, 122, 121, 'Surfie Green'), 107 | (12, 137, 144, 'Blue Chill'), 108 | (13, 3, 50, 'Black Rock'), 109 | (13, 17, 23, 'Bunker'), 110 | (13, 28, 25, 'Aztec'), 111 | (13, 46, 28, 'Bush'), 112 | (14, 14, 24, 'Cinder'), 113 | (14, 42, 48, 'Firefly'), 114 | (15, 45, 158, 'Torea Bay'), 115 | (16, 18, 29, 'Vulcan'), 116 | (16, 20, 5, 'Green Waterloo'), 117 | (16, 88, 82, 'Eden'), 118 | (17, 12, 108, 'Arapawa'), 119 | (18, 10, 143, 'Ultramarine'), 120 | (18, 52, 71, 'Elephant'), 121 | (18, 107, 64, 'Jewel'), 122 | (19, 0, 0, 'Diesel'), 123 | (19, 10, 6, 'Asphalt'), 124 | (19, 38, 77, 'Blue Zodiac'), 125 | (19, 79, 25, 'Parsley'), 126 | (20, 6, 0, 'Nero'), 127 | (20, 80, 170, 'Tory Blue'), 128 | (21, 31, 76, 'Bunting'), 129 | (21, 96, 189, 'Denim'), 130 | (21, 115, 107, 'Genoa'), 131 | (22, 25, 40, 'Mirage'), 132 | (22, 29, 16, 'Hunter Green'), 133 | (22, 42, 64, 'Big Stone'), 134 | (22, 50, 34, 'Celtic'), 135 | (22, 50, 44, 'Timber Green'), 136 | (22, 53, 49, 'Gable Green'), 137 | (23, 31, 4, 'Pine Tree'), 138 | (23, 85, 121, 'Chathams Blue'), 139 | (24, 45, 9, 'Deep Forest Green'), 140 | (24, 88, 122, 'Blumine'), 141 | (25, 51, 14, 'Palm Leaf'), 142 | (25, 55, 81, 'Nile Blue'), 143 | (25, 89, 168, 'Fun Blue'), 144 | (26, 26, 104, 'Lucky Point'), 145 | (26, 179, 133, 'Mountain Meadow'), 146 | (27, 2, 69, 'Tolopea'), 147 | (27, 16, 53, 'Haiti'), 148 | (27, 18, 123, 'Deep Koamaru'), 149 | (27, 20, 4, 'Acadia'), 150 | (27, 47, 17, 'Seaweed'), 151 | (27, 49, 98, 'Biscay'), 152 | (27, 101, 157, 'Matisse'), 153 | (28, 18, 8, 'Crowshead'), 154 | (28, 30, 19, 'Rangoon Green'), 155 | (28, 57, 187, 'Persian Blue'), 156 | (28, 64, 46, 'Everglade'), 157 | (28, 124, 125, 'Elm'), 158 | (29, 97, 66, 'Green Pea'), 159 | (30, 15, 4, 'Creole'), 160 | (30, 22, 9, 'Karaka'), 161 | (30, 23, 8, 'El Paso'), 162 | (30, 56, 91, 'Cello'), 163 | (30, 67, 60, 'Te Papa Green'), 164 | (30, 144, 255, 'Dodger Blue'), 165 | (30, 154, 176, 'Eastern Blue'), 166 | (31, 18, 15, 'Night Rider'), 167 | (31, 194, 194, 'Java'), 168 | (32, 32, 141, 'Jacksons Purple'), 169 | (32, 46, 84, 'Cloud Burst'), 170 | (32, 72, 82, 'Blue Dianne'), 171 | (33, 26, 14, 'Eternity'), 172 | (34, 8, 120, 'Deep Blue'), 173 | (34, 139, 34, 'Forest Green'), 174 | (35, 52, 24, 'Mallard'), 175 | (36, 10, 64, 'Violet'), 176 | (36, 12, 2, 'Kilamanjaro'), 177 | (36, 42, 29, 'Log Cabin'), 178 | (36, 46, 22, 'Black Olive'), 179 | (36, 80, 15, 'Green House'), 180 | (37, 22, 7, 'Graphite'), 181 | (37, 23, 6, 'Cannon Black'), 182 | (37, 31, 79, 'Port Gore'), 183 | (37, 39, 44, 'Shark'), 184 | (37, 49, 28, 'Green Kelp'), 185 | (37, 150, 209, 'Curious Blue'), 186 | (38, 3, 104, 'Paua'), 187 | (38, 5, 106, 'Paris M'), 188 | (38, 17, 5, 'Wood Bark'), 189 | (38, 20, 20, 'Gondola'), 190 | (38, 35, 53, 'Steel Gray'), 191 | (38, 40, 59, 'Ebony Clay'), 192 | (39, 58, 129, 'Bay of Many'), 193 | (39, 80, 75, 'Plantation'), 194 | (39, 138, 91, 'Eucalyptus'), 195 | (40, 30, 21, 'Oil'), 196 | (40, 58, 119, 'Astronaut'), 197 | (40, 106, 205, 'Mariner'), 198 | (41, 12, 94, 'Violent Violet'), 199 | (41, 33, 48, 'Bastille'), 200 | (41, 35, 25, 'Zeus'), 201 | (41, 41, 55, 'Charade'), 202 | (41, 123, 154, 'Jelly Bean'), 203 | (41, 171, 135, 'Jungle Green'), 204 | (42, 3, 89, 'Cherry Pie'), 205 | (42, 20, 14, 'Coffee Bean'), 206 | (42, 38, 48, 'Baltic Sea'), 207 | (42, 56, 11, 'Turtle Green'), 208 | (42, 82, 190, 'Cerulean Blue'), 209 | (43, 2, 2, 'Sepia Black'), 210 | (43, 25, 79, 'Valhalla'), 211 | (43, 50, 40, 'Heavy Metal'), 212 | (44, 14, 140, 'Blue Gem'), 213 | (44, 22, 50, 'Revolver'), 214 | (44, 33, 51, 'Bleached Cedar'), 215 | (44, 140, 132, 'Lochinvar'), 216 | (45, 37, 16, 'Mikado'), 217 | (45, 56, 58, 'Outer Space'), 218 | (45, 86, 155, 'St Tropaz'), 219 | (46, 3, 41, 'Jacaranda'), 220 | (46, 25, 5, 'Jacko Bean'), 221 | (46, 50, 34, 'Rangitoto'), 222 | (46, 63, 98, 'Rhino'), 223 | (46, 139, 87, 'Sea Green'), 224 | (46, 191, 212, 'Scooter'), 225 | (47, 39, 14, 'Onion'), 226 | (47, 60, 179, 'Governor Bay'), 227 | (47, 81, 158, 'Sapphire'), 228 | (47, 90, 87, 'Spectra'), 229 | (47, 97, 104, 'Casal'), 230 | (48, 5, 41, 'Melanzane'), 231 | (48, 31, 30, 'Cocoa Brown'), 232 | (48, 42, 15, 'Woodrush'), 233 | (48, 75, 106, 'San Juan'), 234 | (48, 213, 200, 'Turquoise'), 235 | (49, 28, 23, 'Eclipse'), 236 | (49, 68, 89, 'Pickled Bluewood'), 237 | (49, 91, 161, 'Azure'), 238 | (49, 114, 141, 'Calypso'), 239 | (49, 125, 130, 'Paradiso'), 240 | (50, 18, 122, 'Persian Indigo'), 241 | (50, 41, 58, 'Blackcurrant'), 242 | (50, 50, 50, 'Mine Shaft'), 243 | (50, 93, 82, 'Stromboli'), 244 | (50, 124, 20, 'Bilbao'), 245 | (50, 125, 160, 'Astral'), 246 | (51, 3, 107, 'Christalle'), 247 | (51, 41, 47, 'Thunder'), 248 | (51, 204, 153, 'Shamrock'), 249 | (52, 21, 21, 'Tamarind'), 250 | (53, 0, 54, 'Mardi Gras'), 251 | (53, 14, 66, 'Valentino'), 252 | (53, 14, 87, 'Jagger'), 253 | (53, 53, 66, 'Tuna'), 254 | (53, 78, 140, 'Chambray'), 255 | (54, 48, 80, 'Martinique'), 256 | (54, 53, 52, 'Tuatara'), 257 | (54, 60, 13, 'Waiouru'), 258 | (54, 116, 125, 'Ming'), 259 | (54, 135, 22, 'La Palma'), 260 | (55, 2, 2, 'Chocolate'), 261 | (55, 29, 9, 'Clinker'), 262 | (55, 41, 14, 'Brown Tumbleweed'), 263 | (55, 48, 33, 'Birch'), 264 | (55, 116, 117, 'Oracle'), 265 | (56, 4, 116, 'Blue Diamond'), 266 | (56, 26, 81, 'Grape'), 267 | (56, 53, 51, 'Dune'), 268 | (56, 69, 85, 'Oxford Blue'), 269 | (56, 73, 16, 'Clover'), 270 | (57, 72, 81, 'Limed Spruce'), 271 | (57, 100, 19, 'Dell'), 272 | (58, 0, 32, 'Toledo'), 273 | (58, 32, 16, 'Sambuca'), 274 | (58, 42, 106, 'Jacarta'), 275 | (58, 104, 108, 'William'), 276 | (58, 106, 71, 'Killarney'), 277 | (58, 176, 158, 'Keppel'), 278 | (59, 0, 11, 'Temptress'), 279 | (59, 9, 16, 'Aubergine'), 280 | (59, 31, 31, 'Jon'), 281 | (59, 40, 32, 'Treehouse'), 282 | (59, 122, 87, 'Amazon'), 283 | (59, 145, 180, 'Boston Blue'), 284 | (60, 8, 120, 'Windsor'), 285 | (60, 18, 6, 'Rebel'), 286 | (60, 31, 118, 'Meteorite'), 287 | (60, 32, 5, 'Dark Ebony'), 288 | (60, 57, 16, 'Camouflage'), 289 | (60, 65, 81, 'Bright Gray'), 290 | (60, 68, 67, 'Cape Cod'), 291 | (60, 73, 58, 'Lunar Green'), 292 | (61, 12, 2, 'Bean '), 293 | (61, 43, 31, 'Bistre'), 294 | (61, 125, 82, 'Goblin'), 295 | (62, 4, 128, 'Kingfisher Daisy'), 296 | (62, 28, 20, 'Cedar'), 297 | (62, 43, 35, 'English Walnut'), 298 | (62, 44, 28, 'Black Marlin'), 299 | (62, 58, 68, 'Ship Gray'), 300 | (62, 171, 191, 'Pelorous'), 301 | (63, 33, 9, 'Bronze'), 302 | (63, 37, 0, 'Cola'), 303 | (63, 48, 2, 'Madras'), 304 | (63, 48, 127, 'Minsk'), 305 | (63, 76, 58, 'Cabbage Pont'), 306 | (63, 88, 59, 'Tom Thumb'), 307 | (63, 93, 83, 'Mineral Green'), 308 | (63, 193, 170, 'Puerto Rico'), 309 | (63, 255, 0, 'Harlequin'), 310 | (64, 24, 1, 'Brown Pod'), 311 | (64, 41, 29, 'Cork'), 312 | (64, 59, 56, 'Masala'), 313 | (64, 61, 25, 'Thatch Green'), 314 | (64, 81, 105, 'Fiord'), 315 | (64, 130, 109, 'Viridian'), 316 | (64, 168, 96, 'Chateau Green'), 317 | (65, 0, 86, 'Ripe Plum'), 318 | (65, 31, 16, 'Paco'), 319 | (65, 32, 16, 'Deep Oak'), 320 | (65, 60, 55, 'Merlin'), 321 | (65, 66, 87, 'Gun Powder'), 322 | (65, 76, 125, 'East Bay'), 323 | (65, 105, 225, 'Royal Blue'), 324 | (65, 170, 120, 'Ocean Green'), 325 | (66, 3, 3, 'Burnt Maroon'), 326 | (66, 57, 33, 'Lisbon Brown'), 327 | (66, 121, 119, 'Faded Jade'), 328 | (67, 21, 96, 'Scarlet Gum'), 329 | (67, 49, 32, 'Iroko'), 330 | (67, 62, 55, 'Armadillo'), 331 | (67, 76, 89, 'River Bed'), 332 | (67, 106, 13, 'Green Leaf'), 333 | (68, 1, 45, 'Barossa'), 334 | (68, 29, 0, 'Morocco Brown'), 335 | (68, 73, 84, 'Mako'), 336 | (69, 73, 54, 'Kelp'), 337 | (69, 108, 172, 'San Marino'), 338 | (69, 177, 232, 'Picton Blue'), 339 | (70, 11, 65, 'Loulou'), 340 | (70, 36, 37, 'Crater Brown'), 341 | (70, 89, 69, 'Gray Asparagus'), 342 | (70, 130, 180, 'Steel Blue'), 343 | (72, 4, 4, 'Rustic Red'), 344 | (72, 6, 7, 'Bulgarian Rose'), 345 | (72, 6, 86, 'Clairvoyant'), 346 | (72, 28, 28, 'Cocoa Bean'), 347 | (72, 49, 49, 'Woody Brown'), 348 | (72, 60, 50, 'Taupe'), 349 | (73, 23, 12, 'Van Cleef'), 350 | (73, 38, 21, 'Brown Derby'), 351 | (73, 55, 27, 'Metallic Bronze'), 352 | (73, 84, 0, 'Verdun Green'), 353 | (73, 102, 121, 'Blue Bayoux'), 354 | (73, 113, 131, 'Bismark'), 355 | (74, 42, 4, 'Bracken'), 356 | (74, 48, 4, 'Deep Bronze'), 357 | (74, 60, 48, 'Mondo'), 358 | (74, 66, 68, 'Tundora'), 359 | (74, 68, 75, 'Gravel'), 360 | (74, 78, 90, 'Trout'), 361 | (75, 0, 130, 'Pigment Indigo'), 362 | (75, 93, 82, 'Nandor'), 363 | (76, 48, 36, 'Saddle'), 364 | (76, 79, 86, 'Abbey'), 365 | (77, 1, 53, 'Blackberry'), 366 | (77, 10, 24, 'Cab Sav'), 367 | (77, 30, 1, 'Indian Tan'), 368 | (77, 40, 45, 'Cowboy'), 369 | (77, 40, 46, 'Livid Brown'), 370 | (77, 56, 51, 'Rock'), 371 | (77, 61, 20, 'Punga'), 372 | (77, 64, 15, 'Bronzetone'), 373 | (77, 83, 40, 'Woodland'), 374 | (78, 6, 6, 'Mahogany'), 375 | (78, 42, 90, 'Bossanova'), 376 | (78, 59, 65, 'Matterhorn'), 377 | (78, 66, 12, 'Bronze Olive'), 378 | (78, 69, 98, 'Mulled Wine'), 379 | (78, 102, 73, 'Axolotl'), 380 | (78, 127, 158, 'Wedgewood'), 381 | (78, 171, 209, 'Shakespeare'), 382 | (79, 28, 112, 'Honey Flower'), 383 | (79, 35, 152, 'Daisy Bush'), 384 | (79, 105, 198, 'Indigo'), 385 | (79, 121, 66, 'Fern Green'), 386 | (79, 157, 93, 'Fruit Salad'), 387 | (79, 168, 61, 'Apple'), 388 | (80, 67, 81, 'Mortar'), 389 | (80, 112, 150, 'Kashmir Blue'), 390 | (80, 118, 114, 'Cutty Sark'), 391 | (80, 200, 120, 'Emerald'), 392 | (81, 70, 73, 'Emperor'), 393 | (81, 110, 61, 'Chalet Green'), 394 | (81, 124, 102, 'Como'), 395 | (81, 128, 143, 'Smalt Blue'), 396 | (82, 0, 31, 'Castro'), 397 | (82, 12, 23, 'Maroon Oak'), 398 | (82, 60, 148, 'Gigas'), 399 | (83, 52, 85, 'Voodoo'), 400 | (83, 68, 145, 'Victoria'), 401 | (83, 130, 75, 'Hippie Green'), 402 | (84, 16, 18, 'Heath'), 403 | (84, 67, 51, 'Judge Gray'), 404 | (84, 83, 77, 'Fuscous Gray'), 405 | (84, 144, 25, 'Vida Loca'), 406 | (85, 40, 12, 'Cioccolato'), 407 | (85, 91, 16, 'Saratoga'), 408 | (85, 109, 86, 'Finlandia'), 409 | (85, 144, 217, 'Havelock Blue'), 410 | (86, 180, 190, 'Fountain Blue'), 411 | (87, 131, 99, 'Spring Leaves'), 412 | (88, 52, 1, 'Saddle Brown'), 413 | (88, 85, 98, 'Scarpa Flow'), 414 | (88, 113, 86, 'Cactus'), 415 | (88, 154, 175, 'Hippie Blue'), 416 | (89, 29, 53, 'Wine Berry'), 417 | (89, 40, 4, 'Brown Bramble'), 418 | (89, 55, 55, 'Congo Brown'), 419 | (89, 68, 51, 'Millbrook'), 420 | (90, 110, 156, 'Waikawa Gray'), 421 | (90, 135, 160, 'Horizon'), 422 | (91, 48, 19, 'Jambalaya'), 423 | (92, 1, 32, 'Bordeaux'), 424 | (92, 5, 54, 'Mulberry Wood'), 425 | (92, 46, 1, 'Carnaby Tan'), 426 | (92, 93, 117, 'Comet'), 427 | (93, 30, 15, 'Redwood'), 428 | (93, 76, 81, 'Don Juan'), 429 | (93, 92, 88, 'Chicago'), 430 | (93, 94, 55, 'Verdigris'), 431 | (93, 119, 71, 'Dingley'), 432 | (93, 161, 159, 'Breaker Bay'), 433 | (94, 72, 62, 'Kabul'), 434 | (94, 93, 59, 'Hemlock'), 435 | (95, 61, 38, 'Irish Coffee'), 436 | (95, 95, 110, 'Mid Gray'), 437 | (95, 102, 114, 'Shuttle Gray'), 438 | (95, 167, 119, 'Aqua Forest'), 439 | (95, 179, 172, 'Tradewind'), 440 | (96, 73, 19, 'Horses Neck'), 441 | (96, 91, 115, 'Smoky'), 442 | (96, 110, 104, 'Corduroy'), 443 | (96, 147, 209, 'Danube'), 444 | (97, 39, 24, 'Espresso'), 445 | (97, 64, 81, 'Eggplant'), 446 | (97, 93, 48, 'Costa Del Sol'), 447 | (97, 132, 95, 'Glade Green'), 448 | (98, 47, 48, 'Buccaneer'), 449 | (98, 63, 45, 'Quincy'), 450 | (98, 78, 154, 'Butterfly Bush'), 451 | (98, 81, 25, 'West Coast'), 452 | (98, 102, 73, 'Finch'), 453 | (99, 154, 143, 'Patina'), 454 | (99, 183, 108, 'Fern'), 455 | (100, 86, 183, 'Blue Violet'), 456 | (100, 96, 119, 'Dolphin'), 457 | (100, 100, 99, 'Storm Dust'), 458 | (100, 106, 84, 'Siam'), 459 | (100, 110, 117, 'Nevada'), 460 | (100, 149, 237, 'Cornflower Blue'), 461 | (100, 204, 219, 'Viking'), 462 | (101, 0, 11, 'Rosewood'), 463 | (101, 26, 20, 'Cherrywood'), 464 | (101, 45, 193, 'Purple Heart'), 465 | (101, 114, 32, 'Fern Frond'), 466 | (101, 116, 93, 'Willow Grove'), 467 | (101, 134, 159, 'Hoki'), 468 | (102, 0, 69, 'Pompadour'), 469 | (102, 0, 153, 'Purple'), 470 | (102, 2, 60, 'Tyrian Purple'), 471 | (102, 16, 16, 'Dark Tan'), 472 | (102, 181, 143, 'Silver Tree'), 473 | (102, 255, 0, 'Bright Green'), 474 | (102, 255, 102, "Screamin' Green"), 475 | (103, 3, 45, 'Black Rose'), 476 | (103, 95, 166, 'Scampi'), 477 | (103, 102, 98, 'Ironside Gray'), 478 | (103, 137, 117, 'Viridian Green'), 479 | (103, 167, 18, 'Christi'), 480 | (104, 54, 0, 'Nutmeg Wood Finish'), 481 | (104, 85, 88, 'Zambezi'), 482 | (104, 94, 110, 'Salt Box'), 483 | (105, 37, 69, 'Tawny Port'), 484 | (105, 45, 84, 'Finn'), 485 | (105, 95, 98, 'Scorpion'), 486 | (105, 126, 154, 'Lynch'), 487 | (106, 68, 46, 'Spice'), 488 | (106, 93, 27, 'Himalaya'), 489 | (106, 96, 81, 'Soya Bean'), 490 | (107, 42, 20, 'Hairy Heath'), 491 | (107, 63, 160, 'Royal Purple'), 492 | (107, 78, 49, 'Shingle Fawn'), 493 | (107, 87, 85, 'Dorado'), 494 | (107, 139, 162, 'Bermuda Gray'), 495 | (107, 142, 35, 'Olive Drab'), 496 | (108, 48, 130, 'Eminence'), 497 | (108, 218, 231, 'Turquoise Blue'), 498 | (109, 1, 1, 'Lonestar'), 499 | (109, 94, 84, 'Pine Cone'), 500 | (109, 108, 108, 'Dove Gray'), 501 | (109, 146, 146, 'Juniper'), 502 | (109, 146, 161, 'Gothic'), 503 | (110, 9, 2, 'Red Oxide'), 504 | (110, 29, 20, 'Moccaccino'), 505 | (110, 72, 38, 'Pickled Bean'), 506 | (110, 75, 38, 'Dallas'), 507 | (110, 109, 87, 'Kokoda'), 508 | (110, 119, 131, 'Pale Sky'), 509 | (111, 68, 12, 'Cafe Royale'), 510 | (111, 106, 97, 'Flint'), 511 | (111, 142, 99, 'Highland'), 512 | (111, 157, 2, 'Limeade'), 513 | (111, 208, 197, 'Downy'), 514 | (112, 28, 28, 'Persian Plum'), 515 | (112, 66, 20, 'Sepia'), 516 | (112, 74, 7, 'Antique Bronze'), 517 | (112, 79, 80, 'Ferra'), 518 | (112, 101, 85, 'Coffee'), 519 | (112, 128, 144, 'Slate Gray'), 520 | (113, 26, 0, 'Cedar Wood Finish'), 521 | (113, 41, 29, 'Metallic Copper'), 522 | (113, 70, 147, 'Affair'), 523 | (113, 74, 178, 'Studio'), 524 | (113, 93, 71, 'Tobacco Brown'), 525 | (113, 99, 56, 'Yellow Metal'), 526 | (113, 107, 86, 'Peat'), 527 | (113, 110, 16, 'Olivetone'), 528 | (113, 116, 134, 'Storm Gray'), 529 | (113, 128, 128, 'Sirocco'), 530 | (113, 217, 226, 'Aquamarine Blue'), 531 | (114, 1, 15, 'Venetian Red'), 532 | (114, 74, 47, 'Old Copper'), 533 | (114, 109, 78, 'Go Ben'), 534 | (114, 123, 137, 'Raven'), 535 | (115, 30, 143, 'Seance'), 536 | (115, 74, 18, 'Raw Umber'), 537 | (115, 108, 159, 'Kimberly'), 538 | (115, 109, 88, 'Crocodile'), 539 | (115, 120, 41, 'Crete'), 540 | (115, 134, 120, 'Xanadu'), 541 | (116, 100, 13, 'Spicy Mustard'), 542 | (116, 125, 99, 'Limed Ash'), 543 | (116, 125, 131, 'Rolling Stone'), 544 | (116, 136, 129, 'Blue Smoke'), 545 | (116, 147, 120, 'Laurel'), 546 | (116, 195, 101, 'Mantis'), 547 | (117, 90, 87, 'Russett'), 548 | (117, 99, 168, 'Deluge'), 549 | (118, 57, 93, 'Cosmic'), 550 | (118, 102, 198, 'Blue Marguerite'), 551 | (118, 189, 23, 'Lima'), 552 | (118, 215, 234, 'Sky Blue'), 553 | (119, 15, 5, 'Dark Burgundy'), 554 | (119, 31, 31, 'Crown of Thorns'), 555 | (119, 63, 26, 'Walnut'), 556 | (119, 111, 97, 'Pablo'), 557 | (119, 129, 32, 'Pacifika'), 558 | (119, 158, 134, 'Oxley'), 559 | (119, 221, 119, 'Pastel Green'), 560 | (120, 1, 9, 'Japanese Maple'), 561 | (120, 45, 25, 'Mocha'), 562 | (120, 47, 22, 'Peanut'), 563 | (120, 134, 107, 'Camouflage Green'), 564 | (120, 138, 37, 'Wasabi'), 565 | (120, 139, 186, 'Ship Cove'), 566 | (120, 163, 156, 'Sea Nymph'), 567 | (121, 93, 76, 'Roman Coffee'), 568 | (121, 104, 120, 'Old Lavender'), 569 | (121, 105, 137, 'Rum'), 570 | (121, 106, 120, 'Fedora'), 571 | (121, 109, 98, 'Sandstone'), 572 | (121, 222, 236, 'Spray'), 573 | (122, 1, 58, 'Siren'), 574 | (122, 88, 193, 'Fuchsia Blue'), 575 | (122, 122, 122, 'Boulder'), 576 | (122, 137, 184, 'Wild Blue Yonder'), 577 | (122, 196, 136, 'De York'), 578 | (123, 56, 1, 'Red Beech'), 579 | (123, 63, 0, 'Cinnamon'), 580 | (123, 102, 8, 'Yukon Gold'), 581 | (123, 120, 116, 'Tapa'), 582 | (123, 124, 148, 'Waterloo '), 583 | (123, 130, 101, 'Flax Smoke'), 584 | (123, 159, 128, 'Amulet'), 585 | (123, 160, 91, 'Asparagus'), 586 | (124, 28, 5, 'Kenyan Copper'), 587 | (124, 118, 49, 'Pesto'), 588 | (124, 119, 138, 'Topaz'), 589 | (124, 123, 122, 'Concord'), 590 | (124, 123, 130, 'Jumbo'), 591 | (124, 136, 26, 'Trendy Green'), 592 | (124, 161, 166, 'Gumbo'), 593 | (124, 176, 161, 'Acapulco'), 594 | (124, 183, 187, 'Neptune'), 595 | (125, 44, 20, 'Pueblo'), 596 | (125, 169, 141, 'Bay Leaf'), 597 | (125, 200, 247, 'Malibu'), 598 | (125, 216, 198, 'Bermuda'), 599 | (126, 58, 21, 'Copper Canyon'), 600 | (127, 23, 52, 'Claret'), 601 | (127, 58, 2, 'Peru Tan'), 602 | (127, 98, 109, 'Falcon'), 603 | (127, 117, 137, 'Mobster'), 604 | (127, 118, 211, 'Moody Blue'), 605 | (127, 255, 0, 'Chartreuse'), 606 | (127, 255, 212, 'Aquamarine'), 607 | (128, 0, 0, 'Maroon'), 608 | (128, 11, 71, 'Rose Bud Cherry'), 609 | (128, 24, 24, 'Falu Red'), 610 | (128, 52, 31, 'Red Robin'), 611 | (128, 55, 144, 'Vivid Violet'), 612 | (128, 70, 27, 'Russet'), 613 | (128, 126, 121, 'Friar Gray'), 614 | (128, 128, 0, 'Olive'), 615 | (128, 128, 128, 'Gray'), 616 | (128, 179, 174, 'Gulf Stream'), 617 | (128, 179, 196, 'Glacier'), 618 | (128, 204, 234, 'Seagull'), 619 | (129, 66, 44, 'Nutmeg'), 620 | (129, 110, 113, 'Spicy Pink'), 621 | (129, 115, 119, 'Empress'), 622 | (129, 152, 133, 'Spanish Green'), 623 | (130, 111, 101, 'Sand Dune'), 624 | (130, 134, 133, 'Gunsmoke'), 625 | (130, 143, 114, 'Battleship Gray'), 626 | (131, 25, 35, 'Merlot'), 627 | (131, 112, 80, 'Shadow'), 628 | (131, 170, 93, 'Chelsea Cucumber'), 629 | (131, 208, 198, 'Monte Carlo'), 630 | (132, 49, 121, 'Plum'), 631 | (132, 160, 160, 'Granny Smith'), 632 | (133, 129, 217, 'Chetwode Blue'), 633 | (133, 132, 112, 'Bandicoot'), 634 | (133, 159, 175, 'Bali Hai'), 635 | (133, 196, 204, 'Half Baked'), 636 | (134, 1, 17, 'Red Devil'), 637 | (134, 60, 60, 'Lotus'), 638 | (134, 72, 60, 'Ironstone'), 639 | (134, 77, 30, 'Bull Shot'), 640 | (134, 86, 10, 'Rusty Nail'), 641 | (134, 137, 116, 'Bitter'), 642 | (134, 148, 159, 'Regent Gray'), 643 | (135, 21, 80, 'Disco'), 644 | (135, 117, 110, 'Americano'), 645 | (135, 124, 123, 'Hurricane'), 646 | (135, 141, 145, 'Oslo Gray'), 647 | (135, 171, 57, 'Sushi'), 648 | (136, 83, 66, 'Spicy Mix'), 649 | (136, 98, 33, 'Kumera'), 650 | (136, 131, 135, 'Suva Gray'), 651 | (136, 141, 101, 'Avocado'), 652 | (137, 52, 86, 'Camelot'), 653 | (137, 56, 67, 'Solid Pink'), 654 | (137, 67, 103, 'Cannon Pink'), 655 | (137, 125, 109, 'Makara'), 656 | (138, 51, 36, 'Burnt Umber'), 657 | (138, 115, 214, 'True V'), 658 | (138, 131, 96, 'Clay Creek'), 659 | (138, 131, 137, 'Monsoon'), 660 | (138, 143, 138, 'Stack'), 661 | (138, 185, 241, 'Jordy Blue'), 662 | (139, 0, 255, 'Electric Violet'), 663 | (139, 7, 35, 'Monarch'), 664 | (139, 107, 11, 'Corn Harvest'), 665 | (139, 132, 112, 'Olive Haze'), 666 | (139, 132, 126, 'Schooner'), 667 | (139, 134, 128, 'Natural Gray'), 668 | (139, 156, 144, 'Mantle'), 669 | (139, 159, 238, 'Portage'), 670 | (139, 166, 144, 'Envy'), 671 | (139, 169, 165, 'Cascade'), 672 | (139, 230, 216, 'Riptide'), 673 | (140, 5, 94, 'Cardinal Pink'), 674 | (140, 71, 47, 'Mule Fawn'), 675 | (140, 87, 56, 'Potters Clay'), 676 | (140, 100, 149, 'Trendy Pink'), 677 | (141, 2, 38, 'Paprika'), 678 | (141, 61, 56, 'Sanguine Brown'), 679 | (141, 63, 63, 'Tosca'), 680 | (141, 118, 98, 'Cement'), 681 | (141, 137, 116, 'Granite Green'), 682 | (141, 144, 161, 'Manatee'), 683 | (141, 168, 204, 'Polo Blue'), 684 | (142, 0, 0, 'Red Berry'), 685 | (142, 77, 30, 'Rope'), 686 | (142, 111, 112, 'Opium'), 687 | (142, 119, 94, 'Domino'), 688 | (142, 129, 144, 'Mamba'), 689 | (142, 171, 193, 'Nepal'), 690 | (143, 2, 28, 'Pohutukawa'), 691 | (143, 62, 51, 'El Salva'), 692 | (143, 75, 14, 'Korma'), 693 | (143, 129, 118, 'Squirrel'), 694 | (143, 214, 180, 'Vista Blue'), 695 | (144, 0, 32, 'Burgundy'), 696 | (144, 30, 30, 'Old Brick'), 697 | (144, 120, 116, 'Hemp'), 698 | (144, 123, 113, 'Almond Frost'), 699 | (144, 141, 57, 'Sycamore'), 700 | (146, 0, 10, 'Sangria'), 701 | (146, 67, 33, 'Cumin'), 702 | (146, 111, 91, 'Beaver'), 703 | (146, 133, 115, 'Stonewall'), 704 | (146, 133, 144, 'Venus'), 705 | (147, 112, 219, 'Medium Purple'), 706 | (147, 204, 234, 'Cornflower'), 707 | (147, 223, 184, 'Algae Green'), 708 | (148, 71, 71, 'Copper Rust'), 709 | (148, 135, 113, 'Arrowtown'), 710 | (149, 0, 21, 'Scarlett'), 711 | (149, 99, 135, 'Strikemaster'), 712 | (149, 147, 150, 'Mountain Mist'), 713 | (150, 0, 24, 'Carmine'), 714 | (150, 75, 0, 'Brown'), 715 | (150, 112, 89, 'Leather'), 716 | (150, 120, 182, "Purple Mountain's Majesty"), 717 | (150, 123, 182, 'Lavender Purple'), 718 | (150, 168, 161, 'Pewter'), 719 | (150, 187, 171, 'Summer Green'), 720 | (151, 96, 93, 'Au Chico'), 721 | (151, 113, 181, 'Wisteria'), 722 | (151, 205, 45, 'Atlantis'), 723 | (152, 61, 97, 'Vin Rouge'), 724 | (152, 116, 211, 'Lilac Bush'), 725 | (152, 119, 123, 'Bazaar'), 726 | (152, 129, 27, 'Hacienda'), 727 | (152, 141, 119, 'Pale Oyster'), 728 | (152, 255, 152, 'Mint Green'), 729 | (153, 0, 102, 'Fresh Eggplant'), 730 | (153, 17, 153, 'Violet Eggplant'), 731 | (153, 22, 19, 'Tamarillo'), 732 | (153, 27, 7, 'Totem Pole'), 733 | (153, 102, 102, 'Copper Rose'), 734 | (153, 102, 204, 'Amethyst'), 735 | (153, 122, 141, 'Mountbatten Pink'), 736 | (153, 153, 204, 'Blue Bell'), 737 | (154, 56, 32, 'Prairie Sand'), 738 | (154, 110, 97, 'Toast'), 739 | (154, 149, 119, 'Gurkha'), 740 | (154, 185, 115, 'Olivine'), 741 | (154, 194, 184, 'Shadow Green'), 742 | (155, 71, 3, 'Oregon'), 743 | (155, 158, 143, 'Lemon Grass'), 744 | (156, 51, 54, 'Stiletto'), 745 | (157, 86, 22, 'Hawaiian Tan'), 746 | (157, 172, 183, 'Gull Gray'), 747 | (157, 194, 9, 'Pistachio'), 748 | (157, 224, 147, 'Granny Smith Apple'), 749 | (157, 229, 255, 'Anakiwa'), 750 | (158, 83, 2, 'Chelsea Gem'), 751 | (158, 91, 64, 'Sepia Skin'), 752 | (158, 165, 135, 'Sage'), 753 | (158, 169, 31, 'Citron'), 754 | (158, 177, 205, 'Rock Blue'), 755 | (158, 222, 224, 'Morning Glory'), 756 | (159, 56, 29, 'Cognac'), 757 | (159, 130, 28, 'Reef Gold'), 758 | (159, 159, 156, 'Star Dust'), 759 | (159, 160, 177, 'Santas Gray'), 760 | (159, 215, 211, 'Sinbad'), 761 | (159, 221, 140, 'Feijoa'), 762 | (160, 39, 18, 'Tabasco'), 763 | (161, 117, 13, 'Buttered Rum'), 764 | (161, 173, 181, 'Hit Gray'), 765 | (161, 197, 10, 'Citrus'), 766 | (161, 218, 215, 'Aqua Island'), 767 | (161, 233, 222, 'Water Leaf'), 768 | (162, 0, 109, 'Flirt'), 769 | (162, 59, 108, 'Rouge'), 770 | (162, 102, 69, 'Cape Palliser'), 771 | (162, 170, 179, 'Gray Chateau'), 772 | (162, 174, 171, 'Edward'), 773 | (163, 128, 123, 'Pharlap'), 774 | (163, 151, 180, 'Amethyst Smoke'), 775 | (163, 227, 237, 'Blizzard Blue'), 776 | (164, 164, 157, 'Delta'), 777 | (164, 166, 211, 'Wistful'), 778 | (164, 175, 110, 'Green Smoke'), 779 | (165, 11, 94, 'Jazzberry Jam'), 780 | (165, 155, 145, 'Zorba'), 781 | (165, 203, 12, 'Bahia'), 782 | (166, 47, 32, 'Roof Terracotta'), 783 | (166, 85, 41, 'Paarl'), 784 | (166, 139, 91, 'Barley Corn'), 785 | (166, 146, 121, 'Donkey Brown'), 786 | (166, 162, 154, 'Dawn'), 787 | (167, 37, 37, 'Mexican Red'), 788 | (167, 136, 44, 'Luxor Gold'), 789 | (168, 83, 7, 'Rich Gold'), 790 | (168, 101, 21, 'Reno Sand'), 791 | (168, 107, 107, 'Coral Tree'), 792 | (168, 152, 155, 'Dusty Gray'), 793 | (168, 153, 230, 'Dull Lavender'), 794 | (168, 165, 137, 'Tallow'), 795 | (168, 174, 156, 'Bud'), 796 | (168, 175, 142, 'Locust'), 797 | (168, 189, 159, 'Norway'), 798 | (168, 227, 189, 'Chinook'), 799 | (169, 164, 145, 'Gray Olive'), 800 | (169, 172, 182, 'Aluminium'), 801 | (169, 178, 195, 'Cadet Blue'), 802 | (169, 180, 151, 'Schist'), 803 | (169, 189, 191, 'Tower Gray'), 804 | (169, 190, 242, 'Perano'), 805 | (169, 198, 194, 'Opal'), 806 | (170, 55, 90, 'Night Shadz'), 807 | (170, 66, 3, 'Fire'), 808 | (170, 139, 91, 'Muesli'), 809 | (170, 141, 111, 'Sandal'), 810 | (170, 165, 169, 'Shady Lady'), 811 | (170, 169, 205, 'Logan'), 812 | (170, 171, 183, 'Spun Pearl'), 813 | (170, 214, 230, 'Regent St Blue'), 814 | (170, 240, 209, 'Magic Mint'), 815 | (171, 5, 99, 'Lipstick'), 816 | (171, 52, 114, 'Royal Heath'), 817 | (171, 145, 122, 'Sandrift'), 818 | (171, 160, 217, 'Cold Purple'), 819 | (171, 161, 150, 'Bronco'), 820 | (172, 138, 86, 'Limed Oak'), 821 | (172, 145, 206, 'East Side'), 822 | (172, 158, 34, 'Lemon Ginger'), 823 | (172, 164, 148, 'Napa'), 824 | (172, 165, 134, 'Hillary'), 825 | (172, 165, 159, 'Cloudy'), 826 | (172, 172, 172, 'Silver Chalice'), 827 | (172, 183, 142, 'Swamp Green'), 828 | (172, 203, 177, 'Spring Rain'), 829 | (172, 221, 77, 'Conifer'), 830 | (172, 225, 175, 'Celadon'), 831 | (173, 120, 27, 'Mandalay'), 832 | (173, 190, 209, 'Casper'), 833 | (173, 223, 173, 'Moss Green'), 834 | (173, 230, 196, 'Padua'), 835 | (173, 255, 47, 'Green Yellow'), 836 | (174, 69, 96, 'Hippie Pink'), 837 | (174, 96, 32, 'Desert'), 838 | (174, 128, 158, 'Bouquet'), 839 | (175, 64, 53, 'Medium Carmine'), 840 | (175, 77, 67, 'Apple Blossom'), 841 | (175, 89, 62, 'Brown Rust'), 842 | (175, 135, 81, 'Driftwood'), 843 | (175, 143, 44, 'Alpine'), 844 | (175, 159, 28, 'Lucky'), 845 | (175, 160, 158, 'Martini'), 846 | (175, 177, 184, 'Bombay'), 847 | (175, 189, 217, 'Pigeon Post'), 848 | (176, 76, 106, 'Cadillac'), 849 | (176, 93, 84, 'Matrix'), 850 | (176, 94, 129, 'Tapestry'), 851 | (176, 102, 8, 'Mai Tai'), 852 | (176, 154, 149, 'Del Rio'), 853 | (176, 224, 230, 'Powder Blue'), 854 | (176, 227, 19, 'Inch Worm'), 855 | (177, 0, 0, 'Bright Red'), 856 | (177, 74, 11, 'Vesuvius'), 857 | (177, 97, 11, 'Pumpkin Skin'), 858 | (177, 109, 82, 'Santa Fe'), 859 | (177, 148, 97, 'Teak'), 860 | (177, 226, 193, 'Fringy Flower'), 861 | (177, 244, 231, 'Ice Cold'), 862 | (178, 9, 49, 'Shiraz'), 863 | (178, 161, 234, 'Biloba Flower'), 864 | (179, 45, 41, 'Tall Poppy'), 865 | (179, 82, 19, 'Fiery Orange'), 866 | (179, 128, 7, 'Hot Toddy'), 867 | (179, 175, 149, 'Taupe Gray'), 868 | (179, 193, 16, 'La Rioja'), 869 | (180, 51, 50, 'Well Read'), 870 | (180, 70, 104, 'Blush'), 871 | (180, 207, 211, 'Jungle Mist'), 872 | (181, 114, 129, 'Turkish Rose'), 873 | (181, 126, 220, 'Lavender'), 874 | (181, 162, 127, 'Mongoose'), 875 | (181, 179, 92, 'Olive Green'), 876 | (181, 210, 206, 'Jet Stream'), 877 | (181, 236, 223, 'Cruise'), 878 | (182, 49, 108, 'Hibiscus'), 879 | (182, 157, 152, 'Thatch'), 880 | (182, 176, 149, 'Heathered Gray'), 881 | (182, 186, 164, 'Eagle'), 882 | (182, 209, 234, 'Spindle'), 883 | (182, 211, 191, 'Gum Leaf'), 884 | (183, 65, 14, 'Rust'), 885 | (183, 142, 92, 'Muddy Waters'), 886 | (183, 162, 20, 'Sahara'), 887 | (183, 164, 88, 'Husk'), 888 | (183, 177, 177, 'Nobel'), 889 | (183, 195, 208, 'Heather'), 890 | (183, 240, 190, 'Madang'), 891 | (184, 17, 4, 'Milano Red'), 892 | (184, 115, 51, 'Copper'), 893 | (184, 181, 106, 'Gimblet'), 894 | (184, 193, 177, 'Green Spring'), 895 | (184, 194, 93, 'Celery'), 896 | (184, 224, 249, 'Sail'), 897 | (185, 78, 72, 'Chestnut'), 898 | (185, 81, 64, 'Crail'), 899 | (185, 141, 40, 'Marigold'), 900 | (185, 196, 106, 'Wild Willow'), 901 | (185, 200, 172, 'Rainee'), 902 | (186, 1, 1, 'Guardsman Red'), 903 | (186, 69, 12, 'Rock Spray'), 904 | (186, 111, 30, 'Bourbon'), 905 | (186, 127, 3, 'Pirate Gold'), 906 | (186, 177, 162, 'Nomad'), 907 | (186, 199, 201, 'Submarine'), 908 | (186, 238, 249, 'Charlotte'), 909 | (187, 51, 133, 'Medium Red Violet'), 910 | (187, 137, 131, 'Brandy Rose'), 911 | (187, 208, 9, 'Rio Grande'), 912 | (187, 215, 193, 'Surf'), 913 | (188, 201, 194, 'Powder Ash'), 914 | (189, 94, 46, 'Tuscany'), 915 | (189, 151, 142, 'Quicksand'), 916 | (189, 177, 168, 'Silk'), 917 | (189, 178, 161, 'Malta'), 918 | (189, 179, 199, 'Chatelle'), 919 | (189, 187, 215, 'Lavender Gray'), 920 | (189, 189, 198, 'French Gray'), 921 | (189, 200, 179, 'Clay Ash'), 922 | (189, 201, 206, 'Loblolly'), 923 | (189, 237, 253, 'French Pass'), 924 | (190, 166, 195, 'London Hue'), 925 | (190, 181, 183, 'Pink Swan'), 926 | (190, 222, 13, 'Fuego'), 927 | (191, 85, 0, 'Rose of Sharon'), 928 | (191, 184, 176, 'Tide'), 929 | (191, 190, 216, 'Blue Haze'), 930 | (191, 193, 194, 'Silver Sand'), 931 | (191, 201, 33, 'Key Lime Pie'), 932 | (191, 219, 226, 'Ziggurat'), 933 | (191, 255, 0, 'Lime'), 934 | (192, 43, 24, 'Thunderbird'), 935 | (192, 71, 55, 'Mojo'), 936 | (192, 128, 129, 'Old Rose'), 937 | (192, 192, 192, 'Silver'), 938 | (192, 211, 185, 'Pale Leaf'), 939 | (192, 216, 182, 'Pixie Green'), 940 | (193, 68, 14, 'Tia Maria'), 941 | (193, 84, 193, 'Fuchsia Pink'), 942 | (193, 160, 4, 'Buddha Gold'), 943 | (193, 183, 164, 'Bison Hide'), 944 | (193, 186, 176, 'Tea'), 945 | (193, 190, 205, 'Gray Suit'), 946 | (193, 215, 176, 'Sprout'), 947 | (193, 240, 124, 'Sulu'), 948 | (194, 107, 3, 'Indochine'), 949 | (194, 149, 93, 'Twine'), 950 | (194, 189, 182, 'Cotton Seed'), 951 | (194, 202, 196, 'Pumice'), 952 | (194, 232, 229, 'Jagged Ice'), 953 | (195, 33, 72, 'Maroon Flush'), 954 | (195, 176, 145, 'Indian Khaki'), 955 | (195, 191, 193, 'Pale Slate'), 956 | (195, 195, 189, 'Gray Nickel'), 957 | (195, 205, 230, 'Periwinkle Gray'), 958 | (195, 209, 209, 'Tiara'), 959 | (195, 221, 249, 'Tropical Blue'), 960 | (196, 30, 58, 'Cardinal'), 961 | (196, 86, 85, 'Fuzzy Wuzzy Brown'), 962 | (196, 87, 25, 'Orange Roughy'), 963 | (196, 196, 188, 'Mist Gray'), 964 | (196, 208, 176, 'Coriander'), 965 | (196, 244, 235, 'Mint Tulip'), 966 | (197, 75, 140, 'Mulberry'), 967 | (197, 153, 34, 'Nugget'), 968 | (197, 153, 75, 'Tussock'), 969 | (197, 219, 202, 'Sea Mist'), 970 | (197, 225, 122, 'Yellow Green'), 971 | (198, 45, 66, 'Brick Red'), 972 | (198, 114, 107, 'Contessa'), 973 | (198, 145, 145, 'Oriental Pink'), 974 | (198, 168, 75, 'Roti'), 975 | (198, 195, 181, 'Ash'), 976 | (198, 200, 189, 'Kangaroo'), 977 | (198, 230, 16, 'Las Palmas'), 978 | (199, 3, 30, 'Monza'), 979 | (199, 21, 133, 'Red Violet'), 980 | (199, 188, 162, 'Coral Reef'), 981 | (199, 193, 255, 'Melrose'), 982 | (199, 196, 191, 'Cloud'), 983 | (199, 201, 213, 'Ghost'), 984 | (199, 205, 144, 'Pine Glade'), 985 | (199, 221, 229, 'Botticelli'), 986 | (200, 138, 101, 'Antique Brass'), 987 | (200, 162, 200, 'Lilac'), 988 | (200, 165, 40, 'Hokey Pokey'), 989 | (200, 170, 191, 'Lily'), 990 | (200, 181, 104, 'Laser'), 991 | (200, 227, 215, 'Edgewater'), 992 | (201, 99, 35, 'Piper'), 993 | (201, 148, 21, 'Pizza'), 994 | (201, 160, 220, 'Light Wisteria'), 995 | (201, 178, 155, 'Rodeo Dust'), 996 | (201, 179, 91, 'Sundance'), 997 | (201, 185, 59, 'Earls Green'), 998 | (201, 192, 187, 'Silver Rust'), 999 | (201, 217, 210, 'Conch'), 1000 | (201, 255, 162, 'Reef'), 1001 | (201, 255, 229, 'Aero Blue'), 1002 | (202, 52, 53, 'Flush Mahogany'), 1003 | (202, 187, 72, 'Turmeric'), 1004 | (202, 220, 212, 'Paris White'), 1005 | (202, 224, 13, 'Bitter Lemon'), 1006 | (202, 230, 218, 'Skeptic'), 1007 | (203, 143, 169, 'Viola'), 1008 | (203, 202, 182, 'Foggy Gray'), 1009 | (203, 211, 176, 'Green Mist'), 1010 | (203, 219, 214, 'Nebula'), 1011 | (204, 51, 51, 'Persian Red'), 1012 | (204, 85, 0, 'Burnt Orange'), 1013 | (204, 119, 34, 'Ochre'), 1014 | (204, 136, 153, 'Puce'), 1015 | (204, 202, 168, 'Thistle Green'), 1016 | (204, 204, 255, 'Periwinkle'), 1017 | (204, 255, 0, 'Electric Lime'), 1018 | (205, 87, 0, 'Tenn'), 1019 | (205, 92, 92, 'Chestnut Rose'), 1020 | (205, 132, 41, 'Brandy Punch'), 1021 | (205, 244, 255, 'Onahau'), 1022 | (206, 185, 143, 'Sorrell Brown'), 1023 | (206, 186, 186, 'Cold Turkey'), 1024 | (206, 194, 145, 'Yuma'), 1025 | (206, 199, 167, 'Chino'), 1026 | (207, 163, 157, 'Eunry'), 1027 | (207, 181, 59, 'Old Gold'), 1028 | (207, 220, 207, 'Tasman'), 1029 | (207, 229, 210, 'Surf Crest'), 1030 | (207, 249, 243, 'Hummingbird'), 1031 | (207, 250, 244, 'Scandal'), 1032 | (208, 95, 4, 'Red Stage'), 1033 | (208, 109, 161, 'Hopbush'), 1034 | (208, 125, 18, 'Meteor'), 1035 | (208, 190, 248, 'Perfume'), 1036 | (208, 192, 229, 'Prelude'), 1037 | (208, 240, 192, 'Tea Green'), 1038 | (209, 143, 27, 'Geebung'), 1039 | (209, 190, 168, 'Vanilla'), 1040 | (209, 198, 180, 'Soft Amber'), 1041 | (209, 210, 202, 'Celeste'), 1042 | (209, 210, 221, 'Mischka'), 1043 | (209, 226, 49, 'Pear'), 1044 | (210, 105, 30, 'Hot Cinnamon'), 1045 | (210, 125, 70, 'Raw Sienna'), 1046 | (210, 158, 170, 'Careys Pink'), 1047 | (210, 180, 140, 'Tan'), 1048 | (210, 218, 151, 'Deco'), 1049 | (210, 246, 222, 'Blue Romance'), 1050 | (210, 248, 176, 'Gossip'), 1051 | (211, 203, 186, 'Sisal'), 1052 | (211, 205, 197, 'Swirl'), 1053 | (212, 116, 148, 'Charm'), 1054 | (212, 182, 175, 'Clam Shell'), 1055 | (212, 191, 141, 'Straw'), 1056 | (212, 196, 168, 'Akaroa'), 1057 | (212, 205, 22, 'Bird Flower'), 1058 | (212, 215, 217, 'Iron'), 1059 | (212, 223, 226, 'Geyser'), 1060 | (212, 226, 252, 'Hawkes Blue'), 1061 | (213, 70, 0, 'Grenadier'), 1062 | (213, 145, 164, 'Can Can'), 1063 | (213, 154, 111, 'Whiskey'), 1064 | (213, 209, 149, 'Winter Hazel'), 1065 | (213, 246, 227, 'Granny Apple'), 1066 | (214, 145, 136, 'My Pink'), 1067 | (214, 197, 98, 'Tacha'), 1068 | (214, 206, 246, 'Moonraker'), 1069 | (214, 214, 209, 'Quill Gray'), 1070 | (214, 255, 219, 'Snowy Mint'), 1071 | (215, 131, 127, 'New York Pink'), 1072 | (215, 196, 152, 'Pavlova'), 1073 | (215, 208, 255, 'Fog'), 1074 | (216, 68, 55, 'Valencia'), 1075 | (216, 124, 99, 'Japonica'), 1076 | (216, 191, 216, 'Thistle'), 1077 | (216, 194, 213, 'Maverick'), 1078 | (216, 252, 250, 'Foam'), 1079 | (217, 73, 114, 'Cabaret'), 1080 | (217, 147, 118, 'Burning Sand'), 1081 | (217, 185, 155, 'Cameo'), 1082 | (217, 214, 207, 'Timberwolf'), 1083 | (217, 220, 193, 'Tana'), 1084 | (217, 228, 245, 'Link Water'), 1085 | (217, 247, 255, 'Mabel'), 1086 | (218, 50, 135, 'Cerise'), 1087 | (218, 91, 56, 'Flame Pea'), 1088 | (218, 99, 4, 'Bamboo'), 1089 | (218, 106, 65, 'Red Damask'), 1090 | (218, 112, 214, 'Orchid'), 1091 | (218, 138, 103, 'Copperfield'), 1092 | (218, 165, 32, 'Golden Grass'), 1093 | (218, 236, 214, 'Zanah'), 1094 | (218, 244, 240, 'Iceberg'), 1095 | (218, 250, 255, 'Oyster Bay'), 1096 | (219, 80, 121, 'Cranberry'), 1097 | (219, 150, 144, 'Petite Orchid'), 1098 | (219, 153, 94, 'Di Serria'), 1099 | (219, 219, 219, 'Alto'), 1100 | (219, 255, 248, 'Frosted Mint'), 1101 | (220, 20, 60, 'Crimson'), 1102 | (220, 67, 51, 'Punch'), 1103 | (220, 178, 12, 'Galliano'), 1104 | (220, 180, 188, 'Blossom'), 1105 | (220, 215, 71, 'Wattle'), 1106 | (220, 217, 210, 'Westar'), 1107 | (220, 221, 204, 'Moon Mist'), 1108 | (220, 237, 180, 'Caper'), 1109 | (220, 240, 234, 'Swans Down'), 1110 | (221, 214, 213, 'Swiss Coffee'), 1111 | (221, 249, 241, 'White Ice'), 1112 | (222, 49, 99, 'Cerise Red'), 1113 | (222, 99, 96, 'Roman'), 1114 | (222, 166, 129, 'Tumbleweed'), 1115 | (222, 186, 19, 'Gold Tips'), 1116 | (222, 193, 150, 'Brandy'), 1117 | (222, 203, 198, 'Wafer'), 1118 | (222, 212, 164, 'Sapling'), 1119 | (222, 215, 23, 'Barberry'), 1120 | (222, 229, 192, 'Beryl Green'), 1121 | (222, 245, 255, 'Pattens Blue'), 1122 | (223, 115, 255, 'Heliotrope'), 1123 | (223, 190, 111, 'Apache'), 1124 | (223, 205, 111, 'Chenin'), 1125 | (223, 207, 219, 'Lola'), 1126 | (223, 236, 218, 'Willow Brook'), 1127 | (223, 255, 0, 'Chartreuse Yellow'), 1128 | (224, 176, 255, 'Mauve'), 1129 | (224, 182, 70, 'Anzac'), 1130 | (224, 185, 116, 'Harvest Gold'), 1131 | (224, 192, 149, 'Calico'), 1132 | (224, 255, 255, 'Baby Blue'), 1133 | (225, 104, 101, 'Sunglo'), 1134 | (225, 188, 100, 'Equator'), 1135 | (225, 192, 200, 'Pink Flare'), 1136 | (225, 230, 214, 'Periglacial Blue'), 1137 | (225, 234, 212, 'Kidnapper'), 1138 | (225, 246, 232, 'Tara'), 1139 | (226, 84, 101, 'Mandy'), 1140 | (226, 114, 91, 'Terracotta'), 1141 | (226, 137, 19, 'Golden Bell'), 1142 | (226, 146, 192, 'Shocking'), 1143 | (226, 148, 24, 'Dixie'), 1144 | (226, 156, 210, 'Light Orchid'), 1145 | (226, 216, 237, 'Snuff'), 1146 | (226, 235, 237, 'Mystic'), 1147 | (226, 243, 236, 'Apple Green'), 1148 | (227, 11, 92, 'Razzmatazz'), 1149 | (227, 38, 54, 'Alizarin Crimson'), 1150 | (227, 66, 52, 'Cinnabar'), 1151 | (227, 190, 190, 'Cavern Pink'), 1152 | (227, 245, 225, 'Peppermint'), 1153 | (227, 249, 136, 'Mindaro'), 1154 | (228, 118, 152, 'Deep Blush'), 1155 | (228, 155, 15, 'Gamboge'), 1156 | (228, 194, 213, 'Melanie'), 1157 | (228, 207, 222, 'Twilight'), 1158 | (228, 209, 192, 'Bone'), 1159 | (228, 212, 34, 'Sunflower'), 1160 | (228, 213, 183, 'Grain Brown'), 1161 | (228, 214, 155, 'Zombie'), 1162 | (228, 246, 231, 'Frostee'), 1163 | (228, 255, 209, 'Snow Flurry'), 1164 | (229, 43, 80, 'Amaranth'), 1165 | (229, 132, 27, 'Zest'), 1166 | (229, 204, 201, 'Dust Storm'), 1167 | (229, 215, 189, 'Stark White'), 1168 | (229, 216, 175, 'Hampton'), 1169 | (229, 224, 225, 'Bon Jour'), 1170 | (229, 229, 229, 'Mercury'), 1171 | (229, 249, 246, 'Polar'), 1172 | (230, 78, 3, 'Trinidad'), 1173 | (230, 190, 138, 'Gold Sand'), 1174 | (230, 190, 165, 'Cashmere'), 1175 | (230, 215, 185, 'Double Spanish White'), 1176 | (230, 228, 212, 'Satin Linen'), 1177 | (230, 242, 234, 'Harp'), 1178 | (230, 248, 243, 'Off Green'), 1179 | (230, 255, 233, 'Hint of Green'), 1180 | (230, 255, 255, 'Tranquil'), 1181 | (231, 114, 0, 'Mango Tango'), 1182 | (231, 115, 10, 'Christine'), 1183 | (231, 159, 140, 'Tonys Pink'), 1184 | (231, 159, 196, 'Kobi'), 1185 | (231, 188, 180, 'Rose Fog'), 1186 | (231, 191, 5, 'Corn'), 1187 | (231, 205, 140, 'Putty'), 1188 | (231, 236, 230, 'Gray Nurse'), 1189 | (231, 248, 255, 'Lily White'), 1190 | (231, 254, 255, 'Bubbles'), 1191 | (232, 153, 40, 'Fire Bush'), 1192 | (232, 185, 179, 'Shilo'), 1193 | (232, 224, 213, 'Pearl Bush'), 1194 | (232, 235, 224, 'Green White'), 1195 | (232, 241, 212, 'Chrome White'), 1196 | (232, 242, 235, 'Gin'), 1197 | (232, 245, 242, 'Aqua Squeeze'), 1198 | (233, 110, 0, 'Clementine'), 1199 | (233, 116, 81, 'Burnt Sienna'), 1200 | (233, 124, 7, 'Tahiti Gold'), 1201 | (233, 206, 205, 'Oyster Pink'), 1202 | (233, 215, 90, 'Confetti'), 1203 | (233, 227, 227, 'Ebb'), 1204 | (233, 248, 237, 'Ottoman'), 1205 | (233, 255, 253, 'Clear Day'), 1206 | (234, 136, 168, 'Carissma'), 1207 | (234, 174, 105, 'Porsche'), 1208 | (234, 179, 59, 'Tulip Tree'), 1209 | (234, 198, 116, 'Rob Roy'), 1210 | (234, 218, 184, 'Raffia'), 1211 | (234, 232, 212, 'White Rock'), 1212 | (234, 246, 238, 'Panache'), 1213 | (234, 246, 255, 'Solitude'), 1214 | (234, 249, 245, 'Aqua Spring'), 1215 | (234, 255, 254, 'Dew'), 1216 | (235, 147, 115, 'Apricot'), 1217 | (235, 194, 175, 'Zinnwaldite'), 1218 | (236, 169, 39, 'Fuel Yellow'), 1219 | (236, 197, 78, 'Ronchi'), 1220 | (236, 199, 238, 'French Lilac'), 1221 | (236, 205, 185, 'Just Right'), 1222 | (236, 224, 144, 'Wild Rice'), 1223 | (236, 235, 189, 'Fall Green'), 1224 | (236, 235, 206, 'Aths Special'), 1225 | (236, 242, 69, 'Starship'), 1226 | (237, 10, 63, 'Red Ribbon'), 1227 | (237, 122, 28, 'Tango'), 1228 | (237, 145, 33, 'Carrot Orange'), 1229 | (237, 152, 158, 'Sea Pink'), 1230 | (237, 179, 129, 'Tacao'), 1231 | (237, 201, 175, 'Desert Sand'), 1232 | (237, 205, 171, 'Pancho'), 1233 | (237, 220, 177, 'Chamois'), 1234 | (237, 234, 153, 'Primrose'), 1235 | (237, 245, 221, 'Frost'), 1236 | (237, 245, 245, 'Aqua Haze'), 1237 | (237, 246, 255, 'Zumthor'), 1238 | (237, 249, 241, 'Narvik'), 1239 | (237, 252, 132, 'Honeysuckle'), 1240 | (238, 130, 238, 'Lavender Magenta'), 1241 | (238, 193, 190, 'Beauty Bush'), 1242 | (238, 215, 148, 'Chalky'), 1243 | (238, 217, 196, 'Almond'), 1244 | (238, 220, 130, 'Flax'), 1245 | (238, 222, 218, 'Bizarre'), 1246 | (238, 227, 173, 'Double Colonial White'), 1247 | (238, 238, 232, 'Cararra'), 1248 | (238, 239, 120, 'Manz'), 1249 | (238, 240, 200, 'Tahuna Sands'), 1250 | (238, 240, 243, 'Athens Gray'), 1251 | (238, 243, 195, 'Tusk'), 1252 | (238, 244, 222, 'Loafer'), 1253 | (238, 246, 247, 'Catskill White'), 1254 | (238, 253, 255, 'Twilight Blue'), 1255 | (238, 255, 154, 'Jonquil'), 1256 | (238, 255, 226, 'Rice Flower'), 1257 | (239, 134, 63, 'Jaffa'), 1258 | (239, 239, 239, 'Gallery'), 1259 | (239, 242, 243, 'Porcelain'), 1260 | (240, 145, 169, 'Mauvelous'), 1261 | (240, 213, 45, 'Golden Dream'), 1262 | (240, 219, 125, 'Golden Sand'), 1263 | (240, 220, 130, 'Buff'), 1264 | (240, 226, 236, 'Prim'), 1265 | (240, 230, 140, 'Khaki'), 1266 | (240, 238, 253, 'Selago'), 1267 | (240, 238, 255, 'Titan White'), 1268 | (240, 248, 255, 'Alice Blue'), 1269 | (240, 252, 234, 'Feta'), 1270 | (241, 130, 0, 'Gold Drop'), 1271 | (241, 155, 171, 'Wewak'), 1272 | (241, 231, 136, 'Sahara Sand'), 1273 | (241, 233, 210, 'Parchment'), 1274 | (241, 233, 255, 'Blue Chalk'), 1275 | (241, 238, 193, 'Mint Julep'), 1276 | (241, 241, 241, 'Seashell'), 1277 | (241, 247, 242, 'Saltpan'), 1278 | (241, 255, 173, 'Tidal'), 1279 | (241, 255, 200, 'Chiffon'), 1280 | (242, 85, 42, 'Flamingo'), 1281 | (242, 133, 0, 'Tangerine'), 1282 | (242, 195, 178, 'Mandys Pink'), 1283 | (242, 242, 242, 'Concrete'), 1284 | (242, 250, 250, 'Black Squeeze'), 1285 | (243, 71, 35, 'Pomegranate'), 1286 | (243, 173, 22, 'Buttercup'), 1287 | (243, 214, 157, 'New Orleans'), 1288 | (243, 217, 223, 'Vanilla Ice'), 1289 | (243, 231, 187, 'Sidecar'), 1290 | (243, 233, 229, 'Dawn Pink'), 1291 | (243, 237, 207, 'Wheatfield'), 1292 | (243, 251, 98, 'Canary'), 1293 | (243, 251, 212, 'Orinoco'), 1294 | (243, 255, 216, 'Carla'), 1295 | (244, 0, 161, 'Hollywood Cerise'), 1296 | (244, 164, 96, 'Sandy brown'), 1297 | (244, 196, 48, 'Saffron'), 1298 | (244, 216, 28, 'Ripe Lemon'), 1299 | (244, 235, 211, 'Janna'), 1300 | (244, 242, 238, 'Pampas'), 1301 | (244, 244, 244, 'Wild Sand'), 1302 | (244, 248, 255, 'Zircon'), 1303 | (245, 117, 132, 'Froly'), 1304 | (245, 200, 92, 'Cream Can'), 1305 | (245, 201, 153, 'Manhattan'), 1306 | (245, 213, 160, 'Maize'), 1307 | (245, 222, 179, 'Wheat'), 1308 | (245, 231, 162, 'Sandwisp'), 1309 | (245, 231, 226, 'Pot Pourri'), 1310 | (245, 233, 211, 'Albescent White'), 1311 | (245, 237, 239, 'Soft Peach'), 1312 | (245, 243, 229, 'Ecru White'), 1313 | (245, 245, 220, 'Beige'), 1314 | (245, 251, 61, 'Golden Fizz'), 1315 | (245, 255, 190, 'Australian Mint'), 1316 | (246, 74, 138, 'French Rose'), 1317 | (246, 83, 166, 'Brilliant Rose'), 1318 | (246, 164, 201, 'Illusion'), 1319 | (246, 240, 230, 'Merino'), 1320 | (246, 247, 247, 'Black Haze'), 1321 | (246, 255, 220, 'Spring Sun'), 1322 | (247, 70, 138, 'Violet Red'), 1323 | (247, 119, 3, 'Chilean Fire'), 1324 | (247, 127, 190, 'Persian Pink'), 1325 | (247, 182, 104, 'Rajah'), 1326 | (247, 200, 218, 'Azalea'), 1327 | (247, 219, 230, 'We Peep'), 1328 | (247, 242, 225, 'Quarter Spanish White'), 1329 | (247, 245, 250, 'Whisper'), 1330 | (247, 250, 247, 'Snow Drift'), 1331 | (248, 184, 83, 'Casablanca'), 1332 | (248, 195, 223, 'Chantilly'), 1333 | (248, 217, 233, 'Cherub'), 1334 | (248, 219, 157, 'Marzipan'), 1335 | (248, 221, 92, 'Energy Yellow'), 1336 | (248, 228, 191, 'Givry'), 1337 | (248, 240, 232, 'White Linen'), 1338 | (248, 244, 255, 'Magnolia'), 1339 | (248, 246, 241, 'Spring Wood'), 1340 | (248, 247, 220, 'Coconut Cream'), 1341 | (248, 247, 252, 'White Lilac'), 1342 | (248, 248, 247, 'Desert Storm'), 1343 | (248, 249, 156, 'Texas'), 1344 | (248, 250, 205, 'Corn Field'), 1345 | (248, 253, 211, 'Mimosa'), 1346 | (249, 90, 97, 'Carnation'), 1347 | (249, 191, 88, 'Saffron Mango'), 1348 | (249, 224, 237, 'Carousel Pink'), 1349 | (249, 228, 188, 'Dairy Cream'), 1350 | (249, 230, 99, 'Portica'), 1351 | (249, 234, 243, 'Amour'), 1352 | (249, 248, 228, 'Rum Swizzle'), 1353 | (249, 255, 139, 'Dolly'), 1354 | (249, 255, 246, 'Sugar Cane'), 1355 | (250, 120, 20, 'Ecstasy'), 1356 | (250, 157, 90, 'Tan Hide'), 1357 | (250, 211, 162, 'Corvette'), 1358 | (250, 223, 173, 'Peach Yellow'), 1359 | (250, 230, 0, 'Turbo'), 1360 | (250, 234, 185, 'Astra'), 1361 | (250, 236, 204, 'Champagne'), 1362 | (250, 240, 230, 'Linen'), 1363 | (250, 243, 240, 'Fantasy'), 1364 | (250, 247, 214, 'Citrine White'), 1365 | (250, 250, 250, 'Alabaster'), 1366 | (250, 253, 228, 'Hint of Yellow'), 1367 | (250, 255, 164, 'Milan'), 1368 | (251, 96, 127, 'Brink Pink'), 1369 | (251, 137, 137, 'Geraldine'), 1370 | (251, 160, 227, 'Lavender Rose'), 1371 | (251, 161, 41, 'Sea Buckthorn'), 1372 | (251, 172, 19, 'Sun'), 1373 | (251, 174, 210, 'Lavender Pink'), 1374 | (251, 178, 163, 'Rose Bud'), 1375 | (251, 190, 218, 'Cupid'), 1376 | (251, 204, 231, 'Classic Rose'), 1377 | (251, 206, 177, 'Apricot Peach'), 1378 | (251, 231, 178, 'Banana Mania'), 1379 | (251, 232, 112, 'Marigold Yellow'), 1380 | (251, 233, 108, 'Festival'), 1381 | (251, 234, 140, 'Sweet Corn'), 1382 | (251, 236, 93, 'Candy Corn'), 1383 | (251, 249, 249, 'Hint of Red'), 1384 | (251, 255, 186, 'Shalimar'), 1385 | (252, 15, 192, 'Shocking Pink'), 1386 | (252, 128, 165, 'Tickle Me Pink'), 1387 | (252, 156, 29, 'Tree Poppy'), 1388 | (252, 192, 30, 'Lightning Yellow'), 1389 | (252, 214, 103, 'Goldenrod'), 1390 | (252, 217, 23, 'Candlelight'), 1391 | (252, 218, 152, 'Cherokee'), 1392 | (252, 244, 208, 'Double Pearl Lusta'), 1393 | (252, 244, 220, 'Pearl Lusta'), 1394 | (252, 248, 247, 'Vista White'), 1395 | (252, 251, 243, 'Bianca'), 1396 | (252, 254, 218, 'Moon Glow'), 1397 | (252, 255, 231, 'China Ivory'), 1398 | (252, 255, 249, 'Ceramic'), 1399 | (253, 14, 53, 'Torch Red'), 1400 | (253, 91, 120, 'Wild Watermelon'), 1401 | (253, 123, 51, 'Crusta'), 1402 | (253, 124, 7, 'Sorbus'), 1403 | (253, 159, 162, 'Sweet Pink'), 1404 | (253, 213, 177, 'Light Apricot'), 1405 | (253, 215, 228, 'Pig Pink'), 1406 | (253, 225, 220, 'Cinderella'), 1407 | (253, 226, 149, 'Golden Glow'), 1408 | (253, 233, 16, 'Lemon'), 1409 | (253, 245, 230, 'Old Lace'), 1410 | (253, 246, 211, 'Half Colonial White'), 1411 | (253, 247, 173, 'Drover'), 1412 | (253, 254, 184, 'Pale Prim'), 1413 | (253, 255, 213, 'Cumulus'), 1414 | (254, 40, 162, 'Persian Rose'), 1415 | (254, 76, 64, 'Sunset Orange'), 1416 | (254, 111, 94, 'Bittersweet'), 1417 | (254, 157, 4, 'California'), 1418 | (254, 169, 4, 'Yellow Sea'), 1419 | (254, 186, 173, 'Melon'), 1420 | (254, 211, 60, 'Bright Sun'), 1421 | (254, 216, 93, 'Dandelion'), 1422 | (254, 219, 141, 'Salomie'), 1423 | (254, 229, 172, 'Cape Honey'), 1424 | (254, 235, 243, 'Remy'), 1425 | (254, 239, 206, 'Oasis'), 1426 | (254, 240, 236, 'Bridesmaid'), 1427 | (254, 242, 199, 'Beeswax'), 1428 | (254, 243, 216, 'Bleach White'), 1429 | (254, 244, 204, 'Pipi'), 1430 | (254, 244, 219, 'Half Spanish White'), 1431 | (254, 244, 248, 'Wisp Pink'), 1432 | (254, 245, 241, 'Provincial Pink'), 1433 | (254, 247, 222, 'Half Dutch White'), 1434 | (254, 248, 226, 'Solitaire'), 1435 | (254, 248, 255, 'White Pointer'), 1436 | (254, 249, 227, 'Off Yellow'), 1437 | (254, 252, 237, 'Orange White'), 1438 | (255, 0, 0, 'Red'), 1439 | (255, 0, 127, 'Rose'), 1440 | (255, 0, 204, 'Purple Pizzazz'), 1441 | (255, 0, 255, 'Magenta / Fuchsia'), 1442 | (255, 36, 0, 'Scarlet'), 1443 | (255, 51, 153, 'Wild Strawberry'), 1444 | (255, 51, 204, 'Razzle Dazzle Rose'), 1445 | (255, 53, 94, 'Radical Red'), 1446 | (255, 63, 52, 'Red Orange'), 1447 | (255, 64, 64, 'Coral Red'), 1448 | (255, 77, 0, 'Vermilion'), 1449 | (255, 79, 0, 'International Orange'), 1450 | (255, 96, 55, 'Outrageous Orange'), 1451 | (255, 102, 0, 'Blaze Orange'), 1452 | (255, 102, 255, 'Pink Flamingo'), 1453 | (255, 104, 31, 'Orange'), 1454 | (255, 105, 180, 'Hot Pink'), 1455 | (255, 107, 83, 'Persimmon'), 1456 | (255, 111, 255, 'Blush Pink'), 1457 | (255, 112, 52, 'Burning Orange'), 1458 | (255, 117, 24, 'Pumpkin'), 1459 | (255, 125, 7, 'Flamenco'), 1460 | (255, 127, 0, 'Flush Orange'), 1461 | (255, 127, 80, 'Coral'), 1462 | (255, 140, 105, 'Salmon'), 1463 | (255, 144, 0, 'Pizazz'), 1464 | (255, 145, 15, 'West Side'), 1465 | (255, 145, 164, 'Pink Salmon'), 1466 | (255, 153, 51, 'Neon Carrot'), 1467 | (255, 153, 102, 'Atomic Tangerine'), 1468 | (255, 153, 128, 'Vivid Tangerine'), 1469 | (255, 158, 44, 'Sunshade'), 1470 | (255, 160, 0, 'Orange Peel'), 1471 | (255, 161, 148, 'Mona Lisa'), 1472 | (255, 165, 0, 'Web Orange'), 1473 | (255, 166, 201, 'Carnation Pink'), 1474 | (255, 171, 129, 'Hit Pink'), 1475 | (255, 174, 66, 'Yellow Orange'), 1476 | (255, 176, 172, 'Cornflower Lilac'), 1477 | (255, 177, 179, 'Sundown'), 1478 | (255, 179, 31, 'My Sin'), 1479 | (255, 181, 85, 'Texas Rose'), 1480 | (255, 183, 213, 'Cotton Candy'), 1481 | (255, 185, 123, 'Macaroni and Cheese'), 1482 | (255, 186, 0, 'Selective Yellow'), 1483 | (255, 189, 95, 'Koromiko'), 1484 | (255, 191, 0, 'Amber'), 1485 | (255, 192, 168, 'Wax Flower'), 1486 | (255, 192, 203, 'Pink'), 1487 | (255, 195, 192, 'Your Pink'), 1488 | (255, 201, 1, 'Supernova'), 1489 | (255, 203, 164, 'Flesh'), 1490 | (255, 204, 51, 'Sunglow'), 1491 | (255, 204, 92, 'Golden Tainoi'), 1492 | (255, 204, 153, 'Peach Orange'), 1493 | (255, 205, 140, 'Chardonnay'), 1494 | (255, 209, 220, 'Pastel Pink'), 1495 | (255, 210, 183, 'Romantic'), 1496 | (255, 211, 140, 'Grandis'), 1497 | (255, 215, 0, 'Gold'), 1498 | (255, 216, 0, 'School bus Yellow'), 1499 | (255, 216, 217, 'Cosmos'), 1500 | (255, 219, 88, 'Mustard'), 1501 | (255, 220, 214, 'Peach Schnapps'), 1502 | (255, 221, 175, 'Caramel'), 1503 | (255, 221, 205, 'Tuft Bush'), 1504 | (255, 221, 207, 'Watusi'), 1505 | (255, 221, 244, 'Pink Lace'), 1506 | (255, 222, 173, 'Navajo White'), 1507 | (255, 222, 179, 'Frangipani'), 1508 | (255, 225, 223, 'Pippin'), 1509 | (255, 225, 242, 'Pale Rose'), 1510 | (255, 226, 197, 'Negroni'), 1511 | (255, 229, 160, 'Cream Brulee'), 1512 | (255, 229, 180, 'Peach'), 1513 | (255, 230, 199, 'Tequila'), 1514 | (255, 231, 114, 'Kournikova'), 1515 | (255, 234, 200, 'Sandy Beach'), 1516 | (255, 234, 212, 'Karry'), 1517 | (255, 236, 19, 'Broom'), 1518 | (255, 237, 188, 'Colonial White'), 1519 | (255, 238, 216, 'Derby'), 1520 | (255, 239, 161, 'Vis Vis'), 1521 | (255, 239, 193, 'Egg White'), 1522 | (255, 239, 213, 'Papaya Whip'), 1523 | (255, 239, 236, 'Fair Pink'), 1524 | (255, 240, 219, 'Peach Cream'), 1525 | (255, 240, 245, 'Lavender blush'), 1526 | (255, 241, 79, 'Gorse'), 1527 | (255, 241, 181, 'Buttermilk'), 1528 | (255, 241, 216, 'Pink Lady'), 1529 | (255, 241, 238, 'Forget-me-not'), 1530 | (255, 241, 249, 'Tutu'), 1531 | (255, 243, 157, 'Picasso'), 1532 | (255, 243, 241, 'Chardon'), 1533 | (255, 244, 110, 'Paris Daisy'), 1534 | (255, 244, 206, 'Barley White'), 1535 | (255, 244, 221, 'Egg Sour'), 1536 | (255, 244, 224, 'Sazerac'), 1537 | (255, 244, 232, 'Serenade'), 1538 | (255, 244, 243, 'Chablis'), 1539 | (255, 245, 238, 'Seashell Peach'), 1540 | (255, 245, 243, 'Sauvignon'), 1541 | (255, 246, 212, 'Milk Punch'), 1542 | (255, 246, 223, 'Varden'), 1543 | (255, 246, 245, 'Rose White'), 1544 | (255, 248, 209, 'Baja White'), 1545 | (255, 249, 226, 'Gin Fizz'), 1546 | (255, 249, 230, 'Early Dawn'), 1547 | (255, 250, 205, 'Lemon Chiffon'), 1548 | (255, 250, 244, 'Bridal Heath'), 1549 | (255, 251, 220, 'Scotch Mist'), 1550 | (255, 251, 249, 'Soapstone'), 1551 | (255, 252, 153, 'Witch Haze'), 1552 | (255, 252, 234, 'Buttery White'), 1553 | (255, 252, 238, 'Island Spice'), 1554 | (255, 253, 208, 'Cream'), 1555 | (255, 253, 230, 'Chilean Heath'), 1556 | (255, 253, 232, 'Travertine'), 1557 | (255, 253, 243, 'Orchid White'), 1558 | (255, 253, 244, 'Quarter Pearl Lusta'), 1559 | (255, 254, 225, 'Half and Half'), 1560 | (255, 254, 236, 'Apricot White'), 1561 | (255, 254, 240, 'Rice Cake'), 1562 | (255, 254, 246, 'Black White'), 1563 | (255, 254, 253, 'Romance'), 1564 | (255, 255, 0, 'Yellow'), 1565 | (255, 255, 102, 'Laser Lemon'), 1566 | (255, 255, 153, 'Pale Canary'), 1567 | (255, 255, 180, 'Portafino'), 1568 | (255, 255, 240, 'Ivory'), 1569 | (255, 255, 255, 'White'), 1570 | (221, 72, 20, 'Ubuntu Original Orange'), 1571 | (233, 84, 32, 'Ubuntu Orange') 1572 | ] --------------------------------------------------------------------------------