#!/usr/bin/perl # # Extract Color information for the DEC color standard 092. # # # First, some color routines. # # # Most stuff dealing with paint colors yields a "most natural result" in HSV. # Here, we convert HSV to RGB commonly used for rendering. sub hue2rgb { local($p, $q, $t) = @_; #warn "hue2: $p $q $t\n"; $t += 1 if $t < 0; $t -= 1 if $t > 1; die if $t < 0; die if $t > 1; if ($t < 1/6) { $p = $p + ($q - $p) * 6 * $t; } elsif ($t < 1/2) { $p = $q; } elsif ($t < 2/3) { $p = $p + ($q - $p) * (2/3 - $t) * 6; } #warn "hue2: $p\n"; return int($p*255 + 0.5); } sub hsv2rgb { local($h, $sv, $v) = @_; local($l) = $v * (1 - $sv/2); local($s) = 0; local($r, $g, $b); $s = ($v-$l) / (($l < 1-$l)? $l: 1-$l) if $l*($l-1); #warn "hsv2rgb $h, $s, $l\n"; $h /= 360; # BUGBUG: Do something better with oversaturated colors. $s = 1 if $s > 1; if ($s == 0) { $r = $g = $b = int($l*255+0.5); # achromatic } else { local($q) = $l < 0.5 ? $l * (1 + $s) : $l + $s - $l * $s; local($p) = 2 * $l - $q; $r = &hue2rgb($p, $q, $h + 1/3); $g = &hue2rgb($p, $q, $h); $b = &hue2rgb($p, $q, $h - 1/3); } return($r, $g, $b); } # # A table of known MUN colors, taken from http://www.andrewwerth.com/color/. # Essentially, Munsell realsRGB.xls. %munsell = ( "10B1/2", 0x0f1e2a, "10B2/2", 0x25333e, "10B2/4", 0x0f354a, "10B3/2", 0x3a4b56, "10B3/4", 0x264c64, "10B4/2", 0x54636e, "10B4/4", 0x42657b, "10B4/6", 0x2a6788, "10B5/2", 0x6e7d87, "10B5/4", 0x5d7f94, "10B5/6", 0x4881a1, "10B5/8", 0x2383af, "10B6/2", 0x8897a0, "10B6/4", 0x789aad, "10B6/6", 0x639cbc, "10B6/8", 0x479ec9, "10B7/10", 0x35bbf4, "10B7/2", 0xa3b2ba, "10B7/4", 0x92b4c8, "10B7/6", 0x7eb7d6, "10B7/8", 0x63b9e4, "10B8/2", 0xbeccd4, "10B8/4", 0xabcfe4, "10B8/6", 0x95d2f3, "10B8/8", 0x75d5ff, "10B9/2", 0xd8e8f0, "10B9/4", 0xc0ecff, "10BG1/2", 0x0a2024, "10BG2/2", 0x213538, "10BG3/2", 0x354c50, "10BG3/4", 0x0d5058, "10BG4/2", 0x4d6668, "10BG4/4", 0x2e6a70, "10BG5/2", 0x668082, "10BG5/4", 0x4b8489, "10BG5/6", 0x1a8891, "10BG6/2", 0x7f9a9b, "10BG6/4", 0x649fa3, "10BG6/6", 0x3ca3aa, "10BG7/2", 0x99b5b6, "10BG7/4", 0x7ebabc, "10BG7/6", 0x5fbec3, "10BG7/8", 0x1dc2ca, "10BG8/2", 0xb3d0d0, "10BG8/4", 0x97d5d6, "10BG8/6", 0x76dadd, "10BG8/8", 0x42dee4, "10BG9/2", 0xcdeceb, "10BG9/4", 0xaef2f2, "10BG9/6", 0x87f7f9, "10G1/2", 0x0f201c, "10G2/2", 0x243530, "10G2/4", 0x07392f, "10G3/2", 0x384d47, "10G3/4", 0x1b5145, "10G4/2", 0x4f665f, "10G4/4", 0x356b5d, "10G5/2", 0x678078, "10G5/4", 0x4f8576, "10G5/6", 0x2f8974, "10G6/2", 0x809b92, "10G6/4", 0x66a08f, "10G6/6", 0x4aa58d, "10G6/8", 0x0ba98b, "10G7/2", 0x99b6ac, "10G7/4", 0x82bba9, "10G7/6", 0x67c0a6, "10G7/8", 0x40c4a4, "10G8/10", 0x14e4bb, "10G8/2", 0xb2d1c6, "10G8/4", 0x9bd7c2, "10G8/6", 0x7edcc0, "10G8/8", 0x5ce0bd, "10G9/10", 0x33ffd4, "10G9/2", 0xcbede0, "10G9/4", 0xb2f3dd, "10G9/6", 0x92f9d9, "10G9/8", 0x6cfed6, "10GY1/2", 0x141f17, "10GY2/2", 0x29342a, "10GY2/4", 0x1c3820, "10GY2/6", 0x033a16, "10GY3/2", 0x3e4c3f, "10GY3/4", 0x315033, "10GY3/6", 0x205326, "10GY4/2", 0x566555, "10GY4/4", 0x496948, "10GY4/6", 0x386d39, "10GY4/8", 0x227029, "10GY5/10", 0x298e30, "10GY5/2", 0x6f806e, "10GY5/4", 0x628460, "10GY5/6", 0x548751, "10GY5/8", 0x428b41, "10GY6/10", 0x4aa948, "10GY6/12", 0x2eac34, "10GY6/2", 0x879a86, "10GY6/4", 0x7b9e77, "10GY6/6", 0x6da268, "10GY6/8", 0x5da658, "10GY7/10", 0x67c460, "10GY7/12", 0x51c84d, "10GY7/14", 0x33ca37, "10GY7/2", 0xa1b59f, "10GY7/4", 0x95b98f, "10GY7/6", 0x88bd81, "10GY7/8", 0x79c171, "10GY8/10", 0x81e076, "10GY8/12", 0x6ee463, "10GY8/14", 0x55e74f, "10GY8/16", 0x2fea36, "10GY8/2", 0xbbd0b7, "10GY8/4", 0xaed5a8, "10GY8/6", 0xa0d997, "10GY8/8", 0x92dd88, "10GY9/10", 0x98fe89, "10GY9/12", 0x86ff78, "10GY9/14", 0x6fff63, "10GY9/16", 0x50ff4b, "10GY9/18", 0x10ff29, "10GY9/2", 0xd5ecd1, "10GY9/4", 0xc8f1bf, "10GY9/6", 0xb7f6ac, "10GY9/8", 0xa9fa9c, "10P1/2", 0x271727, "10P1/4", 0x2e122d, "10P1/6", 0x330b33, "10P2/10", 0x590d55, "10P2/2", 0x3c2d3a, "10P2/4", 0x432841, "10P2/6", 0x4a2347, "10P2/8", 0x521a4e, "10P3/10", 0x76276e, "10P3/12", 0x7f1875, "10P3/2", 0x554351, "10P3/4", 0x5e3e59, "10P3/6", 0x663860, "10P3/8", 0x6f3067, "10P4/10", 0x904584, "10P4/12", 0x983d8b, "10P4/14", 0xa03291, "10P4/16", 0xa82398, "10P4/2", 0x6d5c69, "10P4/4", 0x775770, "10P4/6", 0x805277, "10P4/8", 0x884c7d, "10P5/10", 0xac609d, "10P5/12", 0xb559a4, "10P5/14", 0xbd50aa, "10P5/16", 0xc646b1, "10P5/18", 0xce39b8, "10P5/2", 0x857781, "10P5/20", 0xd724bf, "10P5/4", 0x8f7288, "10P5/6", 0x9a6d8f, "10P5/8", 0xa46696, "10P6/10", 0xc77cb6, "10P6/12", 0xd075bd, "10P6/14", 0xda6cc4, "10P6/16", 0xe364cb, "10P6/18", 0xeb5ad2, "10P6/2", 0x9f919b, "10P6/20", 0xf54bda, "10P6/22", 0xfe39e1, "10P6/24", 0xff1de8, "10P6/4", 0xa98da2, "10P6/6", 0xb487a9, "10P6/8", 0xbd82af, "10P7/10", 0xe496d1, "10P7/12", 0xed90d7, "10P7/14", 0xf888df, "10P7/16", 0xff7ee7, "10P7/18", 0xff74ee, "10P7/2", 0xb9acb4, "10P7/20", 0xff68f6, "10P7/22", 0xff58ff, "10P7/4", 0xc4a7bb, "10P7/6", 0xcfa2c2, "10P7/8", 0xda9cc9, "10P8/10", 0xffb0ec, "10P8/12", 0xffa9f4, "10P8/14", 0xffa0fd, "10P8/2", 0xd2c7ce, "10P8/4", 0xdec2d5, "10P8/6", 0xeabddd, "10P8/8", 0xf7b6e5, "10P9/2", 0xede3e9, "10P9/4", 0xfcddf1, "10P9/6", 0xffd7f9, "10PB1/10", 0x29064f, "10PB1/2", 0x1f1a2b, "10PB1/4", 0x211735, "10PB1/6", 0x23143e, "10PB1/8", 0x250f46, "10PB2/10", 0x3a216a, "10PB2/12", 0x3d1b73, "10PB2/14", 0x41127c, "10PB2/2", 0x332f3f, "10PB2/4", 0x342d4b, "10PB2/6", 0x362a55, "10PB2/8", 0x382660, "10PB3/10", 0x4f3a87, "10PB3/12", 0x513691, "10PB3/14", 0x54309c, "10PB3/16", 0x5828a6, "10PB3/18", 0x5b1faf, "10PB3/2", 0x4a4658, "10PB3/20", 0x5f10b8, "10PB3/4", 0x4a4465, "10PB3/6", 0x4c4170, "10PB3/8", 0x4d3e7b, "10PB4/10", 0x6456a0, "10PB4/12", 0x6652ac, "10PB4/14", 0x674eb7, "10PB4/16", 0x6a49c1, "10PB4/18", 0x6d43cc, "10PB4/2", 0x625f70, "10PB4/20", 0x713cd8, "10PB4/22", 0x7434e0, "10PB4/24", 0x782aea, "10PB4/26", 0x7c17f4, "10PB4/4", 0x625d7c, "10PB4/6", 0x635b88, "10PB4/8", 0x645894, "10PB5/10", 0x7c70ba, "10PB5/12", 0x7d6dc7, "10PB5/14", 0x7e6ad4, "10PB5/16", 0x7f66e0, "10PB5/18", 0x8162eb, "10PB5/2", 0x7b7988, "10PB5/20", 0x835df7, "10PB5/22", 0x8756ff, "10PB5/4", 0x7b7894, "10PB5/6", 0x7c75a2, "10PB5/8", 0x7c73af, "10PB6/10", 0x948cd5, "10PB6/12", 0x9489e4, "10PB6/14", 0x9586f2, "10PB6/16", 0x9681ff, "10PB6/2", 0x9594a1, "10PB6/4", 0x9592ae, "10PB6/6", 0x9490bc, "10PB6/8", 0x948ec8, "10PB7/10", 0xada6f5, "10PB7/12", 0xada3ff, "10PB7/2", 0xafaeba, "10PB7/4", 0xaeadc9, "10PB7/6", 0xaeabd7, "10PB7/8", 0xada9e5, "10PB8/2", 0xcac9d4, "10PB8/4", 0xc9c8e3, "10PB8/6", 0xc8c5f4, "10PB8/8", 0xc7c3ff, "10PB9/2", 0xe5e4ef, "10PB9/4", 0xe3e3ff, "10R1/2", 0x2e1617, "10R1/4", 0x380e12, "10R2/2", 0x422c2a, "10R2/4", 0x4e2622, "10R2/6", 0x581f1a, "10R2/8", 0x621312, "10R3/10", 0x892211, "10R3/2", 0x5b433e, "10R3/4", 0x693d34, "10R3/6", 0x753629, "10R3/8", 0x802d1e, "10R4/10", 0xa64124, "10R4/12", 0xaf3812, "10R4/2", 0x745c56, "10R4/4", 0x84564a, "10R4/6", 0x90503f, "10R4/8", 0x9c4932, "10R5/10", 0xc45c39, "10R5/12", 0xcf5428, "10R5/14", 0xd74d12, "10R5/2", 0x8d7670, "10R5/4", 0x9d7063, "10R5/6", 0xac6a56, "10R5/8", 0xb96449, "10R6/10", 0xe17853, "10R6/12", 0xec7143, "10R6/14", 0xf7692f, "10R6/16", 0xff6114, "10R6/2", 0xa7908a, "10R6/4", 0xb88b7c, "10R6/6", 0xc78570, "10R6/8", 0xd47f63, "10R7/10", 0xfe936d, "10R7/12", 0xff8c5b, "10R7/14", 0xff8449, "10R7/16", 0xff7c31, "10R7/2", 0xc1aba4, "10R7/4", 0xd3a597, "10R7/6", 0xe3a089, "10R7/8", 0xf2997b, "10R8/10", 0xffad83, "10R8/2", 0xdac6c0, "10R8/4", 0xefc0b0, "10R8/6", 0xffbaa1, "10R8/8", 0xffb392, "10R9/2", 0xf5e1db, "10R9/4", 0xffdac9, "10R9/6", 0xffd4b9, "10RP1/2", 0x2c1620, "10RP1/4", 0x350f23, "10RP1/6", 0x3c0325, "10RP2/2", 0x412c32, "10RP2/4", 0x4c2533, "10RP2/6", 0x551e34, "10RP2/8", 0x5f1036, "10RP3/10", 0x8b1742, "10RP3/2", 0x5b4246, "10RP3/4", 0x683b45, "10RP3/6", 0x743343, "10RP3/8", 0x802843, "10RP4/10", 0xa63b58, "10RP4/12", 0xb12d57, "10RP4/14", 0xbc1756, "10RP4/2", 0x735b5f, "10RP4/4", 0x81555c, "10RP4/6", 0x8e4e5a, "10RP4/8", 0x9b4559, "10RP5/10", 0xc3586e, "10RP5/12", 0xd04c6d, "10RP5/14", 0xda406c, "10RP5/16", 0xe62d6a, "10RP5/2", 0x8b7678, "10RP5/4", 0x9b7075, "10RP5/6", 0xa96973, "10RP5/8", 0xb76170, "10RP6/10", 0xde7587, "10RP6/12", 0xeb6b84, "10RP6/14", 0xf76183, "10RP6/16", 0xff5280, "10RP6/18", 0xff417f, "10RP6/2", 0xa49092, "10RP6/4", 0xb48a8f, "10RP6/6", 0xc4848c, "10RP6/8", 0xd07d89, "10RP7/10", 0xfc909f, "10RP7/12", 0xff859c, "10RP7/14", 0xff7b9a, "10RP7/16", 0xff6e97, "10RP7/2", 0xbeabac, "10RP7/4", 0xcea5a9, "10RP7/6", 0xde9fa6, "10RP7/8", 0xee97a2, "10RP8/10", 0xffa9b8, "10RP8/2", 0xd7c6c8, "10RP8/4", 0xeac0c3, "10RP8/6", 0xfbb9c0, "10RP8/8", 0xffb1bc, "10RP9/2", 0xf2e2e3, "10RP9/4", 0xffdbde, "10RP9/6", 0xffd3d9, "10Y1/2", 0x1e1e0c, "10Y2/2", 0x333222, "10Y2/4", 0x353304, "10Y3/2", 0x4a4a35, "10Y3/4", 0x4c4a1d, "10Y4/2", 0x62634b, "10Y4/4", 0x666430, "10Y4/6", 0x676411, "10Y5/2", 0x7e7c63, "10Y5/4", 0x807e48, "10Y5/6", 0x827e2a, "10Y6/2", 0x98977a, "10Y6/4", 0x9a9861, "10Y6/6", 0x9c9943, "10Y6/8", 0x9e991d, "10Y7/2", 0xb3b193, "10Y7/4", 0xb5b279, "10Y7/6", 0xb7b35d, "10Y7/8", 0xb9b43d, "10Y8/10", 0xd6d02f, "10Y8/2", 0xceccab, "10Y8/4", 0xd0cd91, "10Y8/6", 0xd2ce75, "10Y8/8", 0xd4cf56, "10Y9/10", 0xf2ec4a, "10Y9/2", 0xe9e7c4, "10Y9/4", 0xece9a8, "10Y9/6", 0xeeea8c, "10Y9/8", 0xf0eb6c, "10YR1/2", 0x291a0a, "10YR2/2", 0x3d2f21, "10YR2/4", 0x452d0d, "10YR3/2", 0x554636, "10YR3/4", 0x5e4423, "10YR3/6", 0x644108, "10YR4/2", 0x6f5f4c, "10YR4/4", 0x7a5c36, "10YR4/6", 0x815a21, "10YR5/2", 0x897865, "10YR5/4", 0x94764f, "10YR5/6", 0x9d7337, "10YR5/8", 0xa4711b, "10YR6/10", 0xc68a10, "10YR6/2", 0xa3937e, "10YR6/4", 0xae9068, "10YR6/6", 0xb88e50, "10YR6/8", 0xc08c36, "10YR7/10", 0xe3a433, "10YR7/2", 0xbead97, "10YR7/4", 0xcaab80, "10YR7/6", 0xd4a969, "10YR7/8", 0xdca650, "10YR8/10", 0xffbf4d, "10YR8/12", 0xffbd28, "10YR8/2", 0xd8c8b1, "10YR8/4", 0xe4c69a, "10YR8/6", 0xefc482, "10YR8/8", 0xf8c168, "10YR9/2", 0xf4e3ca, "10YR9/4", 0xffe1b0, "10YR9/6", 0xffdf98, "10YR9/8", 0xffdd7e, "2.5B1/2", 0x0a2025, "2.5B2/2", 0x213439, "2.5B3/2", 0x354c52, "2.5B3/4", 0x0e505c, "2.5B4/2", 0x4d656a, "2.5B4/4", 0x306974, "2.5B5/2", 0x677f83, "2.5B5/4", 0x4d838d, "2.5B5/6", 0x208796, "2.5B6/2", 0x809a9d, "2.5B6/4", 0x679ea6, "2.5B6/6", 0x40a2b0, "2.5B7/2", 0x9ab4b7, "2.5B7/4", 0x80b9c0, "2.5B7/6", 0x62bdc9, "2.5B7/8", 0x28c0d3, "2.5B8/2", 0xb5cfd2, "2.5B8/4", 0x99d4db, "2.5B8/6", 0x78d9e4, "2.5B8/8", 0x45ddee, "2.5B9/2", 0xcfebed, "2.5B9/4", 0xb0f1f8, "2.5BG1/2", 0x0e201e, "2.5BG2/2", 0x233532, "2.5BG2/4", 0x003833, "2.5BG3/2", 0x374d49, "2.5BG3/4", 0x17514a, "2.5BG4/2", 0x4e6661, "2.5BG4/4", 0x316b62, "2.5BG5/2", 0x66807a, "2.5BG5/4", 0x4d857a, "2.5BG5/6", 0x2a897a, "2.5BG6/2", 0x7f9b94, "2.5BG6/4", 0x64a093, "2.5BG6/6", 0x46a593, "2.5BG7/2", 0x98b6ad, "2.5BG7/4", 0x80bbad, "2.5BG7/6", 0x64bfac, "2.5BG7/8", 0x36c4ac, "2.5BG8/2", 0xb1d1c8, "2.5BG8/4", 0x98d7c6, "2.5BG8/6", 0x7cdbc6, "2.5BG8/8", 0x55e0c5, "2.5BG9/10", 0x0fffdf, "2.5BG9/2", 0xcbede3, "2.5BG9/4", 0xb0f3e1, "2.5BG9/6", 0x8ef9e0, "2.5BG9/8", 0x64fedf, "2.5G1/2", 0x132018, "2.5G2/2", 0x27352c, "2.5G2/4", 0x153826, "2.5G3/2", 0x3c4c41, "2.5G3/4", 0x29503a, "2.5G3/6", 0x065433, "2.5G4/2", 0x536659, "2.5G4/4", 0x406a50, "2.5G4/6", 0x246e48, "2.5G5/2", 0x6b8071, "2.5G5/4", 0x5a8568, "2.5G5/6", 0x45895f, "2.5G5/8", 0x228c56, "2.5G6/10", 0x14ab64, "2.5G6/2", 0x849b8a, "2.5G6/4", 0x72a080, "2.5G6/6", 0x5fa476, "2.5G6/8", 0x45a86d, "2.5G7/10", 0x43c77a, "2.5G7/2", 0x9db6a3, "2.5G7/4", 0x8cba99, "2.5G7/6", 0x7abf8f, "2.5G7/8", 0x63c385, "2.5G8/10", 0x62e391, "2.5G8/12", 0x35e786, "2.5G8/2", 0xb7d1bd, "2.5G8/4", 0xa6d6b2, "2.5G8/6", 0x91dba6, "2.5G8/8", 0x7cdf9c, "2.5G9/10", 0x76ffa6, "2.5G9/12", 0x54ff9b, "2.5G9/2", 0xd0edd6, "2.5G9/4", 0xbef2ca, "2.5G9/6", 0xa7f8bc, "2.5G9/8", 0x91fcb1, "2.5GY1/2", 0x1b1e0f, "2.5GY2/2", 0x303324, "2.5GY2/4", 0x2f350c, "2.5GY3/2", 0x474a36, "2.5GY3/4", 0x464c20, "2.5GY4/2", 0x60644c, "2.5GY4/4", 0x5f6534, "2.5GY4/6", 0x5e6717, "2.5GY5/2", 0x7a7d64, "2.5GY5/4", 0x797f4c, "2.5GY5/6", 0x788130, "2.5GY6/2", 0x94987c, "2.5GY6/4", 0x949a63, "2.5GY6/6", 0x939b48, "2.5GY6/8", 0x929d24, "2.5GY7/10", 0xacb90b, "2.5GY7/2", 0xafb294, "2.5GY7/4", 0xaeb47b, "2.5GY7/6", 0xaeb662, "2.5GY7/8", 0xadb743, "2.5GY8/10", 0xc7d435, "2.5GY8/2", 0xcbcdac, "2.5GY8/4", 0xcacf93, "2.5GY8/6", 0xc9d178, "2.5GY8/8", 0xc8d35c, "2.5GY9/10", 0xe3f04e, "2.5GY9/12", 0xe2f10d, "2.5GY9/2", 0xe6e8c5, "2.5GY9/4", 0xe6eba9, "2.5GY9/6", 0xe5ed8e, "2.5GY9/8", 0xe4ee6f, "2.5P1/2", 0x22192a, "2.5P1/4", 0x261533, "2.5P1/6", 0x2a113a, "2.5P1/8", 0x2e0942, "2.5P2/10", 0x471c64, "2.5P2/12", 0x4c126c, "2.5P2/2", 0x362e3e, "2.5P2/4", 0x392b48, "2.5P2/6", 0x3d2851, "2.5P2/8", 0x42225b, "2.5P3/10", 0x5e3481, "2.5P3/12", 0x622e8a, "2.5P3/14", 0x672693, "2.5P3/16", 0x6c1a9c, "2.5P3/18", 0x7104a5, "2.5P3/2", 0x4d4557, "2.5P3/4", 0x514263, "2.5P3/6", 0x553e6d, "2.5P3/8", 0x593a77, "2.5P4/10", 0x74519a, "2.5P4/12", 0x784ca4, "2.5P4/14", 0x7d46ae, "2.5P4/16", 0x823fb7, "2.5P4/18", 0x8737c1, "2.5P4/2", 0x655e6f, "2.5P4/20", 0x8c2bcb, "2.5P4/22", 0x901ed3, "2.5P4/4", 0x685b7a, "2.5P4/6", 0x6c5985, "2.5P4/8", 0x70558f, "2.5P5/10", 0x8c6cb5, "2.5P5/12", 0x9068c0, "2.5P5/14", 0x9563ca, "2.5P5/16", 0x995dd4, "2.5P5/18", 0x9e57de, "2.5P5/2", 0x7e7987, "2.5P5/20", 0xa350e9, "2.5P5/22", 0xa847f3, "2.5P5/24", 0xad3bfe, "2.5P5/26", 0xb32cff, "2.5P5/4", 0x817693, "2.5P5/6", 0x84739f, "2.5P5/8", 0x886fab, "2.5P6/10", 0xa487d1, "2.5P6/12", 0xa983dc, "2.5P6/14", 0xad7ee8, "2.5P6/16", 0xb379f4, "2.5P6/18", 0xb773fe, "2.5P6/2", 0x9793a0, "2.5P6/4", 0x9a90ac, "2.5P6/6", 0x9d8eb9, "2.5P6/8", 0xa18ac5, "2.5P7/10", 0xbea1ee, "2.5P7/12", 0xc29dfb, "2.5P7/2", 0xb1aeba, "2.5P7/4", 0xb4abc7, "2.5P7/6", 0xb7a8d3, "2.5P7/8", 0xbaa5e0, "2.5P8/2", 0xccc9d3, "2.5P8/4", 0xcec6e2, "2.5P8/6", 0xd1c3f0, "2.5P8/8", 0xd4c0ff, "2.5P9/2", 0xe7e4ef, "2.5P9/4", 0xe9e1ff, "2.5PB1/2", 0x121e2a, "2.5PB2/2", 0x28323f, "2.5PB2/4", 0x19334b, "2.5PB3/2", 0x3d4a57, "2.5PB3/4", 0x2f4b65, "2.5PB3/6", 0x184b72, "2.5PB4/2", 0x57626f, "2.5PB4/4", 0x4a647c, "2.5PB4/6", 0x3a6489, "2.5PB4/8", 0x1c6597, "2.5PB5/10", 0x1c81bf, "2.5PB5/2", 0x717c88, "2.5PB5/4", 0x657e95, "2.5PB5/6", 0x557fa3, "2.5PB5/8", 0x4180b1, "2.5PB6/10", 0x459bda, "2.5PB6/2", 0x8b96a1, "2.5PB6/4", 0x8098ae, "2.5PB6/6", 0x7099bd, "2.5PB6/8", 0x5f9acc, "2.5PB7/10", 0x5eb7f8, "2.5PB7/2", 0xa6b1bb, "2.5PB7/4", 0x99b2c9, "2.5PB7/6", 0x8bb4d8, "2.5PB7/8", 0x78b5e7, "2.5PB8/2", 0xc1cbd5, "2.5PB8/4", 0xb3cde5, "2.5PB8/6", 0xa2cff5, "2.5PB9/2", 0xdce7f0, "2.5R1/2", 0x2d161e, "2.5R1/4", 0x360e1f, "2.5R1/6", 0x3e0020, "2.5R2/2", 0x422c30, "2.5R2/4", 0x4d252f, "2.5R2/6", 0x571d2e, "2.5R2/8", 0x620e2e, "2.5R3/10", 0x8d1737, "2.5R3/2", 0x5b4244, "2.5R3/4", 0x6a3b40, "2.5R3/6", 0x75333d, "2.5R3/8", 0x82283a, "2.5R4/10", 0xa83b4d, "2.5R4/12", 0xb32d4a, "2.5R4/14", 0xbe1547, "2.5R4/2", 0x735b5d, "2.5R4/4", 0x825558, "2.5R4/6", 0x904e54, "2.5R4/8", 0x9c4551, "2.5R5/10", 0xc55864, "2.5R5/12", 0xd24c60, "2.5R5/14", 0xdc405d, "2.5R5/16", 0xe82d5a, "2.5R5/2", 0x8b7677, "2.5R5/4", 0x9c7072, "2.5R5/6", 0xab696d, "2.5R5/8", 0xb86168, "2.5R6/10", 0xe1757c, "2.5R6/12", 0xee6b77, "2.5R6/14", 0xf96174, "2.5R6/16", 0xff526f, "2.5R6/18", 0xff406c, "2.5R6/2", 0xa59090, "2.5R6/4", 0xb68a8b, "2.5R6/6", 0xc68486, "2.5R6/8", 0xd37d81, "2.5R7/10", 0xfe8f95, "2.5R7/12", 0xff858f, "2.5R7/14", 0xff7b8a, "2.5R7/16", 0xff6e85, "2.5R7/2", 0xbfabab, "2.5R7/4", 0xd0a5a5, "2.5R7/6", 0xe09ea0, "2.5R7/8", 0xf0979a, "2.5R8/10", 0xffa9ad, "2.5R8/2", 0xd7c6c6, "2.5R8/4", 0xecc0bf, "2.5R8/6", 0xfdb9b9, "2.5R8/8", 0xffb1b3, "2.5R9/2", 0xf2e2e2, "2.5R9/4", 0xffdada, "2.5R9/6", 0xffd3d2, "2.5RP1/2", 0x291726, "2.5RP1/4", 0x30112b, "2.5RP1/6", 0x360931, "2.5RP2/10", 0x5f034d, "2.5RP2/2", 0x3e2c38, "2.5RP2/4", 0x46273d, "2.5RP2/6", 0x4e2142, "2.5RP2/8", 0x571648, "2.5RP3/10", 0x7e2263, "2.5RP3/12", 0x870e69, "2.5RP3/2", 0x57434e, "2.5RP3/4", 0x623d54, "2.5RP3/6", 0x6b3659, "2.5RP3/8", 0x752d5e, "2.5RP4/10", 0x98417a, "2.5RP4/12", 0xa1377f, "2.5RP4/14", 0xaa2a84, "2.5RP4/16", 0xb31489, "2.5RP4/2", 0x6f5c66, "2.5RP4/4", 0x7a576b, "2.5RP4/6", 0x855070, "2.5RP4/8", 0x8f4975, "2.5RP5/10", 0xb45d92, "2.5RP5/12", 0xbe5497, "2.5RP5/14", 0xc84a9c, "2.5RP5/16", 0xd13ea1, "2.5RP5/18", 0xda2ca6, "2.5RP5/2", 0x87777f, "2.5RP5/20", 0xe307ab, "2.5RP5/4", 0x937184, "2.5RP5/6", 0x9f6b89, "2.5RP5/8", 0xab648e, "2.5RP6/10", 0xcf79ab, "2.5RP6/12", 0xda71b0, "2.5RP6/14", 0xe568b5, "2.5RP6/16", 0xef5dba, "2.5RP6/18", 0xf951bf, "2.5RP6/2", 0xa19199, "2.5RP6/20", 0xff3fc4, "2.5RP6/22", 0xff29c9, "2.5RP6/4", 0xad8c9d, "2.5RP6/6", 0xb986a2, "2.5RP6/8", 0xc480a6, "2.5RP7/10", 0xec93c4, "2.5RP7/12", 0xf88cca, "2.5RP7/14", 0xff83ce, "2.5RP7/16", 0xff78d4, "2.5RP7/18", 0xff6bda, "2.5RP7/2", 0xbaacb2, "2.5RP7/20", 0xff5be0, "2.5RP7/4", 0xc7a6b6, "2.5RP7/6", 0xd5a0bb, "2.5RP7/8", 0xe19ac0, "2.5RP8/10", 0xffaddf, "2.5RP8/12", 0xffa4e4, "2.5RP8/14", 0xff9bea, "2.5RP8/2", 0xd3c7cc, "2.5RP8/4", 0xe2c1d1, "2.5RP8/6", 0xf1bbd5, "2.5RP8/8", 0xffb4da, "2.5RP9/2", 0xefe2e8, "2.5RP9/4", 0xffdcec, "2.5RP9/6", 0xffd5f1, "2.5Y1/2", 0x261b07, "2.5Y2/2", 0x3a3020, "2.5Y2/4", 0x412e07, "2.5Y3/2", 0x524734, "2.5Y3/4", 0x5a461f, "2.5Y4/2", 0x6c604a, "2.5Y4/4", 0x755e33, "2.5Y4/6", 0x7b5d1a, "2.5Y5/2", 0x867964, "2.5Y5/4", 0x8f784b, "2.5Y5/6", 0x977630, "2.5Y5/8", 0x9c750d, "2.5Y6/2", 0xa0947c, "2.5Y6/4", 0xaa9264, "2.5Y6/6", 0xb2914a, "2.5Y6/8", 0xb88f2c, "2.5Y7/10", 0xd9a923, "2.5Y7/2", 0xbbae95, "2.5Y7/4", 0xc5ad7d, "2.5Y7/6", 0xcdab63, "2.5Y7/8", 0xd4aa48, "2.5Y8/10", 0xf6c442, "2.5Y8/12", 0xfbc30a, "2.5Y8/2", 0xd6c9ae, "2.5Y8/4", 0xdfc896, "2.5Y8/6", 0xe8c77c, "2.5Y8/8", 0xefc561, "2.5Y9/10", 0xffe05a, "2.5Y9/12", 0xffde34, "2.5Y9/2", 0xf1e5c7, "2.5Y9/4", 0xfbe4ac, "2.5Y9/6", 0xffe292, "2.5Y9/8", 0xffe177, "2.5YR1/2", 0x2d1714, "2.5YR1/4", 0x380f0a, "2.5YR1/6", 0x410302, "2.5YR2/2", 0x412d27, "2.5YR2/4", 0x4d271d, "2.5YR2/6", 0x572111, "2.5YR3/2", 0x5b433b, "2.5YR3/4", 0x673e2f, "2.5YR3/6", 0x723820, "2.5YR3/8", 0x7b320e, "2.5YR4/10", 0xa0470f, "2.5YR4/2", 0x745c53, "2.5YR4/4", 0x825745, "2.5YR4/6", 0x8e5237, "2.5YR4/8", 0x984c26, "2.5YR5/10", 0xbf612a, "2.5YR5/12", 0xc75c0f, "2.5YR5/2", 0x8d766d, "2.5YR5/4", 0x9c715f, "2.5YR5/6", 0xaa6c4f, "2.5YR5/8", 0xb6663d, "2.5YR6/10", 0xdd7c45, "2.5YR6/12", 0xe6762f, "2.5YR6/14", 0xee710a, "2.5YR6/2", 0xa89086, "2.5YR6/4", 0xb78c78, "2.5YR6/6", 0xc58668, "2.5YR6/8", 0xd28158, "2.5YR7/10", 0xfa965f, "2.5YR7/12", 0xff9148, "2.5YR7/14", 0xff8b2c, "2.5YR7/2", 0xc1aba1, "2.5YR7/4", 0xd2a691, "2.5YR7/6", 0xe1a180, "2.5YR7/8", 0xef9c70, "2.5YR8/10", 0xffb174, "2.5YR8/12", 0xffab5f, "2.5YR8/2", 0xdbc6bd, "2.5YR8/4", 0xefc1aa, "2.5YR8/6", 0xfebc99, "2.5YR8/8", 0xffb687, "2.5YR9/2", 0xf7e1d7, "2.5YR9/4", 0xffdbc2, "2.5YR9/6", 0xffd6af, "5B1/2", 0x0a1f27, "5B2/2", 0x22343b, "5B3/2", 0x364c53, "5B3/4", 0x144f5f, "5B4/2", 0x4f656c, "5B4/4", 0x356877, "5B5/2", 0x697f85, "5B5/4", 0x518290, "5B5/6", 0x2d859c, "5B6/2", 0x83999f, "5B6/4", 0x6c9da9, "5B6/6", 0x4ba0b6, "5B7/2", 0x9db3b9, "5B7/4", 0x85b7c4, "5B7/6", 0x68bbcf, "5B7/8", 0x3cbedb, "5B8/2", 0xb8ced3, "5B8/4", 0x9ed3df, "5B8/6", 0x80d7eb, "5B8/8", 0x50dbf9, "5B9/2", 0xd2eaef, "5B9/4", 0xb4effd, "5BG1/2", 0x0c2020, "5BG2/2", 0x223534, "5BG3/2", 0x364d4b, "5BG3/4", 0x11514f, "5BG4/2", 0x4d6664, "5BG4/4", 0x2f6b67, "5BG5/2", 0x66807d, "5BG5/4", 0x4b8580, "5BG5/6", 0x228982, "5BG6/2", 0x7e9b97, "5BG6/4", 0x63a099, "5BG6/6", 0x3fa49b, "5BG7/2", 0x97b6b0, "5BG7/4", 0x7ebbb2, "5BG7/6", 0x61bfb4, "5BG7/8", 0x29c4b6, "5BG8/2", 0xb1d1cb, "5BG8/4", 0x97d6cc, "5BG8/6", 0x79dbcd, "5BG8/8", 0x4be0d0, "5BG9/2", 0xcbede5, "5BG9/4", 0xaef3e6, "5BG9/6", 0x8bf9e8, "5BG9/8", 0x5afee9, "5G1/2", 0x112019, "5G2/2", 0x26352e, "5G2/4", 0x113829, "5G3/2", 0x3a4d43, "5G3/4", 0x24513e, "5G4/2", 0x51665b, "5G4/4", 0x3b6b55, "5G4/6", 0x186f50, "5G5/2", 0x698074, "5G5/4", 0x55856e, "5G5/6", 0x3b8968, "5G6/2", 0x829b8d, "5G6/4", 0x6ca086, "5G6/6", 0x55a480, "5G6/8", 0x31a87b, "5G7/10", 0x19c88e, "5G7/2", 0x9bb6a7, "5G7/4", 0x87bba0, "5G7/6", 0x71bf99, "5G7/8", 0x54c494, "5G8/10", 0x43e4a6, "5G8/2", 0xb4d1c0, "5G8/4", 0xa0d6b9, "5G8/6", 0x87dcb2, "5G8/8", 0x6be0ab, "5G9/10", 0x59ffbd, "5G9/2", 0xceedda, "5G9/4", 0xb8f3d2, "5G9/6", 0x9cf9ca, "5G9/8", 0x7efec3, "5GY1/2", 0x191f12, "5GY2/2", 0x2e3426, "5GY2/4", 0x293613, "5GY3/2", 0x454b38, "5GY3/4", 0x404d25, "5GY3/6", 0x3b4f0b, "5GY4/2", 0x5d644e, "5GY4/4", 0x596738, "5GY4/6", 0x546920, "5GY5/2", 0x777e67, "5GY5/4", 0x738151, "5GY5/6", 0x6e8338, "5GY5/8", 0x6a8517, "5GY6/2", 0x91987e, "5GY6/4", 0x8d9b67, "5GY6/6", 0x899e50, "5GY6/8", 0x84a032, "5GY7/10", 0x9cbc27, "5GY7/2", 0xacb396, "5GY7/4", 0xa8b67f, "5GY7/6", 0xa4b868, "5GY7/8", 0xa0ba4d, "5GY8/10", 0xb8d844, "5GY8/2", 0xc7ceae, "5GY8/4", 0xc4d097, "5GY8/6", 0xc0d37e, "5GY8/8", 0xbcd564, "5GY9/10", 0xd4f457, "5GY9/12", 0xd0f629, "5GY9/2", 0xe3e9c6, "5GY9/4", 0xe0ecac, "5GY9/6", 0xdcef92, "5GY9/8", 0xd8f276, "5P1/2", 0x241829, "5P1/4", 0x291431, "5P1/6", 0x2e0e38, "5P1/8", 0x33043f, "5P2/10", 0x4e175f, "5P2/12", 0x540967, "5P2/2", 0x382e3d, "5P2/4", 0x3e2a46, "5P2/6", 0x42264d, "5P2/8", 0x491f57, "5P3/10", 0x67307b, "5P3/12", 0x6d2884, "5P3/14", 0x731d8c, "5P3/16", 0x790894, "5P3/2", 0x504456, "5P3/4", 0x564060, "5P3/6", 0x5b3c69, "5P3/8", 0x613772, "5P4/10", 0x7e4d94, "5P4/12", 0x84479d, "5P4/14", 0x8a40a6, "5P4/16", 0x9037af, "5P4/18", 0x962cb8, "5P4/2", 0x685e6d, "5P4/20", 0x9c1ac1, "5P4/4", 0x6d5a78, "5P4/6", 0x735681, "5P4/8", 0x78528a, "5P5/10", 0x9768af, "5P5/12", 0x9d63b9, "5P5/14", 0xa35dc2, "5P5/16", 0xa957cb, "5P5/18", 0xaf4fd4, "5P5/2", 0x807885, "5P5/20", 0xb546dd, "5P5/22", 0xbb39e7, "5P5/24", 0xc228f0, "5P5/26", 0xc801f9, "5P5/4", 0x867590, "5P5/6", 0x8c719b, "5P5/8", 0x926da5, "5P6/10", 0xb083ca, "5P6/12", 0xb67fd4, "5P6/14", 0xbc79df, "5P6/16", 0xc273e9, "5P6/18", 0xc86cf3, "5P6/2", 0x9a929f, "5P6/20", 0xcf64fe, "5P6/4", 0x9f8faa, "5P6/6", 0xa58bb5, "5P6/8", 0xaa88bf, "5P7/10", 0xca9ee7, "5P7/12", 0xd099f2, "5P7/14", 0xd794fd, "5P7/2", 0xb4adb9, "5P7/4", 0xb9aac4, "5P7/6", 0xbea6cf, "5P7/8", 0xc4a3db, "5P8/10", 0xe5b8ff, "5P8/2", 0xcdc8d2, "5P8/4", 0xd3c5df, "5P8/6", 0xd8c1ec, "5P8/8", 0xdfbdf9, "5P9/2", 0xe8e4ee, "5P9/4", 0xeee0fd, "5PB1/2", 0x161d2b, "5PB1/4", 0x0b1d36, "5PB2/2", 0x2b313f, "5PB2/4", 0x22324c, "5PB2/6", 0x113259, "5PB3/2", 0x414958, "5PB3/4", 0x384966, "5PB3/6", 0x2a4973, "5PB3/8", 0x15497f, "5PB4/10", 0x2062a5, "5PB4/2", 0x5b616f, "5PB4/4", 0x52627d, "5PB4/6", 0x47628a, "5PB4/8", 0x376298, "5PB5/10", 0x437dc0, "5PB5/12", 0x267dce, "5PB5/2", 0x757b88, "5PB5/4", 0x6c7c96, "5PB5/6", 0x627ca4, "5PB5/8", 0x557cb2, "5PB6/10", 0x6097db, "5PB6/12", 0x4898eb, "5PB6/14", 0x1798fb, "5PB6/2", 0x8e95a1, "5PB6/4", 0x8696af, "5PB6/6", 0x7c96be, "5PB6/8", 0x7097cd, "5PB7/10", 0x78b2f9, "5PB7/2", 0xa9b0bb, "5PB7/4", 0xa0b1c9, "5PB7/6", 0x95b1d8, "5PB7/8", 0x89b2e8, "5PB8/2", 0xc4cbd5, "5PB8/4", 0xbacce5, "5PB8/6", 0xadccf7, "5PB9/2", 0xdfe6f0, "5R1/2", 0x2d161b, "5R1/4", 0x370e1b, "5R2/2", 0x422c2e, "5R2/4", 0x4e252b, "5R2/6", 0x581d28, "5R2/8", 0x630e26, "5R3/10", 0x8d192b, "5R3/2", 0x5c4242, "5R3/4", 0x6a3b3c, "5R3/6", 0x763436, "5R3/8", 0x822930, "5R4/10", 0xa83c40, "5R4/12", 0xb3303a, "5R4/14", 0xbe1a34, "5R4/2", 0x745b5a, "5R4/4", 0x835553, "5R4/6", 0x914e4d, "5R4/8", 0x9d4646, "5R5/10", 0xc65857, "5R5/12", 0xd34d51, "5R5/14", 0xdd414b, "5R5/16", 0xe82f44, "5R5/18", 0xf4083d, "5R5/2", 0x8c7675, "5R5/4", 0x9d706d, "5R5/6", 0xac6966, "5R5/8", 0xb9615f, "5R6/10", 0xe27571, "5R6/12", 0xef6b6a, "5R6/14", 0xfb6163, "5R6/16", 0xff545c, "5R6/18", 0xff4455, "5R6/2", 0xa6908f, "5R6/4", 0xb78a87, "5R6/6", 0xc7847f, "5R6/8", 0xd47d79, "5R7/10", 0xff8f8a, "5R7/12", 0xff8682, "5R7/14", 0xff7c7a, "5R7/2", 0xc0aba9, "5R7/4", 0xd1a5a1, "5R7/6", 0xe29e99, "5R7/8", 0xf19792, "5R8/10", 0xffa9a1, "5R8/2", 0xd8c6c4, "5R8/4", 0xedc0bb, "5R8/6", 0xfeb9b3, "5R8/8", 0xffb1aa, "5R9/2", 0xf4e2df, "5R9/4", 0xffdad5, "5R9/6", 0xffd3cb, "5RP1/2", 0x2a1624, "5RP1/4", 0x321028, "5RP1/6", 0x38072d, "5RP2/2", 0x402c36, "5RP2/4", 0x492639, "5RP2/6", 0x51203d, "5RP2/8", 0x5b1442, "5RP3/10", 0x841d58, "5RP3/2", 0x58424b, "5RP3/4", 0x653c4e, "5RP3/6", 0x703451, "5RP3/8", 0x7a2b55, "5RP4/10", 0x9e3f6d, "5RP4/12", 0xa93270, "5RP4/14", 0xb22273, "5RP4/2", 0x715c63, "5RP4/4", 0x7d5665, "5RP4/6", 0x8a4f68, "5RP4/8", 0x95476a, "5RP5/10", 0xbc5a84, "5RP5/12", 0xc75087, "5RP5/14", 0xd24489, "5RP5/16", 0xdc358c, "5RP5/18", 0xe61c8e, "5RP5/2", 0x89767c, "5RP5/4", 0x97707e, "5RP5/6", 0xa46a80, "5RP5/8", 0xb16282, "5RP6/10", 0xd6779c, "5RP6/12", 0xe26e9f, "5RP6/14", 0xee64a1, "5RP6/16", 0xf958a4, "5RP6/18", 0xff49a6, "5RP6/2", 0xa39096, "5RP6/20", 0xff2faa, "5RP6/22", 0xff04ac, "5RP6/4", 0xb08b97, "5RP6/6", 0xbf8499, "5RP6/8", 0xcb7e9b, "5RP7/10", 0xf491b6, "5RP7/12", 0xff88b8, "5RP7/14", 0xff7eba, "5RP7/16", 0xff72bd, "5RP7/18", 0xff64c0, "5RP7/2", 0xbcabb0, "5RP7/4", 0xcaa6b1, "5RP7/6", 0xda9fb3, "5RP7/8", 0xe898b4, "5RP8/10", 0xffabd0, "5RP8/12", 0xffa0d2, "5RP8/2", 0xd5c7cb, "5RP8/4", 0xe5c1cb, "5RP8/6", 0xf6bacd, "5RP8/8", 0xffb2ce, "5RP9/2", 0xf0e2e6, "5RP9/4", 0xffdbe7, "5RP9/6", 0xffd4e8, "5Y1/2", 0x241c07, "5Y2/2", 0x383120, "5Y2/4", 0x3e3002, "5Y3/2", 0x504834, "5Y3/4", 0x55471e, "5Y4/2", 0x696149, "5Y4/4", 0x706031, "5Y4/6", 0x745f15, "5Y5/2", 0x837b62, "5Y5/4", 0x8a7a49, "5Y5/6", 0x90792b, "5Y6/2", 0x9d957a, "5Y6/4", 0xa49561, "5Y6/6", 0xaa9445, "5Y6/8", 0xaf9323, "5Y7/10", 0xceae0f, "5Y7/2", 0xb8af94, "5Y7/4", 0xbeaf79, "5Y7/6", 0xc5af5e, "5Y7/8", 0xcaae41, "5Y8/10", 0xe9c936, "5Y8/2", 0xd3caac, "5Y8/4", 0xd9ca92, "5Y8/6", 0xdfca77, "5Y8/8", 0xe4ca5a, "5Y9/10", 0xffe550, "5Y9/12", 0xffe51d, "5Y9/2", 0xeee6c5, "5Y9/4", 0xf5e6a9, "5Y9/6", 0xfbe68d, "5Y9/8", 0xffe670, "5YR1/2", 0x2c1810, "5YR2/2", 0x402d25, "5YR2/4", 0x4b2917, "5YR2/6", 0x542401, "5YR3/2", 0x594439, "5YR3/4", 0x65402a, "5YR3/6", 0x6e3b19, "5YR4/2", 0x735d50, "5YR4/4", 0x805840, "5YR4/6", 0x8a542f, "5YR4/8", 0x92501b, "5YR5/10", 0xb86619, "5YR5/2", 0x8c776a, "5YR5/4", 0x9a7359, "5YR5/6", 0xa66e46, "5YR5/8", 0xb06a32, "5YR6/10", 0xd68035, "5YR6/12", 0xdd7d15, "5YR6/2", 0xa79183, "5YR6/4", 0xb58d72, "5YR6/6", 0xc2895f, "5YR6/8", 0xcd844b, "5YR7/10", 0xf39b4f, "5YR7/12", 0xfd9734, "5YR7/2", 0xc1ab9e, "5YR7/4", 0xd0a78b, "5YR7/6", 0xdea378, "5YR7/8", 0xe99f65, "5YR8/10", 0xffb666, "5YR8/12", 0xffb24d, "5YR8/14", 0xffae2b, "5YR8/2", 0xdbc6b8, "5YR8/4", 0xecc2a4, "5YR8/6", 0xfabe91, "5YR8/8", 0xffba7b, "5YR9/2", 0xf7e2d2, "5YR9/4", 0xffddbb, "5YR9/6", 0xffd9a7, "7.5B1/2", 0x0c1f28, "7.5B2/2", 0x23343c, "7.5B2/4", 0x043648, "7.5B3/2", 0x374b55, "7.5B3/4", 0x1d4e62, "7.5B4/2", 0x51646d, "7.5B4/4", 0x3c677a, "7.5B4/6", 0x186986, "7.5B5/2", 0x6b7e86, "7.5B5/4", 0x578193, "7.5B5/6", 0x3b839f, "7.5B6/2", 0x8598a0, "7.5B6/4", 0x729bac, "7.5B6/6", 0x579eb9, "7.5B6/8", 0x2ea0c6, "7.5B7/2", 0xa0b3ba, "7.5B7/4", 0x8ab6c6, "7.5B7/6", 0x72b9d3, "7.5B7/8", 0x4fbce1, "7.5B8/2", 0xbbcdd4, "7.5B8/4", 0xa4d1e1, "7.5B8/6", 0x89d5ef, "7.5B8/8", 0x60d8ff, "7.5B9/2", 0xd6e9ef, "7.5B9/4", 0xbaeeff, "7.5BG1/2", 0x0b2022, "7.5BG2/2", 0x223536, "7.5BG3/2", 0x354d4d, "7.5BG3/4", 0x0d5153, "7.5BG4/2", 0x4c6666, "7.5BG4/4", 0x2e6a6b, "7.5BG5/2", 0x658080, "7.5BG5/4", 0x4b8484, "7.5BG5/6", 0x1b8989, "7.5BG6/2", 0x7e9b99, "7.5BG6/4", 0x62a09e, "7.5BG6/6", 0x3da4a3, "7.5BG7/2", 0x98b5b3, "7.5BG7/4", 0x7dbab7, "7.5BG7/6", 0x5fbfbb, "7.5BG7/8", 0x22c3c0, "7.5BG8/2", 0xb2d0ce, "7.5BG8/4", 0x97d6d1, "7.5BG8/6", 0x75dbd6, "7.5BG8/8", 0x45dfda, "7.5BG9/2", 0xcbece9, "7.5BG9/4", 0xaef2ed, "7.5BG9/6", 0x88f8f1, "7.5BG9/8", 0x4ffdf6, "7.5G1/2", 0x10201b, "7.5G2/2", 0x25352f, "7.5G2/4", 0x0d382c, "7.5G3/2", 0x394d45, "7.5G3/4", 0x205142, "7.5G4/2", 0x50665d, "7.5G4/4", 0x386b59, "7.5G4/6", 0x056f56, "7.5G5/2", 0x688076, "7.5G5/4", 0x528572, "7.5G5/6", 0x34896e, "7.5G6/2", 0x819b8f, "7.5G6/4", 0x69a08a, "7.5G6/6", 0x4fa587, "7.5G6/8", 0x23a883, "7.5G7/2", 0x9ab6a9, "7.5G7/4", 0x84bba4, "7.5G7/6", 0x6cbfa0, "7.5G7/8", 0x4ac49c, "7.5G8/10", 0x2fe4b1, "7.5G8/2", 0xb3d1c3, "7.5G8/4", 0x9dd6be, "7.5G8/6", 0x82dcb9, "7.5G8/8", 0x64e0b5, "7.5G9/10", 0x48ffc9, "7.5G9/2", 0xccedde, "7.5G9/4", 0xb4f3d8, "7.5G9/6", 0x96f9d2, "7.5G9/8", 0x75fecd, "7.5GY1/2", 0x161f15, "7.5GY1/4", 0x062302, "7.5GY2/2", 0x2b3428, "7.5GY2/4", 0x22371a, "7.5GY2/6", 0x153907, "7.5GY3/2", 0x414c3c, "7.5GY3/4", 0x384f2c, "7.5GY3/6", 0x2d511b, "7.5GY4/2", 0x596552, "7.5GY4/4", 0x4f6841, "7.5GY4/6", 0x456b2e, "7.5GY4/8", 0x3a6e13, "7.5GY5/10", 0x4a8b0a, "7.5GY5/2", 0x727f6a, "7.5GY5/4", 0x6a8259, "7.5GY5/6", 0x608645, "7.5GY5/8", 0x56882f, "7.5GY6/10", 0x65a62b, "7.5GY6/2", 0x8c9a81, "7.5GY6/4", 0x839d70, "7.5GY6/6", 0x7aa05d, "7.5GY6/8", 0x70a346, "7.5GY7/10", 0x81c146, "7.5GY7/12", 0x76c425, "7.5GY7/2", 0xa6b49b, "7.5GY7/4", 0x9db888, "7.5GY7/6", 0x95bb75, "7.5GY7/8", 0x8cbe60, "7.5GY8/10", 0x9cdd5e, "7.5GY8/12", 0x92e03f, "7.5GY8/2", 0xc0cfb3, "7.5GY8/4", 0xb7d39f, "7.5GY8/6", 0xafd78b, "7.5GY8/8", 0xa6da75, "7.5GY9/10", 0xb6fa6f, "7.5GY9/12", 0xacfc53, "7.5GY9/14", 0xa1ff2c, "7.5GY9/2", 0xdbebcb, "7.5GY9/4", 0xd2efb6, "7.5GY9/6", 0xc9f39f, "7.5GY9/8", 0xc0f688, "7.5P1/2", 0x261828, "7.5P1/4", 0x2c132f, "7.5P1/6", 0x310c35, "7.5P2/10", 0x54125a, "7.5P2/2", 0x3a2d3c, "7.5P2/4", 0x412943, "7.5P2/6", 0x47244a, "7.5P2/8", 0x4e1c53, "7.5P3/10", 0x6f2c75, "7.5P3/12", 0x76217d, "7.5P3/14", 0x7d0f85, "7.5P3/2", 0x534454, "7.5P3/4", 0x5a3f5c, "7.5P3/6", 0x613a64, "7.5P3/8", 0x69336d, "7.5P4/10", 0x88498c, "7.5P4/12", 0x8f4294, "7.5P4/14", 0x96399c, "7.5P4/16", 0x9e2ca5, "7.5P4/18", 0xa51aad, "7.5P4/2", 0x6b5d6b, "7.5P4/4", 0x725974, "7.5P4/6", 0x7a547c, "7.5P4/8", 0x814f84, "7.5P5/10", 0xa364a6, "7.5P5/12", 0xaa5dae, "7.5P5/14", 0xb256b6, "7.5P5/16", 0xb94ebe, "7.5P5/18", 0xc043c7, "7.5P5/2", 0x837783, "7.5P5/20", 0xc836cf, "7.5P5/22", 0xd020d8, "7.5P5/4", 0x8b738c, "7.5P5/6", 0x946e95, "7.5P5/8", 0x9c699e, "7.5P6/10", 0xbe7fc0, "7.5P6/12", 0xc679c8, "7.5P6/14", 0xce72d1, "7.5P6/16", 0xd66bd9, "7.5P6/18", 0xdd62e2, "7.5P6/2", 0x9d919d, "7.5P6/20", 0xe656ec, "7.5P6/22", 0xef47f5, "7.5P6/24", 0xf734fe, "7.5P6/4", 0xa58ea5, "7.5P6/6", 0xae89af, "7.5P6/8", 0xb684b7, "7.5P7/10", 0xda99db, "7.5P7/12", 0xe293e3, "7.5P7/14", 0xeb8ced, "7.5P7/16", 0xf485f6, "7.5P7/18", 0xfd7cff, "7.5P7/2", 0xb7acb6, "7.5P7/4", 0xc0a8bf, "7.5P7/6", 0xc8a4c8, "7.5P7/8", 0xd19fd1, "7.5P8/10", 0xf8b3f7, "7.5P8/12", 0xffacff, "7.5P8/2", 0xd0c7d0, "7.5P8/4", 0xdbc3d9, "7.5P8/6", 0xe3bfe2, "7.5P8/8", 0xeeb8ed, "7.5P9/2", 0xece3eb, "7.5P9/4", 0xf8def6, "7.5P9/6", 0xffd8ff, "7.5PB1/10", 0x190e54, "7.5PB1/12", 0x1c055c, "7.5PB1/2", 0x1b1b2b, "7.5PB1/4", 0x181a36, "7.5PB1/6", 0x161741, "7.5PB1/8", 0x17134b, "7.5PB2/10", 0x242870, "7.5PB2/12", 0x25247a, "7.5PB2/14", 0x261e84, "7.5PB2/16", 0x29168d, "7.5PB2/18", 0x2c0897, "7.5PB2/2", 0x2f3040, "7.5PB2/4", 0x2c2f4c, "7.5PB2/6", 0x292d58, "7.5PB2/8", 0x262b64, "7.5PB3/10", 0x36418b, "7.5PB3/12", 0x333e97, "7.5PB3/14", 0x323aa3, "7.5PB3/16", 0x3235af, "7.5PB3/18", 0x332fb9, "7.5PB3/2", 0x464758, "7.5PB3/20", 0x3529c2, "7.5PB3/22", 0x381fcd, "7.5PB3/24", 0x3b0ed7, "7.5PB3/4", 0x424666, "7.5PB3/6", 0x3e4573, "7.5PB3/8", 0x3a437f, "7.5PB4/10", 0x4d5ba4, "7.5PB4/12", 0x485ab1, "7.5PB4/14", 0x4457bd, "7.5PB4/16", 0x4054ca, "7.5PB4/18", 0x3e50d7, "7.5PB4/2", 0x5e6070, "7.5PB4/20", 0x3d4ae5, "7.5PB4/22", 0x3e46ee, "7.5PB4/24", 0x3f3ffa, "7.5PB4/26", 0x4137ff, "7.5PB4/4", 0x5b5f7d, "7.5PB4/6", 0x575e8a, "7.5PB4/8", 0x535d97, "7.5PB5/10", 0x6776be, "7.5PB5/12", 0x6175cc, "7.5PB5/14", 0x5a73da, "7.5PB5/16", 0x5371e8, "7.5PB5/18", 0x4d6df7, "7.5PB5/2", 0x787a88, "7.5PB5/20", 0x486aff, "7.5PB5/4", 0x747a95, "7.5PB5/6", 0x7079a4, "7.5PB5/8", 0x6c77b1, "7.5PB6/10", 0x8091d9, "7.5PB6/12", 0x798fe9, "7.5PB6/14", 0x728ef9, "7.5PB6/2", 0x9294a1, "7.5PB6/4", 0x8e94af, "7.5PB6/6", 0x8a93be, "7.5PB6/8", 0x8592cb, "7.5PB7/10", 0x98abf9, "7.5PB7/2", 0xacafbb, "7.5PB7/4", 0xa8aec9, "7.5PB7/6", 0xa3aed9, "7.5PB7/8", 0x9eade8, "7.5PB8/2", 0xc7cad5, "7.5PB8/4", 0xc2c9e5, "7.5PB8/6", 0xbcc9f6, "7.5PB9/2", 0xe2e5f0, "7.5R1/2", 0x2e1619, "7.5R1/4", 0x380e17, "7.5R2/2", 0x422c2c, "7.5R2/4", 0x4e2527, "7.5R2/6", 0x581e22, "7.5R2/8", 0x63101d, "7.5R3/10", 0x8c1d1e, "7.5R3/2", 0x5c4240, "7.5R3/4", 0x6a3c37, "7.5R3/6", 0x763530, "7.5R3/8", 0x812b27, "7.5R4/10", 0xa83e35, "7.5R4/12", 0xb2322b, "7.5R4/14", 0xbc2221, "7.5R4/2", 0x745b59, "7.5R4/4", 0x845550, "7.5R4/6", 0x914e47, "7.5R4/8", 0x9d463d, "7.5R5/10", 0xc6594b, "7.5R5/12", 0xd24f40, "7.5R5/14", 0xdc4436, "7.5R5/16", 0xe7352a, "7.5R5/18", 0xf0201e, "7.5R5/2", 0x8c7673, "7.5R5/4", 0x9d7069, "7.5R5/6", 0xac695f, "7.5R5/8", 0xba6255, "7.5R6/10", 0xe37564, "7.5R6/12", 0xef6d59, "7.5R6/14", 0xfa644d, "7.5R6/16", 0xff5841, "7.5R6/18", 0xff4b33, "7.5R6/2", 0xa7908c, "7.5R6/4", 0xb88a82, "7.5R6/6", 0xc78479, "7.5R6/8", 0xd57d6f, "7.5R7/10", 0xff917c, "7.5R7/12", 0xff8870, "7.5R7/14", 0xff7f64, "7.5R7/16", 0xff7457, "7.5R7/2", 0xc1aba7, "7.5R7/4", 0xd3a59c, "7.5R7/6", 0xe29f92, "7.5R7/8", 0xf39887, "7.5R8/10", 0xffaa92, "7.5R8/2", 0xd9c6c2, "7.5R8/4", 0xefbfb6, "7.5R8/6", 0xffb9ab, "7.5R8/8", 0xffb29e, "7.5R9/2", 0xf5e1dd, "7.5R9/4", 0xffdacf, "7.5R9/6", 0xffd3c2, "7.5RP1/2", 0x2b1622, "7.5RP1/4", 0x330f26, "7.5RP1/6", 0x3b0429, "7.5RP2/2", 0x402c34, "7.5RP2/4", 0x4a2636, "7.5RP2/6", 0x531f39, "7.5RP2/8", 0x5d123c, "7.5RP3/10", 0x881a4e, "7.5RP3/2", 0x5a4249, "7.5RP3/4", 0x673b4a, "7.5RP3/6", 0x72344b, "7.5RP3/8", 0x7e294c, "7.5RP4/10", 0xa33d62, "7.5RP4/12", 0xad3063, "7.5RP4/14", 0xb81c64, "7.5RP4/2", 0x725b61, "7.5RP4/4", 0x805561, "7.5RP4/6", 0x8d4e61, "7.5RP4/8", 0x994661, "7.5RP5/10", 0xc05979, "7.5RP5/12", 0xcc4d7a, "7.5RP5/14", 0xd6427b, "7.5RP5/16", 0xe1307c, "7.5RP5/18", 0xeb117d, "7.5RP5/2", 0x8a767a, "7.5RP5/4", 0x997079, "7.5RP5/6", 0xa76979, "7.5RP5/8", 0xb46179, "7.5RP6/10", 0xdb7692, "7.5RP6/12", 0xe76d92, "7.5RP6/14", 0xf36293, "7.5RP6/16", 0xff5493, "7.5RP6/18", 0xff4494, "7.5RP6/2", 0xa39094, "7.5RP6/20", 0xff2896, "7.5RP6/4", 0xb28b93, "7.5RP6/6", 0xc28492, "7.5RP6/8", 0xce7e92, "7.5RP7/10", 0xf890ab, "7.5RP7/12", 0xff87ab, "7.5RP7/14", 0xff7cab, "7.5RP7/16", 0xff6fac, "7.5RP7/2", 0xbdabae, "7.5RP7/4", 0xcca6ad, "7.5RP7/6", 0xdc9fac, "7.5RP7/8", 0xeb98ac, "7.5RP8/10", 0xffa9c5, "7.5RP8/12", 0xff9fc5, "7.5RP8/2", 0xd6c6c9, "7.5RP8/4", 0xe8c0c7, "7.5RP8/6", 0xf9b9c6, "7.5RP8/8", 0xffb1c6, "7.5RP9/2", 0xf1e2e4, "7.5RP9/4", 0xffdbe2, "7.5RP9/6", 0xffd3e1, "7.5Y1/2", 0x211d09, "7.5Y2/2", 0x363220, "7.5Y2/4", 0x3a3200, "7.5Y3/2", 0x4d4934, "7.5Y3/4", 0x51491d, "7.5Y4/2", 0x676249, "7.5Y4/4", 0x6b6230, "7.5Y4/6", 0x6e6211, "7.5Y5/2", 0x817c62, "7.5Y5/4", 0x857c48, "7.5Y5/6", 0x897c29, "7.5Y6/2", 0x9b967a, "7.5Y6/4", 0x9f9660, "7.5Y6/6", 0xa39743, "7.5Y6/8", 0xa6971d, "7.5Y7/2", 0xb5b093, "7.5Y7/4", 0xbab178, "7.5Y7/6", 0xbeb15d, "7.5Y7/8", 0xc1b13d, "7.5Y8/10", 0xdfcd30, "7.5Y8/2", 0xd0cbac, "7.5Y8/4", 0xd5cc91, "7.5Y8/6", 0xd9cc75, "7.5Y8/8", 0xdccd56, "7.5Y9/10", 0xfbe94c, "7.5Y9/12", 0xfee90c, "7.5Y9/2", 0xece7c4, "7.5Y9/4", 0xf0e8a8, "7.5Y9/6", 0xf4e88c, "7.5Y9/8", 0xf8e86d, "7.5YR1/2", 0x2b190d, "7.5YR2/2", 0x3f2e23, "7.5YR2/4", 0x482b12, "7.5YR3/2", 0x584537, "7.5YR3/4", 0x624226, "7.5YR3/6", 0x693f11, "7.5YR4/2", 0x725d4e, "7.5YR4/4", 0x7e5a3b, "7.5YR4/6", 0x865728, "7.5YR4/8", 0x8c540e, "7.5YR5/2", 0x8b7768, "7.5YR5/4", 0x987455, "7.5YR5/6", 0xa3713f, "7.5YR5/8", 0xab6d27, "7.5YR6/10", 0xcf8524, "7.5YR6/2", 0xa69281, "7.5YR6/4", 0xb38e6e, "7.5YR6/6", 0xbe8b58, "7.5YR6/8", 0xc78841, "7.5YR7/10", 0xeca042, "7.5YR7/12", 0xf39d1c, "7.5YR7/2", 0xc0ac9b, "7.5YR7/4", 0xcea986, "7.5YR7/6", 0xdaa671, "7.5YR7/8", 0xe3a35b, "7.5YR8/10", 0xffba5a, "7.5YR8/12", 0xffb73c, "7.5YR8/2", 0xdac7b5, "7.5YR8/4", 0xe9c49f, "7.5YR8/6", 0xf6c08a, "7.5YR8/8", 0xffbd72, "7.5YR9/2", 0xf6e2ce, "7.5YR9/4", 0xffdfb6, "7.5YR9/6", 0xffdc9f, "7.5YR9/8", 0xffd988, "N0", 0x000000, # vrs "N1", 0x222221, "N2", 0x3b3a3a, "N3", 0x525251, "N4", 0x6b6c6b, "N5", 0x888987, "N6", 0xa3a2a2, "N7", 0xb5b6b5, "N8", 0xcacaca, "N9", 0xe9e8e7, "N9.5", 0xf3f2f1, # vrs "N10", 0xffffff, # vrs ); sub mun2rgb { local($mun) = @_; # # Kludge large chroma values to the largest chroma value available. $mun = "5B5/6" if $mun eq "5B5/10"; $mun = "5BG5/6" if $mun eq "5BG5/10"; $mun = "5G5/6" if $mun eq "5G5/10"; $mun = "5GY5/8" if $mun eq "5GY5/10"; $mun = "5Y5/6" if $mun eq "5Y5/10"; $mun = "7.5YR5/8" if $mun eq "7.5YR5/10"; $mun = "10YR4/6" if $mun eq "10YR4/12"; $mun = "10YR5/8" if $mun eq "10YR5/10"; $mun = "10YR5/8" if $mun eq "10YR5/14"; $mun = "10YR6/10" if $mun eq "10YR6/12"; $mun = "7.5BG4/4" if $mun eq "7.5BG4/6"; $mun = "5PB3/8" if $mun eq "5PB3/10"; # Hopefully we've now got something realizable. die "Unknown MUN color '$mun'" unless defined $munsell{$mun}; $mun = $munsell{$mun}; # Now go for it. return ($mun>>16, 0xFF&($mun>>8), 0xFF&$mun); } # # Print relevant MUNsell color charts, as a proof that the mun2rgb # routine is working. if (1) { # # First, the gray scale. # print "\n"; for ($l = 0; $l <= 10; $l++) { ($r, $g, $b) = mun2rgb("N$l"); $t = 255 - int(($r + $g + $b) / 3); $t = 255 unless $t < 64; # For most values of $v, just use white. print "
Munsell Gray Scale
\n"; print "(These should step by about 26)
N$l: $r,$g,$b\n"; } print "
\n"; # # Next, a color scale. # (We choose orange, because PDP-8.) # 5R is red (0 degrees) # 10R is red-orange (1*72/4 = 18 degrees?) # 5YR is orange (2*72/4 = 36 degrees?) # 10YR is yellow-orange (3*72/4 = 54 degrees?) # "Correct" color for 10YR6/10 is from https://www.easyrgb.com/en/match.php # (Either easyrgb is too bright or we are too dark.) # This seems to be attributable to the hsv2hsl conversion formulae! # # Another ongoing issue is that yellow isn't 36 degrees; more like 30. # (Is that a problem with Munsell, or us?) # Munsell (easyrgb) says 10YR6/10 is hsv(38, .87, .78). # I think that 10YR6/10 should be is hsv(43(54?), 1.0, .6). # According to http://www.csgnetwork.com/csgcolorsel4.html, # I *do* correctly render hsv(43, 1.0, 0.6) as rgb(153,110,0)! # Munsell realsRGB.xls shows the answer for 10YR6/10 is rgb(198,138,16). # That, in turn is hsv(40, .92, .78). # print "\n"; for ($ww = 10; $ww > 0; $ww--) { print "\n"; for ($cc = 1; $cc <= 20; $cc++) { next unless defined $munsell{"10YR$ww/$cc"}; ($r, $g, $b) = mun2rgb("10YR$ww/$cc"); $t = 255 - int(($r + $g + $b) / 3); $t = 255 unless $t < 64; # For most values of $v, just use white. print "\n"; } print "
Munsell 10YR Scale
\n"; print "(Beware unless 10YR6/10 is 198,138,16)
10YR$ww/$cc: $r,$g,$b\n"; # print " $h,$s,$v\n"; } print "
\n"; } # # Attempt a conversion of an arbitrary CHM color. %wRatio = ( "A", 15/16, "B", 14/16, "C", 13/16, "D", 12/16, "E", 11/16, "F", 10/16, "G", 9/16, "H", 8/16, "I", 7/16, "J", 6/16, "K", 5/16, "L", 4/16, "M", 3/16, "N", 2/16, "O", 1/16, "P", 0/16, ); sub chm2rgb { local($c) = @_; local($q, $w, $b, $h, $s, $l); local($r, $g); #warn "chm2rgb $c\n"; # BUGBUG: Kludge some colors that "can't be right" #$c = "24 PM" if $c eq "1 ML"; #$c = "9 HA" if $c eq "9 DA"; if ($c =~ /Gr[ae]y\s*Scale\s*([A-P])/) { $w = $1; $w = $wRatio{$w}; $w = int(255*$w); return ($w, $w, $w); } ($q, $w, $b) = ($1, $2, $3) if $c =~ /([\d.]+)\s*([A-P])([A-P])/; ($q, $w, $b) = ($1, "P", "A") if $c =~ /([\d.]+)$/; die "$c: color not recognised\n" unless $b =~ /[A-P]/; # Convert $q to a hue. # $q should be from 1 to 24.875. $q--; # Now 0 to 23.875 # Tweak so that 1->0->yellow. $h = 75; # 0 => 75 degrees? $h -= 5; $h -= $q * 15; $h += 360 if $h < 0; # Look up $w and $b. #warn "w is $w, b is $b\n"; $w = $wRatio{$w}; $b = 15/16-$wRatio{$b}; #warn "w is $w, b is $b\n"; $scale = 1-$w-$b; ($r, $g, $b) = &hsv2rgb($h, 1, 1); $r = $r*$scale + 255*$w; $g = $g*$scale + 255*$w; $b = $b*$scale + 255*$w; $r = int($r+0.5); $g = int($g+0.5); $b = int($b+0.5); return ($r, $g, $b); } # # Print relevant CHM color charts, as a proof that the chm2rgb # routine is working. if (1) { # # First, the gray scale. # print "\n"; foreach $l ("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P") { ($r, $g, $b) = chm2rgb("Gray Scale $l"); $t = 255 - int(($r + $g + $b) / 3); $t = 255 unless $t < 64; # For most values of $v, just use white. print "
CHM Gray Scale
\n"; print "(These should step by 16)
$l: $r,$g,$b\n"; } print "
\n"; # # Now, a color chart for CHM 4. # print "\n"; foreach $ww ("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P") { print "\n"; foreach $bb ("P", "O", "N", "M", "L", "K", "J", "I", "H", "G", "F", "E", "D", "C", "B", "A") { next if $wRatio{$ww} + (1-$wRatio{$bb}) >= 1; ($r, $g, $b) = chm2rgb("4 $ww$bb"); $t = 255 - int(($r + $g + $b) / 3); $t = 255 unless $t < 64; # For most values of $v, just use white. print "\n"; } } #exit 1; # # The relevant color standard (semicolon separator): # This bit is straight out of DEC STD 092, Table 5-1. # s/Brite/Bright/ # s/Defuser/Diffuser/ # s/Grayscale/Gray Scale/ # s/Cabs/Cabinets/ # Color punctuation is normalized. # "Chinese Red" and "Vermillion" moved to 10RP. @colors = ( # "###;First Used On;Name;Reference", "065;Old DEC Cabinets;Silver", "067;Old DEC Cabinets;Blue-Gray", "068;General;Light Gray", "094;Cabinets;Lamp Black;CHM Gray Scale P", # "095;General;Chinese Red;MUN (10YR4/12),CHM 6PC", "095;General;Chinese Red;MUN (10RP4/12),CHM 6PC", "101;End Panels;Gray;CHM Gray Scale D", "102;Packaging;Blue;IPI 66C 950", "104;Module;Bright Gold;CHM 2 PC", "105;LAB-COM;Gray;CHM Gray Scale G", "111;PDP10;Deep Peacock Blue;CHM 16 PC", "113;PDP8/I;Dark Luggage Tan;MUN (5YR4/8),CHM 4", "114;PDP10;Wedgewood Green;CHM 24.125 EC", "115;PDP10;Chalk Blue;CHM 16 EC", "116;Peripherals;Bright Olive Green;CHM 24.5 PC", "123;General;White;MUN (N9.5)", "126;PDP8/L;Russet Orange;CHM 4 NC", "129;PDP12;Lime Peel;CHM 24 PG", "130;PDP12;Bright Chartreuse;CHM 24.5 LA", "131;PDP15;Bright Open Blue;MUN (2.5PB5/10)", "135;PDP15;Bright Navy;CHM 13.5 PG", "136;PDP14;Amber;MUN (10YR6/10),CHM 3", # "137;General;Vermillion;MUN (10YR5/14),CHM 6", "137;General;Vermillion;MUN (10RP5/14),CHM 6", "138;Peripheral Switch;Dark Olive Gray;CHM 1 ML", "139;PDP11;Bright Rose;CHM 8 NA", "140;PDP11;Magenta;CHM 9 PA", "141;PDP8/E;Amber;MUN (10YR6/12),CHM 3", "142;PDP8/E;Terra Cotta;CHM 5 PE", "144;KI10;Turquoise Green;MUN (7.5BG4/6)", "145;KI10;Deep Peacock Blue;CHM 16 PE", "146;Logic Lab;Deep Purple;CHM 11 PE", "147;General;Dark Gray;CHM Gray Scale L", "148;10 Systems;Blasi Blue;CHM 16 NC", "149;IDAC 11/07;Topaz;MUN (10YR5/10)", "150;IDAC 11/07;Clove Brown;MUN (10YR3/4)", "151;KI10;Light Aqua;CHM 17 LA", "152;PDP11/45 & 25;Alexander Grape;CHM 9 PL", "153;NEMA Cabinets;Gray Primer;", "154;DECDATA Systems;Murphy Maroon;MUN (7.5R3/8)", "155;PDP11;Morris Maroon;MUN (7.5R2/8)", "156;GT40;Crabbe Yellow;MUN (5Y7/10)", "157;GT40;Lenny Lime;MUN (5Y4/6)", "158;PDP8;Dave Brown;MUN (2.5YR3/8)", "159;Corporate Identity;Digital Blue;PMS Process Blue", "160;Medical Systems;Blue Janice;MUN (7.5PB3/12)", "161;ANT'S (OEM);ANT'S Orange;Customer Chip", "162;ANT'S (OEM);ANT'S Blue;Customer Chip", "163;Philips (OEM);Philibs Blue;Customer Chip", "164;Industrial;D.C. Blue;MUN (5PB3/10)", "166;W.U. (OEM);Western Union Blue;Customer Chip", "167;Industrial;Can-Red;I.H.C.", "169;General;Red Diffuser;I.H.C.", "170;General;Colorless Diffuser;I.H.C.", "171;Key Controls;Button Red;G.E. MVCL", "172;Dust Covers;Smokey Lexan;G.E. MVCL", "173;PDP8/A;Fog Diffuser;I.H.C.", "174;Bell Sys (OEM);Bell Gold;Customer Chip", "175;Bell Sys (OEM);Bell Blue;Customer Chip", "176;Foxboro (OEM);Light Fox Green;Customer Chip", "177;Foxboro (OEM);Dark Fox Green;Customer Chip", "178;PDP15;Blue Devlin Diffuser;I.H.C.", "179;General;OSHA Yellow;I.H.C.", "180;General;OSHA Blue;I.H.C.", "181;General;OSHA Green;I.H.C.", "182;General;OSHA Orange;I.H.C.", "183;General;OSHA Red;I.H.C.", "184;General;OSHA Magenta;CHM 9 DA", "185;General;Corn Gold;I.H.C.", "186;Data Systems;Mullen Blue;I.H.C.", "187;OEM;Bell Canada Gray;Customer Chip", "188;General;Ocular Red Diffuser;I.H.C.", "189;General;DEC Clear Hardcoat;I.H.C.", "190;PDP11/60 CAB;PREFER - RED;I.H.C.", "191;OEM;Bell Canada Gold;Customer Chip", "192;OEM;Canada Post Red;S/S Ink I.H.C.", "193;VT100;Digital Brown;I.H.C.", "195;General;Charcoal;I.H.C.", "196;Labels;Label Code Blue;Inks PMS 306", "197;Labels;Label Code Green;Inks PMS 375", "198;Labels;Label Code Pink;Inks PMS 191", "199;Labels;Label Code Purple;Inks PMS 528", "200;Labels;Label Code Orange;Inks PMS 151", "201;Labels;Label Code Yellow;Inks PMS 109", "202;Labels;Label Code Tan;Inks PMS 472", "203;Labels;Label Code Dark Orange;Inks PMS 166", "204;Labels;Label Code Yellow Ochre;Inks PMS 117", "205;Labels;Label Code Brown;Inks PMS 347", "206;Labels;Label Code Olive;Inks PMS 391", "207;;D.F. Gray Diffuser;I.H.C. Silk Screen Ink", "208;;Gray Lexan;G.E. 9030-713", "209;;Trans Bronze;Flex-Vu M-100 BN", "210;;Yellow Diffuser;I.H.C. Silk Screen Ink", "211;;Green Diffuser;I.H.C. Silk Screen Ink", "212;;Bold Blue;Cycolac T-5500 (Keycaps)", "213;;Mellow White;Cycolac T-2502 (Keycaps)", "214;;Old Gray Diffuser;Cycolac T-3502 (Keycaps)", "215;;A.J. Brown;G.E. Noryl N-190-50188", "216;;A.J. Beige;G.E. Noryl N-190-50192", ); # Here is some text extracted from CHD's page: # http://www.chdickman.com/pdp8/DECcolors/ # CHM and MUN designations returned to original spelling. # Probable errors for #114, #148, #149, #154 corrected. @chd1 = ( "065;Silver;Old DEC Cabinets;;", "067;Blue-Gray;Old DEC Cabinets;;", "068;Light Gray;General;;", "094;Lamp Black;Cabinets;CHM Gray Scale P;0,0,0", "095;Chinese Red;General;MUN (10YR4/12);170,56,30", "101;Gray;End Panels;CHM Gray Scale D;164,164,164", "102;Blue;Packaging;IPI 66C 950;Unknown", "104;Bright Gold;Module;CHM 2 PC;198,165,10", "105;Gray;LAB-COM;CHM Gray Scale G;101,101,101", "111;Deep Peacock Blue;PDP10;CHM 16 PC;18,61,95", "113;Dark Luggage Tan;PDP8/I;MUN (5YR4/8);147,79,31", # "114;Wedgewood Green;PDP10;CHM 25-1/8 EC;172,188,151", "114;Wedgewood Green;PDP10;CHM 24.125 EC;172,188,151", "115;Chalk Blue;PDP10;CHM 16 EC;149,175,176", "116;Bright Olive Green;Peripherals;CHM 24.5 PC;143,159,24", "123;White;General;MUN (N9.5);247,247,247", "126;Russet Orange;PDP8/L;CHM 4 NC;202,97,16", "129;Lime Peel;PDP12;CHM 24 PG;76,106,18", "130;Bright Chartreuse;PDP12;CHM 24.5 LA;212,219,53", "131;Bright Open Blue;PDP15;MUN (2.5PB5/10);39,127,196", "135;Bright Navy;PDP15;CHM 13.5 PG;10,20,61", "136;Amber;PDP14;MUN (10YR6/10);200,136,26", "137;Vermillion;General;MUN (10YR5/14);outside sRGB gamut", "138;Dark Olive Gray;Peripheral Switch;CHM 1 ML;54,49,19", "139;Bright Rose;PDP11;CHM 8 NA;156,43,61", "140;Magenta;PDP11;CHM 9 PA;110,35,76", "141;Amber;PDP8/E;MUN (10YR6/12);outside sRGB gamut", "142;Terra Cotta;PDP8/E;CHM 5 PE;156,55,11", "144;Turquoise Green;KI10;MUN (7.5BG4/6);outside sRGB gamut", "145;Deep Peacock Blue;KI10;CHM 16 PE;16,50,78", "146;Deep Purple;Logic Lab;CHM 11 PE;45,19,58", "147;Dark Gray;General;CHM Gray Scale L;56,56,56", # "148;Blasi Blue;10 Systems;CHM 18 NC;26,68,106", "148;Blasi Blue;10 Systems;CHM 16 NC;26,68,106", # "149;Topaz;IDAC 11/07;MUN (18YR5/10);outside sRGB gamut", "149;Topaz;IDAC 11/07;MUN (10YR5/10);outside sRGB gamut", "150;Clove Brown;IDAC 11/07;MUN (10YR3/4);95,66,37", "151;Light Aqua;KI10;CHM 17 LA;48,115,144", "152;Alexander Grape;PDP11/45 & 25;CHM 9 PL;20,8,22", "153;Gray Primer;NEMA Cabinets;;125,125,125", # "154;Murphy Maroon;DECDATA Systems;MUN (7.5R3/6);118,51,50", "154;Murphy Maroon;DECDATA Systems;MUN (7.5R3/8);118,51,50", "155;Morris Maroon;PDP11;MUN (7.5R2/8);99,15,30", "156;Crabbe Yellow;GT40;MUN (5Y7/10);209,171,28", "157;Lenny Lime;GT40;MUN (5Y4/6);118,94,25", "158;Dave Brown;PDP8;MUN (2.5YR3/8);123,49,18", "159;Digital Blue;Corporate Identity;PMS Process Blue;0,140,204", "160;Blue Janice;Medical Systems;MUN (7.5PB3/12);52,61,156", "164;D.C. Blue;Industrial;MUN (5PB3/10);outside sRGB gamut", "184;OSHA Magenta;General;CHM 9 DA;217,146,176", ); # Here are the colors extracted from the CHD page: # (Note that they don't match perfectly.) @chd2 = ( "094;0,0,0", "095;175,33,13", "101;164,164,164", "102;0,0,255", "104;198,165,10", "105;101,101,101", "111;18,61,95", "113;147,79,31", "114;172,188,151", "115;149,175,176", "116;143,159,24", "123;247,247,247", "126;202,97,16", "129;76,106,18", "130;212,219,53", "131;39,127,198", "135;10,20,61", "136;200,136,26", "137;178,107,0", "138;54,49,19", "139;156,43,61", "140;110,35,76", "141;205,135,0", "142;156,55,11", "144;0,109,118", "145;16,50,78", "146;45,19,58", "147;56,56,56", "148;26,68,106", "149;170,110,0", "150;95,66,37", "151;48,115,144", "152;20,8,22", "153;125,125,125", "154;118,51,50", "155;99,15,30", "156;209,171,28", "157;118,94,25", "158;123,49,18", "159;0,140,204", "160;52,61,156", "164;0,72,146", "184;217,146,176", ); sub addrgb { local($dec, $rgb) = @_; if (defined $rgb{$dec}) { $rgb{$dec} .= ":$rgb"; # Add the new color } else { $rgb{$dec} = $rgb; # Create a color } } foreach $chd1 (@chd1) { # Parse the table entry ($dec, $name, $use, $cname, $rgb) = split(/;/, $chd1); # Should have gotten at least these: die unless $dec; die unless $name; die unless $use; # Remember stuff $name{$dec} = $name; $use{$dec} = $use; $cname{$dec} = $cname if $cname; &addrgb($dec, $rgb); } foreach $chd2 (@chd2) { # Parse the table entry ($dec, $rgb) = split(/;/, $chd2); # Should have gotten both: die unless $dec; die unless $rgb; if ($rgb{$dec} =~ /^[0-9]/) { warn "$dec $name{$dec}: CHD has $rgb but prints $rgb{$dec}\n" unless $rgb eq $rgb{$dec}; } &addrgb($dec, $rgb); } # # Now walk the DEC chart. foreach $color (@colors) { # Parse the table entry ($dec, $use, $name, $ref) = split(/;/, $color); # Should have gotten these: die "No color number: $color\n" unless $dec; # die "No first use: $color\n" unless $use; die "No color name: $color\n" unless $name; # Check these against CHD values, define anything new. if (defined $use{$dec}) { warn "$dec $name{$dec}: use: CHD has $use{$dec}, not $use\n" unless $use eq $use{$dec}; } if (defined $name{$dec}) { warn "$dec $name{$dec}: name: CHD has $name{$dec}, not $name\n" unless $name eq $name{$dec}; } if (defined $cname{$dec}) { # warn "$dec $name{$dec}: cname: CHD has $cname{$dec}, not $ref\n" # unless $ref eq $cname{$dec}; } $use{$dec} = $use; $cname{$dec} = $ref; # Now, walk the color specs and see if we recognize them. # (Only CHM and MUN color specs are currently recoginzed.) foreach $color (split(/,/, $ref)) { if ($color =~ /^CHM\s+(.*)/) { # Convert CHM color to HSL. @rgb = &chm2rgb($1); #warn "chm2rgb $1: got @rgb\n"; } elsif ($color =~ /^MUN\s+\((.*)\)/) { # Convert MUN color to HSL. @rgb = &mun2rgb($1); #warn "mun2rgb $1: got @rgb\n"; } else { # No useful color choice to add. next; } $rgb = join(",", @rgb); # Got an RGB value, add it to $rgb{$dec}. &addrgb($dec, $rgb) } } #warn "\n"; # # Output results. print "
CHM 4 Color Chart
$4 $ww$bb: $r,$g,$b\n"; } print "
\n"; print "
\n"; print "
\n"; foreach $dec (sort keys %rgb) { print "\n"; print "\n"; } print "
DEC Colors
$dec\n"; print "$use{$dec}\n"; print "$name{$dec}\n"; print "$cname{$dec}\n"; $ocolor = ""; foreach $color (split(/:/, $rgb{$dec})) { next if $color eq $ocolor; $ocolor = $color; next unless $color =~ /^[0-9]/; # $color is an r,g,b triple. ($r, $g, $b) = split(/,/, $color); $v = 255 - int(($r + $g + $b) / 3); $v = 255 unless $v < 64; # For most values of $v, just use white. print "$color\n"; } print "
\n"; # # Print basic color charts to verify the conversion routines. # # Check each color angle for CHM/Ostwald colors. # Don't check saturation algorithm here. if (0) { for ($hue = 1; $hue < 25; $hue++) { ($r, $g, $b) = &chm2rgb($hue); warn "$hue: $r,$g,$b\n"; } } exit 0;