mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
icon-loader: add a new loader for XPM icons, used by many legacy X11 apps
Adapted from gdk-pixbuf, see the original at: https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/blob/master/gdk-pixbuf/io-xpm.c rgb.txt is from X.org, see: https://gitlab.freedesktop.org/xorg/app/rgb/-/blob/master/rgb.txt Differences from the gdk-pixbuf version: - GdkPixbuf replaced with struct lab_data_buffer - Progressive and in-memory loading code removed - Two functions that had separate BSD copyright rewritten - Stores colors as ARGB32 earlier in the decoding process for efficiency - Limited to 1024x1024 px and 1024 colors to prevent abuse - Uses struct buf to build strings, in place of manual g_new/g_realloc - Uses xzalloc/xznew_n for other memory allocations - Uses g_strlcpy in place of banned strcpy/strncpy/strncat - Uses standard C types (int, bool, etc.) in place of the GLib ones - Follows labwc coding style (whitespace, braces, letter case, etc.) - Et cetera ... v2: add Perl fixes from @domo141
This commit is contained in:
parent
887ec70ba4
commit
c9e0a6e125
8 changed files with 2880 additions and 2 deletions
9
include/img/img-xpm.h
Normal file
9
include/img/img-xpm.h
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
#ifndef LABWC_IMG_XPM_H
|
||||
#define LABWC_IMG_XPM_H
|
||||
|
||||
struct lab_data_buffer;
|
||||
|
||||
void img_xpm_load(const char *filename, struct lab_data_buffer **buffer);
|
||||
|
||||
#endif /* LABWC_IMG_XPM_H */
|
||||
2
scripts/checkpatch.pl
vendored
2
scripts/checkpatch.pl
vendored
|
|
@ -5657,7 +5657,7 @@ sub process {
|
|||
#labwc-custom check to ignore some pango/libxml2/etc CamelCase variants
|
||||
$var !~ /^(?:_?Pango\w+)/ &&
|
||||
$var !~ /^(?:xml\w+)/ &&
|
||||
$var !~ /^(?:GString|GError)/ &&
|
||||
$var !~ /^(?:GString|GError|GHashTable)/ &&
|
||||
$var !~ /^(?:RsvgRectangle|RsvgHandle)/ &&
|
||||
$var !~ /^(?:XKB_KEY_XF86Switch_VT_1)/ &&
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#include "config.h"
|
||||
#include "icon-loader.h"
|
||||
#include "img/img-png.h"
|
||||
#include "img/img-xpm.h"
|
||||
|
||||
#if HAVE_RSVG
|
||||
#include "img/img-svg.h"
|
||||
|
|
@ -211,7 +212,7 @@ icon_loader_lookup(struct server *server, const char *app_id, int size, int scal
|
|||
#endif
|
||||
break;
|
||||
case SFDO_ICON_FILE_FORMAT_XPM:
|
||||
/* XPM is not supported */
|
||||
img_xpm_load(ctx.path, &icon_buffer);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
80
src/img/gen-color-table.pl
Executable file
80
src/img/gen-color-table.pl
Executable file
|
|
@ -0,0 +1,80 @@
|
|||
#!/usr/bin/perl -w
|
||||
|
||||
# Generates xpm-color-table.h from X11's rgb.txt
|
||||
# Adapted from gdk-pixbuf (LGPL-2.0-or-later)
|
||||
|
||||
if (@ARGV != 1) {
|
||||
die "Usage: gen-color-table.pl rgb.txt > xpm-color-table.h\n";
|
||||
}
|
||||
|
||||
open IN, '<', $ARGV[0] or die "Cannot open $ARGV[0]: $!\n";
|
||||
|
||||
@colors = ();
|
||||
while (<IN>) {
|
||||
next if /^!/;
|
||||
if (!/^\s*([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+(.*\S)\s*$/) {
|
||||
die "Cannot parse line $_";
|
||||
}
|
||||
|
||||
push @colors, [$1, $2, $3, $4];
|
||||
}
|
||||
|
||||
close IN or die "close IN failed: $!\n";
|
||||
|
||||
@colors = sort { lc($a->[3]) cmp lc($b->[3]) } @colors;
|
||||
|
||||
$offset = 0;
|
||||
|
||||
$date = gmtime;
|
||||
|
||||
print <<EOT;
|
||||
/* SPDX-License-Identifier: LGPL-2.0-or-later */
|
||||
/* xpm-color-table.h: Generated by gen-color-table.pl from rgb.txt
|
||||
*
|
||||
* Date: $date
|
||||
*
|
||||
* Do not edit.
|
||||
*/
|
||||
static const char color_names[] =
|
||||
EOT
|
||||
|
||||
for $color (@colors) {
|
||||
$name = $color->[3];
|
||||
|
||||
if ($offset != 0) {
|
||||
print qq(\n);
|
||||
}
|
||||
print qq( "$name\\0");
|
||||
|
||||
$color->[4] = $offset;
|
||||
$offset += length($name) + 1;
|
||||
}
|
||||
|
||||
print ";\n\n";
|
||||
|
||||
print <<EOT;
|
||||
struct xcolor_entry {
|
||||
uint16_t name_offset;
|
||||
uint8_t red;
|
||||
uint8_t green;
|
||||
uint8_t blue;
|
||||
};
|
||||
|
||||
static const struct xcolor_entry xcolors[] = {
|
||||
EOT
|
||||
|
||||
$i = 0;
|
||||
for $color (@colors) {
|
||||
$red = $color->[0];
|
||||
$green = $color->[1];
|
||||
$blue = $color->[2];
|
||||
$offset = $color->[4];
|
||||
|
||||
if ($i != 0) {
|
||||
print ",\n";
|
||||
}
|
||||
print " { $offset, $red, $green, $blue }";
|
||||
$i++;
|
||||
}
|
||||
|
||||
print "\n};\n";
|
||||
423
src/img/img-xpm.c
Normal file
423
src/img/img-xpm.c
Normal file
|
|
@ -0,0 +1,423 @@
|
|||
// SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
/*
|
||||
* XPM image loader adapted from gdk-pixbuf
|
||||
*
|
||||
* Copyright (C) 1999 Mark Crichton
|
||||
* Copyright (C) 1999 The Free Software Foundation
|
||||
*
|
||||
* Authors: Mark Crichton <crichton@gimp.org>
|
||||
* Federico Mena-Quintero <federico@gimp.org>
|
||||
*
|
||||
* Adapted for labwc by John Lindgren, 2024
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <wlr/util/log.h>
|
||||
|
||||
#include "buffer.h"
|
||||
#include "common/buf.h"
|
||||
#include "common/macros.h"
|
||||
#include "common/mem.h"
|
||||
#include "img/img-xpm.h"
|
||||
|
||||
#include "xpm-color-table.h"
|
||||
|
||||
enum buf_op { op_header, op_cmap, op_body };
|
||||
|
||||
struct xpm_color {
|
||||
char *color_string;
|
||||
uint32_t argb;
|
||||
};
|
||||
|
||||
struct file_handle {
|
||||
FILE *infile;
|
||||
struct buf buf;
|
||||
};
|
||||
|
||||
static inline uint32_t
|
||||
make_argb(uint8_t a, uint8_t r, uint8_t g, uint8_t b)
|
||||
{
|
||||
return ((uint32_t)a << 24) | ((uint32_t)r << 16) | ((uint32_t)g << 8) | b;
|
||||
}
|
||||
|
||||
static int
|
||||
compare_xcolor_entries(const void *a, const void *b)
|
||||
{
|
||||
return g_ascii_strcasecmp((const char *)a,
|
||||
color_names + ((const struct xcolor_entry *)b)->name_offset);
|
||||
}
|
||||
|
||||
static bool
|
||||
lookup_named_color(const char *name, uint32_t *argb)
|
||||
{
|
||||
struct xcolor_entry *found = bsearch(name, xcolors, ARRAY_SIZE(xcolors),
|
||||
sizeof(struct xcolor_entry), compare_xcolor_entries);
|
||||
if (!found) {
|
||||
return false;
|
||||
}
|
||||
|
||||
*argb = make_argb(0xFF, found->red, found->green, found->blue);
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool
|
||||
parse_color(const char *spec, uint32_t *argb)
|
||||
{
|
||||
if (spec[0] != '#') {
|
||||
return lookup_named_color(spec, argb);
|
||||
}
|
||||
|
||||
int red, green, blue;
|
||||
switch (strlen(spec + 1)) {
|
||||
case 3:
|
||||
if (sscanf(spec + 1, "%1x%1x%1x", &red, &green, &blue) != 3) {
|
||||
return false;
|
||||
}
|
||||
*argb = make_argb(255, (red * 255) / 15, (green * 255) / 15,
|
||||
(blue * 255) / 15);
|
||||
return true;
|
||||
case 6:
|
||||
if (sscanf(spec + 1, "%2x%2x%2x", &red, &green, &blue) != 3) {
|
||||
return false;
|
||||
}
|
||||
*argb = make_argb(255, red, green, blue);
|
||||
return true;
|
||||
case 9:
|
||||
if (sscanf(spec + 1, "%3x%3x%3x", &red, &green, &blue) != 3) {
|
||||
return false;
|
||||
}
|
||||
*argb = make_argb(255, (red * 255) / 4095, (green * 255) / 4095,
|
||||
(blue * 255) / 4095);
|
||||
return true;
|
||||
case 12:
|
||||
if (sscanf(spec + 1, "%4x%4x%4x", &red, &green, &blue) != 3) {
|
||||
return false;
|
||||
}
|
||||
*argb = make_argb(255, (red * 255) / 65535,
|
||||
(green * 255) / 65535, (blue * 255) / 65535);
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static bool
|
||||
xpm_seek_string(FILE *infile, const char *str)
|
||||
{
|
||||
char instr[1024];
|
||||
|
||||
while (!feof(infile)) {
|
||||
if (fscanf(infile, "%1023s", instr) < 0) {
|
||||
return false;
|
||||
}
|
||||
if (strcmp(instr, str) == 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool
|
||||
xpm_seek_char(FILE *infile, char c)
|
||||
{
|
||||
int b, oldb;
|
||||
|
||||
while ((b = getc(infile)) != EOF) {
|
||||
if (c != b && b == '/') {
|
||||
b = getc(infile);
|
||||
if (b == EOF) {
|
||||
return false;
|
||||
} else if (b == '*') { /* we have a comment */
|
||||
b = -1;
|
||||
do {
|
||||
oldb = b;
|
||||
b = getc(infile);
|
||||
if (b == EOF) {
|
||||
return false;
|
||||
}
|
||||
} while (!(oldb == '*' && b == '/'));
|
||||
}
|
||||
} else if (c == b) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool
|
||||
xpm_read_string(FILE *infile, struct buf *buf)
|
||||
{
|
||||
buf_clear(buf);
|
||||
int c;
|
||||
|
||||
do {
|
||||
c = getc(infile);
|
||||
if (c == EOF) {
|
||||
return false;
|
||||
}
|
||||
} while (c != '"');
|
||||
|
||||
while ((c = getc(infile)) != EOF) {
|
||||
if (c == '"') {
|
||||
return true;
|
||||
}
|
||||
buf_add_char(buf, c);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static uint32_t
|
||||
xpm_extract_color(const char *buffer)
|
||||
{
|
||||
const char *p = buffer;
|
||||
int new_key = 0;
|
||||
int key = 0;
|
||||
int current_key = 1;
|
||||
char word[129], color[129], current_color[129];
|
||||
char *r;
|
||||
|
||||
word[0] = '\0';
|
||||
color[0] = '\0';
|
||||
current_color[0] = '\0';
|
||||
while (true) {
|
||||
/* skip whitespace */
|
||||
for (; *p != '\0' && g_ascii_isspace(*p); p++) {
|
||||
/* nothing */
|
||||
}
|
||||
/* copy word */
|
||||
for (r = word; *p != '\0' && !g_ascii_isspace(*p)
|
||||
&& r - word < (int)sizeof(word) - 1;
|
||||
p++, r++) {
|
||||
*r = *p;
|
||||
}
|
||||
*r = '\0';
|
||||
if (*word == '\0') {
|
||||
if (color[0] == '\0') { /* incomplete colormap entry */
|
||||
return 0;
|
||||
} else { /* end of entry, still store the last color */
|
||||
new_key = 1;
|
||||
}
|
||||
} else if (key > 0 && color[0] == '\0') {
|
||||
/* next word must be a color name part */
|
||||
new_key = 0;
|
||||
} else {
|
||||
if (strcmp(word, "c") == 0) {
|
||||
new_key = 5;
|
||||
} else if (strcmp(word, "g") == 0) {
|
||||
new_key = 4;
|
||||
} else if (strcmp(word, "g4") == 0) {
|
||||
new_key = 3;
|
||||
} else if (strcmp(word, "m") == 0) {
|
||||
new_key = 2;
|
||||
} else if (strcmp(word, "s") == 0) {
|
||||
new_key = 1;
|
||||
} else {
|
||||
new_key = 0;
|
||||
}
|
||||
}
|
||||
if (new_key == 0) { /* word is a color name part */
|
||||
if (key == 0) { /* key expected */
|
||||
return 0;
|
||||
}
|
||||
/* accumulate color name */
|
||||
int len = strlen(color);
|
||||
if (len && len < (int)sizeof(color) - 1) {
|
||||
color[len++] = ' ';
|
||||
}
|
||||
g_strlcpy(color + len, word, sizeof(color) - len);
|
||||
} else { /* word is a key */
|
||||
if (key > current_key) {
|
||||
current_key = key;
|
||||
g_strlcpy(current_color, color, sizeof(current_color));
|
||||
}
|
||||
color[0] = '\0';
|
||||
key = new_key;
|
||||
if (*p == '\0') {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t argb;
|
||||
if (current_key > 1 && (g_ascii_strcasecmp(current_color, "None") != 0)
|
||||
&& parse_color(current_color, &argb)) {
|
||||
return argb;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static const char *
|
||||
file_buffer(enum buf_op op, struct file_handle *h)
|
||||
{
|
||||
switch (op) {
|
||||
case op_header:
|
||||
if (!xpm_seek_string(h->infile, "XPM")) {
|
||||
break;
|
||||
}
|
||||
if (!xpm_seek_char(h->infile, '{')) {
|
||||
break;
|
||||
}
|
||||
/* Fall through to the next xpm_seek_char. */
|
||||
|
||||
case op_cmap:
|
||||
xpm_seek_char(h->infile, '"');
|
||||
if (fseek(h->infile, -1, SEEK_CUR) != 0) {
|
||||
return NULL;
|
||||
}
|
||||
/* Fall through to the xpm_read_string. */
|
||||
|
||||
case op_body:
|
||||
if (!xpm_read_string(h->infile, &h->buf)) {
|
||||
return NULL;
|
||||
}
|
||||
return h->buf.data;
|
||||
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* This function does all the work. */
|
||||
static struct lab_data_buffer *
|
||||
pixbuf_create_from_xpm(struct file_handle *handle)
|
||||
{
|
||||
const char *buffer = file_buffer(op_header, handle);
|
||||
if (!buffer) {
|
||||
wlr_log(WLR_DEBUG, "No XPM header found");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int w, h, n_col, cpp, x_hot, y_hot;
|
||||
int items = sscanf(buffer, "%d %d %d %d %d %d", &w, &h, &n_col, &cpp,
|
||||
&x_hot, &y_hot);
|
||||
|
||||
if (items != 4 && items != 6) {
|
||||
wlr_log(WLR_DEBUG, "Invalid XPM header");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (w <= 0) {
|
||||
wlr_log(WLR_DEBUG, "XPM file has image width <= 0");
|
||||
return NULL;
|
||||
}
|
||||
if (h <= 0) {
|
||||
wlr_log(WLR_DEBUG, "XPM file has image height <= 0");
|
||||
return NULL;
|
||||
}
|
||||
/* Limits (width, height, colors) modified for labwc */
|
||||
if (h > 1024 || w > 1024) {
|
||||
wlr_log(WLR_DEBUG, "XPM file is larger than 1024x1024");
|
||||
return NULL;
|
||||
}
|
||||
if (cpp <= 0 || cpp >= 32) {
|
||||
wlr_log(WLR_DEBUG, "XPM has invalid number of chars per pixel");
|
||||
return NULL;
|
||||
}
|
||||
if (n_col <= 0 || n_col > 1024) {
|
||||
wlr_log(WLR_DEBUG, "XPM file has invalid number of colors");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* The hash is used for fast lookups of color from chars */
|
||||
GHashTable *color_hash = g_hash_table_new(g_str_hash, g_str_equal);
|
||||
|
||||
char *name_buf = xzalloc(n_col * (cpp + 1));
|
||||
struct xpm_color *colors = znew_n(struct xpm_color, n_col);
|
||||
uint32_t *data = znew_n(uint32_t, w * h);
|
||||
struct xpm_color *fallbackcolor = NULL;
|
||||
char pixel_str[32]; /* cpp < 32 */
|
||||
|
||||
for (int cnt = 0; cnt < n_col; cnt++) {
|
||||
buffer = file_buffer(op_cmap, handle);
|
||||
if (!buffer) {
|
||||
wlr_log(WLR_DEBUG, "Cannot read XPM colormap");
|
||||
goto out;
|
||||
}
|
||||
|
||||
struct xpm_color *color = &colors[cnt];
|
||||
color->color_string = &name_buf[cnt * (cpp + 1)];
|
||||
g_strlcpy(color->color_string, buffer, cpp + 1);
|
||||
buffer += strlen(color->color_string);
|
||||
|
||||
color->argb = xpm_extract_color(buffer);
|
||||
|
||||
g_hash_table_insert(color_hash, color->color_string, color);
|
||||
|
||||
if (cnt == 0) {
|
||||
fallbackcolor = color;
|
||||
}
|
||||
}
|
||||
|
||||
for (int ycnt = 0; ycnt < h; ycnt++) {
|
||||
uint32_t *pixtmp = data + w * ycnt;
|
||||
int wbytes = w * cpp;
|
||||
|
||||
buffer = file_buffer(op_body, handle);
|
||||
if (!buffer || (strlen(buffer) < (size_t)wbytes)) {
|
||||
/* Advertised width doesn't match pixels */
|
||||
wlr_log(WLR_DEBUG, "Dimensions do not match data");
|
||||
goto out;
|
||||
}
|
||||
|
||||
for (int n = 0, xcnt = 0; n < wbytes; n += cpp, xcnt++) {
|
||||
g_strlcpy(pixel_str, &buffer[n], cpp + 1);
|
||||
|
||||
struct xpm_color *color =
|
||||
g_hash_table_lookup(color_hash, pixel_str);
|
||||
|
||||
/* Bad XPM...punt */
|
||||
if (!color) {
|
||||
color = fallbackcolor;
|
||||
}
|
||||
|
||||
*pixtmp++ = color->argb;
|
||||
}
|
||||
}
|
||||
|
||||
g_hash_table_destroy(color_hash);
|
||||
free(colors);
|
||||
free(name_buf);
|
||||
|
||||
return buffer_create_wrap(data, w, h, 4 * w, true);
|
||||
|
||||
out:
|
||||
g_hash_table_destroy(color_hash);
|
||||
free(colors);
|
||||
free(name_buf);
|
||||
free(data);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
img_xpm_load(const char *filename, struct lab_data_buffer **buffer)
|
||||
{
|
||||
if (*buffer) {
|
||||
wlr_buffer_drop(&(*buffer)->base);
|
||||
*buffer = NULL;
|
||||
}
|
||||
|
||||
struct file_handle h = {0};
|
||||
h.infile = fopen(filename, "rb");
|
||||
if (!h.infile) {
|
||||
wlr_log(WLR_ERROR, "error opening '%s'", filename);
|
||||
return;
|
||||
}
|
||||
|
||||
*buffer = pixbuf_create_from_xpm(&h);
|
||||
if (!(*buffer)) {
|
||||
wlr_log(WLR_ERROR, "error loading '%s'", filename);
|
||||
}
|
||||
|
||||
fclose(h.infile);
|
||||
buf_reset(&h.buf);
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
labwc_sources += files(
|
||||
'img-png.c',
|
||||
'img-xbm.c',
|
||||
'img-xpm.c'
|
||||
)
|
||||
|
||||
if have_rsvg
|
||||
|
|
|
|||
782
src/img/rgb.txt
Normal file
782
src/img/rgb.txt
Normal file
|
|
@ -0,0 +1,782 @@
|
|||
255 250 250 snow
|
||||
248 248 255 ghost white
|
||||
248 248 255 GhostWhite
|
||||
245 245 245 white smoke
|
||||
245 245 245 WhiteSmoke
|
||||
220 220 220 gainsboro
|
||||
255 250 240 floral white
|
||||
255 250 240 FloralWhite
|
||||
253 245 230 old lace
|
||||
253 245 230 OldLace
|
||||
250 240 230 linen
|
||||
250 235 215 antique white
|
||||
250 235 215 AntiqueWhite
|
||||
255 239 213 papaya whip
|
||||
255 239 213 PapayaWhip
|
||||
255 235 205 blanched almond
|
||||
255 235 205 BlanchedAlmond
|
||||
255 228 196 bisque
|
||||
255 218 185 peach puff
|
||||
255 218 185 PeachPuff
|
||||
255 222 173 navajo white
|
||||
255 222 173 NavajoWhite
|
||||
255 228 181 moccasin
|
||||
255 248 220 cornsilk
|
||||
255 255 240 ivory
|
||||
255 250 205 lemon chiffon
|
||||
255 250 205 LemonChiffon
|
||||
255 245 238 seashell
|
||||
240 255 240 honeydew
|
||||
245 255 250 mint cream
|
||||
245 255 250 MintCream
|
||||
240 255 255 azure
|
||||
240 248 255 alice blue
|
||||
240 248 255 AliceBlue
|
||||
230 230 250 lavender
|
||||
255 240 245 lavender blush
|
||||
255 240 245 LavenderBlush
|
||||
255 228 225 misty rose
|
||||
255 228 225 MistyRose
|
||||
255 255 255 white
|
||||
0 0 0 black
|
||||
47 79 79 dark slate gray
|
||||
47 79 79 DarkSlateGray
|
||||
47 79 79 dark slate grey
|
||||
47 79 79 DarkSlateGrey
|
||||
105 105 105 dim gray
|
||||
105 105 105 DimGray
|
||||
105 105 105 dim grey
|
||||
105 105 105 DimGrey
|
||||
112 128 144 slate gray
|
||||
112 128 144 SlateGray
|
||||
112 128 144 slate grey
|
||||
112 128 144 SlateGrey
|
||||
119 136 153 light slate gray
|
||||
119 136 153 LightSlateGray
|
||||
119 136 153 light slate grey
|
||||
119 136 153 LightSlateGrey
|
||||
190 190 190 gray
|
||||
190 190 190 grey
|
||||
190 190 190 x11 gray
|
||||
190 190 190 X11Gray
|
||||
190 190 190 x11 grey
|
||||
190 190 190 X11Grey
|
||||
128 128 128 web gray
|
||||
128 128 128 WebGray
|
||||
128 128 128 web grey
|
||||
128 128 128 WebGrey
|
||||
211 211 211 light grey
|
||||
211 211 211 LightGrey
|
||||
211 211 211 light gray
|
||||
211 211 211 LightGray
|
||||
25 25 112 midnight blue
|
||||
25 25 112 MidnightBlue
|
||||
0 0 128 navy
|
||||
0 0 128 navy blue
|
||||
0 0 128 NavyBlue
|
||||
100 149 237 cornflower blue
|
||||
100 149 237 CornflowerBlue
|
||||
72 61 139 dark slate blue
|
||||
72 61 139 DarkSlateBlue
|
||||
106 90 205 slate blue
|
||||
106 90 205 SlateBlue
|
||||
123 104 238 medium slate blue
|
||||
123 104 238 MediumSlateBlue
|
||||
132 112 255 light slate blue
|
||||
132 112 255 LightSlateBlue
|
||||
0 0 205 medium blue
|
||||
0 0 205 MediumBlue
|
||||
65 105 225 royal blue
|
||||
65 105 225 RoyalBlue
|
||||
0 0 255 blue
|
||||
30 144 255 dodger blue
|
||||
30 144 255 DodgerBlue
|
||||
0 191 255 deep sky blue
|
||||
0 191 255 DeepSkyBlue
|
||||
135 206 235 sky blue
|
||||
135 206 235 SkyBlue
|
||||
135 206 250 light sky blue
|
||||
135 206 250 LightSkyBlue
|
||||
70 130 180 steel blue
|
||||
70 130 180 SteelBlue
|
||||
176 196 222 light steel blue
|
||||
176 196 222 LightSteelBlue
|
||||
173 216 230 light blue
|
||||
173 216 230 LightBlue
|
||||
176 224 230 powder blue
|
||||
176 224 230 PowderBlue
|
||||
175 238 238 pale turquoise
|
||||
175 238 238 PaleTurquoise
|
||||
0 206 209 dark turquoise
|
||||
0 206 209 DarkTurquoise
|
||||
72 209 204 medium turquoise
|
||||
72 209 204 MediumTurquoise
|
||||
64 224 208 turquoise
|
||||
0 255 255 cyan
|
||||
0 255 255 aqua
|
||||
224 255 255 light cyan
|
||||
224 255 255 LightCyan
|
||||
95 158 160 cadet blue
|
||||
95 158 160 CadetBlue
|
||||
102 205 170 medium aquamarine
|
||||
102 205 170 MediumAquamarine
|
||||
127 255 212 aquamarine
|
||||
0 100 0 dark green
|
||||
0 100 0 DarkGreen
|
||||
85 107 47 dark olive green
|
||||
85 107 47 DarkOliveGreen
|
||||
143 188 143 dark sea green
|
||||
143 188 143 DarkSeaGreen
|
||||
46 139 87 sea green
|
||||
46 139 87 SeaGreen
|
||||
60 179 113 medium sea green
|
||||
60 179 113 MediumSeaGreen
|
||||
32 178 170 light sea green
|
||||
32 178 170 LightSeaGreen
|
||||
152 251 152 pale green
|
||||
152 251 152 PaleGreen
|
||||
0 255 127 spring green
|
||||
0 255 127 SpringGreen
|
||||
124 252 0 lawn green
|
||||
124 252 0 LawnGreen
|
||||
0 255 0 green
|
||||
0 255 0 lime
|
||||
0 255 0 x11 green
|
||||
0 255 0 X11Green
|
||||
0 128 0 web green
|
||||
0 128 0 WebGreen
|
||||
127 255 0 chartreuse
|
||||
0 250 154 medium spring green
|
||||
0 250 154 MediumSpringGreen
|
||||
173 255 47 green yellow
|
||||
173 255 47 GreenYellow
|
||||
50 205 50 lime green
|
||||
50 205 50 LimeGreen
|
||||
154 205 50 yellow green
|
||||
154 205 50 YellowGreen
|
||||
34 139 34 forest green
|
||||
34 139 34 ForestGreen
|
||||
107 142 35 olive drab
|
||||
107 142 35 OliveDrab
|
||||
189 183 107 dark khaki
|
||||
189 183 107 DarkKhaki
|
||||
240 230 140 khaki
|
||||
238 232 170 pale goldenrod
|
||||
238 232 170 PaleGoldenrod
|
||||
250 250 210 light goldenrod yellow
|
||||
250 250 210 LightGoldenrodYellow
|
||||
255 255 224 light yellow
|
||||
255 255 224 LightYellow
|
||||
255 255 0 yellow
|
||||
255 215 0 gold
|
||||
238 221 130 light goldenrod
|
||||
238 221 130 LightGoldenrod
|
||||
218 165 32 goldenrod
|
||||
184 134 11 dark goldenrod
|
||||
184 134 11 DarkGoldenrod
|
||||
188 143 143 rosy brown
|
||||
188 143 143 RosyBrown
|
||||
205 92 92 indian red
|
||||
205 92 92 IndianRed
|
||||
139 69 19 saddle brown
|
||||
139 69 19 SaddleBrown
|
||||
160 82 45 sienna
|
||||
205 133 63 peru
|
||||
222 184 135 burlywood
|
||||
245 245 220 beige
|
||||
245 222 179 wheat
|
||||
244 164 96 sandy brown
|
||||
244 164 96 SandyBrown
|
||||
210 180 140 tan
|
||||
210 105 30 chocolate
|
||||
178 34 34 firebrick
|
||||
165 42 42 brown
|
||||
233 150 122 dark salmon
|
||||
233 150 122 DarkSalmon
|
||||
250 128 114 salmon
|
||||
255 160 122 light salmon
|
||||
255 160 122 LightSalmon
|
||||
255 165 0 orange
|
||||
255 140 0 dark orange
|
||||
255 140 0 DarkOrange
|
||||
255 127 80 coral
|
||||
240 128 128 light coral
|
||||
240 128 128 LightCoral
|
||||
255 99 71 tomato
|
||||
255 69 0 orange red
|
||||
255 69 0 OrangeRed
|
||||
255 0 0 red
|
||||
255 105 180 hot pink
|
||||
255 105 180 HotPink
|
||||
255 20 147 deep pink
|
||||
255 20 147 DeepPink
|
||||
255 192 203 pink
|
||||
255 182 193 light pink
|
||||
255 182 193 LightPink
|
||||
219 112 147 pale violet red
|
||||
219 112 147 PaleVioletRed
|
||||
176 48 96 maroon
|
||||
176 48 96 x11 maroon
|
||||
176 48 96 X11Maroon
|
||||
128 0 0 web maroon
|
||||
128 0 0 WebMaroon
|
||||
199 21 133 medium violet red
|
||||
199 21 133 MediumVioletRed
|
||||
208 32 144 violet red
|
||||
208 32 144 VioletRed
|
||||
255 0 255 magenta
|
||||
255 0 255 fuchsia
|
||||
238 130 238 violet
|
||||
221 160 221 plum
|
||||
218 112 214 orchid
|
||||
186 85 211 medium orchid
|
||||
186 85 211 MediumOrchid
|
||||
153 50 204 dark orchid
|
||||
153 50 204 DarkOrchid
|
||||
148 0 211 dark violet
|
||||
148 0 211 DarkViolet
|
||||
138 43 226 blue violet
|
||||
138 43 226 BlueViolet
|
||||
160 32 240 purple
|
||||
160 32 240 x11 purple
|
||||
160 32 240 X11Purple
|
||||
128 0 128 web purple
|
||||
128 0 128 WebPurple
|
||||
147 112 219 medium purple
|
||||
147 112 219 MediumPurple
|
||||
216 191 216 thistle
|
||||
255 250 250 snow1
|
||||
238 233 233 snow2
|
||||
205 201 201 snow3
|
||||
139 137 137 snow4
|
||||
255 245 238 seashell1
|
||||
238 229 222 seashell2
|
||||
205 197 191 seashell3
|
||||
139 134 130 seashell4
|
||||
255 239 219 AntiqueWhite1
|
||||
238 223 204 AntiqueWhite2
|
||||
205 192 176 AntiqueWhite3
|
||||
139 131 120 AntiqueWhite4
|
||||
255 228 196 bisque1
|
||||
238 213 183 bisque2
|
||||
205 183 158 bisque3
|
||||
139 125 107 bisque4
|
||||
255 218 185 PeachPuff1
|
||||
238 203 173 PeachPuff2
|
||||
205 175 149 PeachPuff3
|
||||
139 119 101 PeachPuff4
|
||||
255 222 173 NavajoWhite1
|
||||
238 207 161 NavajoWhite2
|
||||
205 179 139 NavajoWhite3
|
||||
139 121 94 NavajoWhite4
|
||||
255 250 205 LemonChiffon1
|
||||
238 233 191 LemonChiffon2
|
||||
205 201 165 LemonChiffon3
|
||||
139 137 112 LemonChiffon4
|
||||
255 248 220 cornsilk1
|
||||
238 232 205 cornsilk2
|
||||
205 200 177 cornsilk3
|
||||
139 136 120 cornsilk4
|
||||
255 255 240 ivory1
|
||||
238 238 224 ivory2
|
||||
205 205 193 ivory3
|
||||
139 139 131 ivory4
|
||||
240 255 240 honeydew1
|
||||
224 238 224 honeydew2
|
||||
193 205 193 honeydew3
|
||||
131 139 131 honeydew4
|
||||
255 240 245 LavenderBlush1
|
||||
238 224 229 LavenderBlush2
|
||||
205 193 197 LavenderBlush3
|
||||
139 131 134 LavenderBlush4
|
||||
255 228 225 MistyRose1
|
||||
238 213 210 MistyRose2
|
||||
205 183 181 MistyRose3
|
||||
139 125 123 MistyRose4
|
||||
240 255 255 azure1
|
||||
224 238 238 azure2
|
||||
193 205 205 azure3
|
||||
131 139 139 azure4
|
||||
131 111 255 SlateBlue1
|
||||
122 103 238 SlateBlue2
|
||||
105 89 205 SlateBlue3
|
||||
71 60 139 SlateBlue4
|
||||
72 118 255 RoyalBlue1
|
||||
67 110 238 RoyalBlue2
|
||||
58 95 205 RoyalBlue3
|
||||
39 64 139 RoyalBlue4
|
||||
0 0 255 blue1
|
||||
0 0 238 blue2
|
||||
0 0 205 blue3
|
||||
0 0 139 blue4
|
||||
30 144 255 DodgerBlue1
|
||||
28 134 238 DodgerBlue2
|
||||
24 116 205 DodgerBlue3
|
||||
16 78 139 DodgerBlue4
|
||||
99 184 255 SteelBlue1
|
||||
92 172 238 SteelBlue2
|
||||
79 148 205 SteelBlue3
|
||||
54 100 139 SteelBlue4
|
||||
0 191 255 DeepSkyBlue1
|
||||
0 178 238 DeepSkyBlue2
|
||||
0 154 205 DeepSkyBlue3
|
||||
0 104 139 DeepSkyBlue4
|
||||
135 206 255 SkyBlue1
|
||||
126 192 238 SkyBlue2
|
||||
108 166 205 SkyBlue3
|
||||
74 112 139 SkyBlue4
|
||||
176 226 255 LightSkyBlue1
|
||||
164 211 238 LightSkyBlue2
|
||||
141 182 205 LightSkyBlue3
|
||||
96 123 139 LightSkyBlue4
|
||||
198 226 255 SlateGray1
|
||||
185 211 238 SlateGray2
|
||||
159 182 205 SlateGray3
|
||||
108 123 139 SlateGray4
|
||||
202 225 255 LightSteelBlue1
|
||||
188 210 238 LightSteelBlue2
|
||||
162 181 205 LightSteelBlue3
|
||||
110 123 139 LightSteelBlue4
|
||||
191 239 255 LightBlue1
|
||||
178 223 238 LightBlue2
|
||||
154 192 205 LightBlue3
|
||||
104 131 139 LightBlue4
|
||||
224 255 255 LightCyan1
|
||||
209 238 238 LightCyan2
|
||||
180 205 205 LightCyan3
|
||||
122 139 139 LightCyan4
|
||||
187 255 255 PaleTurquoise1
|
||||
174 238 238 PaleTurquoise2
|
||||
150 205 205 PaleTurquoise3
|
||||
102 139 139 PaleTurquoise4
|
||||
152 245 255 CadetBlue1
|
||||
142 229 238 CadetBlue2
|
||||
122 197 205 CadetBlue3
|
||||
83 134 139 CadetBlue4
|
||||
0 245 255 turquoise1
|
||||
0 229 238 turquoise2
|
||||
0 197 205 turquoise3
|
||||
0 134 139 turquoise4
|
||||
0 255 255 cyan1
|
||||
0 238 238 cyan2
|
||||
0 205 205 cyan3
|
||||
0 139 139 cyan4
|
||||
151 255 255 DarkSlateGray1
|
||||
141 238 238 DarkSlateGray2
|
||||
121 205 205 DarkSlateGray3
|
||||
82 139 139 DarkSlateGray4
|
||||
127 255 212 aquamarine1
|
||||
118 238 198 aquamarine2
|
||||
102 205 170 aquamarine3
|
||||
69 139 116 aquamarine4
|
||||
193 255 193 DarkSeaGreen1
|
||||
180 238 180 DarkSeaGreen2
|
||||
155 205 155 DarkSeaGreen3
|
||||
105 139 105 DarkSeaGreen4
|
||||
84 255 159 SeaGreen1
|
||||
78 238 148 SeaGreen2
|
||||
67 205 128 SeaGreen3
|
||||
46 139 87 SeaGreen4
|
||||
154 255 154 PaleGreen1
|
||||
144 238 144 PaleGreen2
|
||||
124 205 124 PaleGreen3
|
||||
84 139 84 PaleGreen4
|
||||
0 255 127 SpringGreen1
|
||||
0 238 118 SpringGreen2
|
||||
0 205 102 SpringGreen3
|
||||
0 139 69 SpringGreen4
|
||||
0 255 0 green1
|
||||
0 238 0 green2
|
||||
0 205 0 green3
|
||||
0 139 0 green4
|
||||
127 255 0 chartreuse1
|
||||
118 238 0 chartreuse2
|
||||
102 205 0 chartreuse3
|
||||
69 139 0 chartreuse4
|
||||
192 255 62 OliveDrab1
|
||||
179 238 58 OliveDrab2
|
||||
154 205 50 OliveDrab3
|
||||
105 139 34 OliveDrab4
|
||||
202 255 112 DarkOliveGreen1
|
||||
188 238 104 DarkOliveGreen2
|
||||
162 205 90 DarkOliveGreen3
|
||||
110 139 61 DarkOliveGreen4
|
||||
255 246 143 khaki1
|
||||
238 230 133 khaki2
|
||||
205 198 115 khaki3
|
||||
139 134 78 khaki4
|
||||
255 236 139 LightGoldenrod1
|
||||
238 220 130 LightGoldenrod2
|
||||
205 190 112 LightGoldenrod3
|
||||
139 129 76 LightGoldenrod4
|
||||
255 255 224 LightYellow1
|
||||
238 238 209 LightYellow2
|
||||
205 205 180 LightYellow3
|
||||
139 139 122 LightYellow4
|
||||
255 255 0 yellow1
|
||||
238 238 0 yellow2
|
||||
205 205 0 yellow3
|
||||
139 139 0 yellow4
|
||||
255 215 0 gold1
|
||||
238 201 0 gold2
|
||||
205 173 0 gold3
|
||||
139 117 0 gold4
|
||||
255 193 37 goldenrod1
|
||||
238 180 34 goldenrod2
|
||||
205 155 29 goldenrod3
|
||||
139 105 20 goldenrod4
|
||||
255 185 15 DarkGoldenrod1
|
||||
238 173 14 DarkGoldenrod2
|
||||
205 149 12 DarkGoldenrod3
|
||||
139 101 8 DarkGoldenrod4
|
||||
255 193 193 RosyBrown1
|
||||
238 180 180 RosyBrown2
|
||||
205 155 155 RosyBrown3
|
||||
139 105 105 RosyBrown4
|
||||
255 106 106 IndianRed1
|
||||
238 99 99 IndianRed2
|
||||
205 85 85 IndianRed3
|
||||
139 58 58 IndianRed4
|
||||
255 130 71 sienna1
|
||||
238 121 66 sienna2
|
||||
205 104 57 sienna3
|
||||
139 71 38 sienna4
|
||||
255 211 155 burlywood1
|
||||
238 197 145 burlywood2
|
||||
205 170 125 burlywood3
|
||||
139 115 85 burlywood4
|
||||
255 231 186 wheat1
|
||||
238 216 174 wheat2
|
||||
205 186 150 wheat3
|
||||
139 126 102 wheat4
|
||||
255 165 79 tan1
|
||||
238 154 73 tan2
|
||||
205 133 63 tan3
|
||||
139 90 43 tan4
|
||||
255 127 36 chocolate1
|
||||
238 118 33 chocolate2
|
||||
205 102 29 chocolate3
|
||||
139 69 19 chocolate4
|
||||
255 48 48 firebrick1
|
||||
238 44 44 firebrick2
|
||||
205 38 38 firebrick3
|
||||
139 26 26 firebrick4
|
||||
255 64 64 brown1
|
||||
238 59 59 brown2
|
||||
205 51 51 brown3
|
||||
139 35 35 brown4
|
||||
255 140 105 salmon1
|
||||
238 130 98 salmon2
|
||||
205 112 84 salmon3
|
||||
139 76 57 salmon4
|
||||
255 160 122 LightSalmon1
|
||||
238 149 114 LightSalmon2
|
||||
205 129 98 LightSalmon3
|
||||
139 87 66 LightSalmon4
|
||||
255 165 0 orange1
|
||||
238 154 0 orange2
|
||||
205 133 0 orange3
|
||||
139 90 0 orange4
|
||||
255 127 0 DarkOrange1
|
||||
238 118 0 DarkOrange2
|
||||
205 102 0 DarkOrange3
|
||||
139 69 0 DarkOrange4
|
||||
255 114 86 coral1
|
||||
238 106 80 coral2
|
||||
205 91 69 coral3
|
||||
139 62 47 coral4
|
||||
255 99 71 tomato1
|
||||
238 92 66 tomato2
|
||||
205 79 57 tomato3
|
||||
139 54 38 tomato4
|
||||
255 69 0 OrangeRed1
|
||||
238 64 0 OrangeRed2
|
||||
205 55 0 OrangeRed3
|
||||
139 37 0 OrangeRed4
|
||||
255 0 0 red1
|
||||
238 0 0 red2
|
||||
205 0 0 red3
|
||||
139 0 0 red4
|
||||
255 20 147 DeepPink1
|
||||
238 18 137 DeepPink2
|
||||
205 16 118 DeepPink3
|
||||
139 10 80 DeepPink4
|
||||
255 110 180 HotPink1
|
||||
238 106 167 HotPink2
|
||||
205 96 144 HotPink3
|
||||
139 58 98 HotPink4
|
||||
255 181 197 pink1
|
||||
238 169 184 pink2
|
||||
205 145 158 pink3
|
||||
139 99 108 pink4
|
||||
255 174 185 LightPink1
|
||||
238 162 173 LightPink2
|
||||
205 140 149 LightPink3
|
||||
139 95 101 LightPink4
|
||||
255 130 171 PaleVioletRed1
|
||||
238 121 159 PaleVioletRed2
|
||||
205 104 137 PaleVioletRed3
|
||||
139 71 93 PaleVioletRed4
|
||||
255 52 179 maroon1
|
||||
238 48 167 maroon2
|
||||
205 41 144 maroon3
|
||||
139 28 98 maroon4
|
||||
255 62 150 VioletRed1
|
||||
238 58 140 VioletRed2
|
||||
205 50 120 VioletRed3
|
||||
139 34 82 VioletRed4
|
||||
255 0 255 magenta1
|
||||
238 0 238 magenta2
|
||||
205 0 205 magenta3
|
||||
139 0 139 magenta4
|
||||
255 131 250 orchid1
|
||||
238 122 233 orchid2
|
||||
205 105 201 orchid3
|
||||
139 71 137 orchid4
|
||||
255 187 255 plum1
|
||||
238 174 238 plum2
|
||||
205 150 205 plum3
|
||||
139 102 139 plum4
|
||||
224 102 255 MediumOrchid1
|
||||
209 95 238 MediumOrchid2
|
||||
180 82 205 MediumOrchid3
|
||||
122 55 139 MediumOrchid4
|
||||
191 62 255 DarkOrchid1
|
||||
178 58 238 DarkOrchid2
|
||||
154 50 205 DarkOrchid3
|
||||
104 34 139 DarkOrchid4
|
||||
155 48 255 purple1
|
||||
145 44 238 purple2
|
||||
125 38 205 purple3
|
||||
85 26 139 purple4
|
||||
171 130 255 MediumPurple1
|
||||
159 121 238 MediumPurple2
|
||||
137 104 205 MediumPurple3
|
||||
93 71 139 MediumPurple4
|
||||
255 225 255 thistle1
|
||||
238 210 238 thistle2
|
||||
205 181 205 thistle3
|
||||
139 123 139 thistle4
|
||||
0 0 0 gray0
|
||||
0 0 0 grey0
|
||||
3 3 3 gray1
|
||||
3 3 3 grey1
|
||||
5 5 5 gray2
|
||||
5 5 5 grey2
|
||||
8 8 8 gray3
|
||||
8 8 8 grey3
|
||||
10 10 10 gray4
|
||||
10 10 10 grey4
|
||||
13 13 13 gray5
|
||||
13 13 13 grey5
|
||||
15 15 15 gray6
|
||||
15 15 15 grey6
|
||||
18 18 18 gray7
|
||||
18 18 18 grey7
|
||||
20 20 20 gray8
|
||||
20 20 20 grey8
|
||||
23 23 23 gray9
|
||||
23 23 23 grey9
|
||||
26 26 26 gray10
|
||||
26 26 26 grey10
|
||||
28 28 28 gray11
|
||||
28 28 28 grey11
|
||||
31 31 31 gray12
|
||||
31 31 31 grey12
|
||||
33 33 33 gray13
|
||||
33 33 33 grey13
|
||||
36 36 36 gray14
|
||||
36 36 36 grey14
|
||||
38 38 38 gray15
|
||||
38 38 38 grey15
|
||||
41 41 41 gray16
|
||||
41 41 41 grey16
|
||||
43 43 43 gray17
|
||||
43 43 43 grey17
|
||||
46 46 46 gray18
|
||||
46 46 46 grey18
|
||||
48 48 48 gray19
|
||||
48 48 48 grey19
|
||||
51 51 51 gray20
|
||||
51 51 51 grey20
|
||||
54 54 54 gray21
|
||||
54 54 54 grey21
|
||||
56 56 56 gray22
|
||||
56 56 56 grey22
|
||||
59 59 59 gray23
|
||||
59 59 59 grey23
|
||||
61 61 61 gray24
|
||||
61 61 61 grey24
|
||||
64 64 64 gray25
|
||||
64 64 64 grey25
|
||||
66 66 66 gray26
|
||||
66 66 66 grey26
|
||||
69 69 69 gray27
|
||||
69 69 69 grey27
|
||||
71 71 71 gray28
|
||||
71 71 71 grey28
|
||||
74 74 74 gray29
|
||||
74 74 74 grey29
|
||||
77 77 77 gray30
|
||||
77 77 77 grey30
|
||||
79 79 79 gray31
|
||||
79 79 79 grey31
|
||||
82 82 82 gray32
|
||||
82 82 82 grey32
|
||||
84 84 84 gray33
|
||||
84 84 84 grey33
|
||||
87 87 87 gray34
|
||||
87 87 87 grey34
|
||||
89 89 89 gray35
|
||||
89 89 89 grey35
|
||||
92 92 92 gray36
|
||||
92 92 92 grey36
|
||||
94 94 94 gray37
|
||||
94 94 94 grey37
|
||||
97 97 97 gray38
|
||||
97 97 97 grey38
|
||||
99 99 99 gray39
|
||||
99 99 99 grey39
|
||||
102 102 102 gray40
|
||||
102 102 102 grey40
|
||||
105 105 105 gray41
|
||||
105 105 105 grey41
|
||||
107 107 107 gray42
|
||||
107 107 107 grey42
|
||||
110 110 110 gray43
|
||||
110 110 110 grey43
|
||||
112 112 112 gray44
|
||||
112 112 112 grey44
|
||||
115 115 115 gray45
|
||||
115 115 115 grey45
|
||||
117 117 117 gray46
|
||||
117 117 117 grey46
|
||||
120 120 120 gray47
|
||||
120 120 120 grey47
|
||||
122 122 122 gray48
|
||||
122 122 122 grey48
|
||||
125 125 125 gray49
|
||||
125 125 125 grey49
|
||||
127 127 127 gray50
|
||||
127 127 127 grey50
|
||||
130 130 130 gray51
|
||||
130 130 130 grey51
|
||||
133 133 133 gray52
|
||||
133 133 133 grey52
|
||||
135 135 135 gray53
|
||||
135 135 135 grey53
|
||||
138 138 138 gray54
|
||||
138 138 138 grey54
|
||||
140 140 140 gray55
|
||||
140 140 140 grey55
|
||||
143 143 143 gray56
|
||||
143 143 143 grey56
|
||||
145 145 145 gray57
|
||||
145 145 145 grey57
|
||||
148 148 148 gray58
|
||||
148 148 148 grey58
|
||||
150 150 150 gray59
|
||||
150 150 150 grey59
|
||||
153 153 153 gray60
|
||||
153 153 153 grey60
|
||||
156 156 156 gray61
|
||||
156 156 156 grey61
|
||||
158 158 158 gray62
|
||||
158 158 158 grey62
|
||||
161 161 161 gray63
|
||||
161 161 161 grey63
|
||||
163 163 163 gray64
|
||||
163 163 163 grey64
|
||||
166 166 166 gray65
|
||||
166 166 166 grey65
|
||||
168 168 168 gray66
|
||||
168 168 168 grey66
|
||||
171 171 171 gray67
|
||||
171 171 171 grey67
|
||||
173 173 173 gray68
|
||||
173 173 173 grey68
|
||||
176 176 176 gray69
|
||||
176 176 176 grey69
|
||||
179 179 179 gray70
|
||||
179 179 179 grey70
|
||||
181 181 181 gray71
|
||||
181 181 181 grey71
|
||||
184 184 184 gray72
|
||||
184 184 184 grey72
|
||||
186 186 186 gray73
|
||||
186 186 186 grey73
|
||||
189 189 189 gray74
|
||||
189 189 189 grey74
|
||||
191 191 191 gray75
|
||||
191 191 191 grey75
|
||||
194 194 194 gray76
|
||||
194 194 194 grey76
|
||||
196 196 196 gray77
|
||||
196 196 196 grey77
|
||||
199 199 199 gray78
|
||||
199 199 199 grey78
|
||||
201 201 201 gray79
|
||||
201 201 201 grey79
|
||||
204 204 204 gray80
|
||||
204 204 204 grey80
|
||||
207 207 207 gray81
|
||||
207 207 207 grey81
|
||||
209 209 209 gray82
|
||||
209 209 209 grey82
|
||||
212 212 212 gray83
|
||||
212 212 212 grey83
|
||||
214 214 214 gray84
|
||||
214 214 214 grey84
|
||||
217 217 217 gray85
|
||||
217 217 217 grey85
|
||||
219 219 219 gray86
|
||||
219 219 219 grey86
|
||||
222 222 222 gray87
|
||||
222 222 222 grey87
|
||||
224 224 224 gray88
|
||||
224 224 224 grey88
|
||||
227 227 227 gray89
|
||||
227 227 227 grey89
|
||||
229 229 229 gray90
|
||||
229 229 229 grey90
|
||||
232 232 232 gray91
|
||||
232 232 232 grey91
|
||||
235 235 235 gray92
|
||||
235 235 235 grey92
|
||||
237 237 237 gray93
|
||||
237 237 237 grey93
|
||||
240 240 240 gray94
|
||||
240 240 240 grey94
|
||||
242 242 242 gray95
|
||||
242 242 242 grey95
|
||||
245 245 245 gray96
|
||||
245 245 245 grey96
|
||||
247 247 247 gray97
|
||||
247 247 247 grey97
|
||||
250 250 250 gray98
|
||||
250 250 250 grey98
|
||||
252 252 252 gray99
|
||||
252 252 252 grey99
|
||||
255 255 255 gray100
|
||||
255 255 255 grey100
|
||||
169 169 169 dark grey
|
||||
169 169 169 DarkGrey
|
||||
169 169 169 dark gray
|
||||
169 169 169 DarkGray
|
||||
0 0 139 dark blue
|
||||
0 0 139 DarkBlue
|
||||
0 139 139 dark cyan
|
||||
0 139 139 DarkCyan
|
||||
139 0 139 dark magenta
|
||||
139 0 139 DarkMagenta
|
||||
139 0 0 dark red
|
||||
139 0 0 DarkRed
|
||||
144 238 144 light green
|
||||
144 238 144 LightGreen
|
||||
220 20 60 crimson
|
||||
75 0 130 indigo
|
||||
128 128 0 olive
|
||||
102 51 153 rebecca purple
|
||||
102 51 153 RebeccaPurple
|
||||
192 192 192 silver
|
||||
0 128 128 teal
|
||||
1582
src/img/xpm-color-table.h
Normal file
1582
src/img/xpm-color-table.h
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue