diff options
author | nijtmans@users.sourceforge.net <jan.nijtmans> | 2012-08-22 21:22:28 (GMT) |
---|---|---|
committer | nijtmans@users.sourceforge.net <jan.nijtmans> | 2012-08-22 21:22:28 (GMT) |
commit | 4d2e7ed5a951b0dd312b7771369e22dc2f7440ee (patch) | |
tree | 6daf49ce248bc2420d87b07eebe8c539828e3f45 /unix | |
parent | 7b13e4eed47df35b892660aef64208bcc4ddd028 (diff) | |
parent | e39b66834bb9ed3cd9c44cea9946f4da13cf9ae3 (diff) | |
download | tk-4d2e7ed5a951b0dd312b7771369e22dc2f7440ee.zip tk-4d2e7ed5a951b0dd312b7771369e22dc2f7440ee.tar.gz tk-4d2e7ed5a951b0dd312b7771369e22dc2f7440ee.tar.bz2 |
[TIP 403]: Web Colors for Tk.
New colors aqua, crimson, fuchsia, indigo, lime, olive, silver, and teal.
Modified RGB values for gray/grey, green, maroon and purple.
Diffstat (limited to 'unix')
-rw-r--r-- | unix/tkUnixColor.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/unix/tkUnixColor.c b/unix/tkUnixColor.c index 9bfe8bb..43500ad 100644 --- a/unix/tkUnixColor.c +++ b/unix/tkUnixColor.c @@ -136,6 +136,25 @@ TkpGetColor( if (*name != '#') { XColor screen; + if (((*name - 'A') & 0xdf) < sizeof(tkWebColors)/sizeof(tkWebColors[0])) { + if (!((name[0] - 'G') & 0xdf) && !((name[1] - 'R') & 0xdf) + && !((name[2] - 'A') & 0xdb) && !((name[3] - 'Y') & 0xdf) + && !name[4]) { + name = "#808080808080"; + goto gotWebColor; + } else { + const char *p = tkWebColors[((*name - 'A') & 0x1f)]; + if (p) { + const char *q = name; + while (!((*p - *(++q)) & 0xdf)) { + if (!*p++) { + name = p; + goto gotWebColor; + } + } + } + } + } if (strlen(name) > 99) { /* Don't bother to parse this. [Bug 2809525]*/ return (TkColor *) NULL; @@ -155,6 +174,7 @@ TkpGetColor( FindClosestColor(tkwin, &screen, &color); } } else { + gotWebColor: if (TkParseColor(display, colormap, name, &color) == 0) { return NULL; } @@ -420,6 +440,7 @@ TkpCmapStressed( return 0; } + /* * Local Variables: * mode: c |