diff -r dcf48ff796c8 -r 925b859e1758 WinWorkstation.st --- a/WinWorkstation.st Fri Nov 18 20:50:35 2016 +0000 +++ b/WinWorkstation.st Fri Nov 18 21:26:33 2016 +0000 @@ -1102,11 +1102,6 @@ extern HANDLE __getHInstance(); -#ifdef xxWIN32THREADS -extern void __suspendAktThread(); -extern void __resumeAktThread(); -#endif - static void __debugEvent__() {} #ifdef DEBUGMASK @@ -1134,15 +1129,8 @@ static int st2RGB(int color, struct gcData *gcData) { - int ir,ig,ib; - - if (gcData) { - if (gcData->bitmapColorBitCount == 1) { - if (color) - return WhitePixel; - else - return BlackPixel; - } + if (gcData && gcData->bitmapColorBitCount == 1) { + return (color ? WhitePixel : BlackPixel); } #ifdef ALWAYSTRUECOLOR return (color & 0xffffff); @@ -1151,9 +1139,9 @@ return 0; } else { if ((__depth == 16) || (__depth == 15)) { - ib = (color & 0x1f) << 3; - ig = ((color >> 5) & 0x3f) << 2; - ir = ((color >> 11) & 0x1f) << 3; + int ib = (color & 0x1f) << 3; + int ig = ((color >> 5) & 0x3f) << 2; + int ir = ((color >> 11) & 0x1f) << 3; ir |= 7; ig |= 3; ib |= 7; @@ -1165,8 +1153,7 @@ } static int -RGB2st(r, g, b) - int r, g, b; +RGB2st(int r, int g, int b) { int ir,ig,ib,id; @@ -1203,8 +1190,7 @@ * return a windows top-window */ static HWND -GetTopParent(hWnd) - HWND hwnd; +GetTopParent(HWND hwnd) { HWND lastParent = hWnd; HWND nextParent; @@ -1247,11 +1233,8 @@ static int _DeleteBrush(HBRUSH br, int lineNr) { - int r; - - if ((br != __whiteBrush) - && (br != __blackBrush)) { - r = DeleteObject(br); + if ((br != __whiteBrush) && (br != __blackBrush)) { + int r = DeleteObject(br); if (r == 0) console_fprintf(stderr, "WinWorkstation [warning]: ERROR in DeleteBrush %x [%d]\n", br, lineNr); @@ -1263,11 +1246,8 @@ static int _DeletePen(HPEN p, int lineNr) { - int r; - - if ((p != __whitePen) - && (p != __blackPen)) { - r = DeleteObject(p); + if ((p != __whitePen) && (p != __blackPen)) { + int r = DeleteObject(p); if (r == 0) console_fprintf(stderr, "WinWorkstation [warning]: ERROR in DeletePen %x [%d]\n", p, lineNr); @@ -1283,8 +1263,7 @@ { int i, r; - if ((p == __whitePen) - || (p == __blackPen)) { + if ((p == __whitePen) || (p == __blackPen)) { return 1; /* not deleted, but OK */ } for (i=0; ihBrush; + HBRUSH hBrush = gcData->hBrush; + if (gcData->save_hBrush) { SelectObject(hDC, gcData->save_hBrush); gcData->save_hBrush = NULL; @@ -1884,7 +1861,7 @@ } static int -unlockEvents() { +unlockEvents(void) { #ifdef LOCK_DEBUG lockCountEvents--; if (lockCountEvents != 0) { @@ -1903,7 +1880,7 @@ static int -initEventqueue() { +initEventqueue(void) { struct queuedEvent *bulk; int i; @@ -2235,7 +2212,6 @@ * if a region is passed in, it is not destroyed. */ - static int __generateExposes(HWND hWnd, HRGN hRgnInOrNull, int msgType, int doClear) { @@ -2382,7 +2358,7 @@ static int -getModifiers() +getModifiers(void) { int modifiers = 0; @@ -4313,16 +4289,13 @@ case WM_COPYDATA: DPRINTFIF(__debug_WM_COPYDATA__ , ("WM_COPYDATA\n")); { - PCOPYDATASTRUCT pCDs; - int dwData; - void *pData; + PCOPYDATASTRUCT pCDs = (PCOPYDATASTRUCT) lParam; + int dwData = pCDs->dwData; + int nBytes = pCDs->cbData; + void *pData = pCDs->lpData; void *pCopiedData; - int nBytes; - - pCDs = (PCOPYDATASTRUCT) lParam; - dwData = pCDs->dwData; - nBytes = pCDs->cbData; - pData = (void *)pCDs->lpData; + + DPRINTFIF(__debug_WM_COPYDATA__ , ("WM_COPYDATA %d %lx\n", nBytes, pData)); /* * because pData is only valid here, copy it out to a malloc'd @@ -4335,7 +4308,7 @@ pCopiedData = NULL; } // (flag, hWnd, message, wParam, arg1, arg2, arg3, arg4, evTime) - enqEvent(0, hWnd, WM_COPYDATA, wParam, (INT)pCopiedData, nBytes, 0, 0, EV_NOTIME); + enqEvent(0, hWnd, WM_COPYDATA, wParam, (INT)pCopiedData, nBytes, dwData, 0, EV_NOTIME); } *pDefault = 0; break; @@ -4562,8 +4535,6 @@ return 0; } -LONG APIENTRY -MainWndProc(HWND hWnd,UINT message,UINT wParam,LONG lParam); static void _USERENTRY dispatchThread(void *arg) @@ -4968,26 +4939,26 @@ return TRUE; } -#define xxUSE_EnumFontFamiliesEx +#ifdef USE_EnumFontFamiliesEx +# define LOGFONTTYPE ENUMLOGFONTEX +#else +# define LOGFONTTYPE LOGFONT +#endif static int CALLBACK -EnumFPTypeFaceProc( lplf, lptm, dwType, lpData ) -#ifdef USE_EnumFontFamiliesEx - ENUMLOGFONTEX *lplf; -#else - LOGFONT *lplf; -#endif - TEXTMETRIC *lptm; - DWORD dwType; - void *lpData; -{ +EnumFPTypeFaceProc( + const LOGFONTTYPE *lplf, /* ptr to of logical-font data */ + const TEXTMETRIC *lptm, /* ptr to physical font data */ + DWORD dwType, /* font type */ + LPARAM lpData /* application supplied data */ +) { OBJ t; volatile OBJ *refToList; OBJ typeFaceList; char *faceNameString; if (lplf) { - refToList = (OBJ*) lpData; + refToList = (OBJ *) lpData; __PROTECT__(*refToList); #ifdef USE_EnumFontFamiliesEx @@ -5238,17 +5209,14 @@ return newArray; } + static int CALLBACK -EnumFontsProc( lplf, lptm, dwType, lpData ) -#ifdef USE_EnumFontFamiliesEx - ENUMLOGFONTEX *lplf; -#else - LOGFONT *lplf; /* ptr to of logical-font data */ -#endif - TEXTMETRIC *lptm; /* ptr to physical font data */ - DWORD dwType; /* font type */ - void *lpData; /* application supplied data */ -{ +EnumFontsProc( + const LOGFONTTYPE *lplf, // ptr to of logical-font data + const TEXTMETRIC *lptm, // ptr to physical font data + DWORD dwType, // font type + LPARAM lpData // application supplied data +) { volatile OBJ *refToList; OBJ list; OBJ infoArray; @@ -5257,7 +5225,7 @@ DPRINTF(("EnumFontsProc\n")); if ( lplf ) { - refToList = (OBJ*) lpData; + refToList = (OBJ *) lpData; __PROTECT__(*refToList); #ifdef USE_EnumFontFamiliesEx @@ -5288,21 +5256,17 @@ }; static int CALLBACK -EnumDisplayMonitorsProc( hMonitor, hdcMonitor, lprcMonitor, lpData ) - HMONITOR hMonitor; - HDC hdcMonitor; - LPRECT lprcMonitor; - struct EnumDisplayMonitorsProcData *lpData; +EnumDisplayMonitorsProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM lpData) { + struct EnumDisplayMonitorsProcData *procData = (struct EnumDisplayMonitorsProcData *)lpData; OBJ mHandle; - __PROTECT__(lpData->hArray); + __PROTECT__(procData->hArray); mHandle = __MKEXTERNALADDRESS(hMonitor); - __UNPROTECT__(lpData->hArray); - - __ArrayInstPtr(lpData->hArray)->a_element[lpData->index] = mHandle; - __STORE(lpData->hArray, mHandle); - lpData->index++; + __UNPROTECT__(procData->hArray); + + __arrayVal(procData->hArray)[procData->index++] = mHandle; + __STORE(procData->hArray, mHandle); return (1); } @@ -5342,14 +5306,12 @@ self initializeStandardColorNames. NativeWidgets := NativeDialogs := NativeFileDialogs := false. - BeepDuration := 200. "milliseconds" - ButtonTranslation := #(1 2 2). "/ SysColorChanges are reported *very* often when exceed is running, "/ but are also needed to update my view colors when the settings change. - "/ I dont know what exceed is doing there ... + "/ I don't know what exceed is doing there ... "/ IgnoreSysColorChanges := true. IgnoreSysColorChanges := false. SystemColorValues := IdentityDictionary new. @@ -5357,18 +5319,20 @@ "/ translation table from ST/X windowType symbol (system-independent) "/ to Windows windowClass (windows-specific). - NativeWidgetClassTable := IdentityDictionary new. - NativeWidgetClassTable at:#ScrollBar put:'SCROLLBAR'. - NativeWidgetClassTable at:#HorizontalScrollBar put:'SCROLLBAR'. - NativeWidgetClassTable at:#VerticalScrollBar put:'SCROLLBAR'. - NativeWidgetClassTable at:#CheckBox put:'BUTTON'. - NativeWidgetClassTable at:#RadioButton put:'BUTTON'. - NativeWidgetClassTable at:#Button put:'BUTTON'. - NativeWidgetClassTable at:#DefaultButton put:'BUTTON'. - NativeWidgetClassTable at:#OwnerDrawButton put:'BUTTON'. - NativeWidgetClassTable at:#ComboBox put:'COMBOBOX'. - NativeWidgetClassTable at:#EditField put:'EDIT'. - NativeWidgetClassTable at:#ListBox put:'LISTBOX'. + NativeWidgetClassTable := IdentityDictionary + withKeysAndValues:#( + ScrollBar SCROLLBAR + HorizontalScrollBar SCROLLBAR + VerticalScrollBar SCROLLBAR + CheckBox BUTTON + RadioButton BUTTON + Button BUTTON + DefaultButton BUTTON + OwnerDrawButton BUTTON + ComboBox COMBOBOX + EditField EDIT + ListBox LISTBOX + ). "Modified: / 24-08-2010 / 16:42:23 / sr" ! @@ -5378,820 +5342,818 @@ "setup standard color names (X-color names)" - StandardColorValues := Dictionary new. - #( - (240 248 255) 'aliceblue' - (250 235 215) 'antiquewhite' - (255 239 219) 'AntiqueWhite1' - (238 223 204) 'AntiqueWhite2' - (205 192 176) 'AntiqueWhite3' - (139 131 120) 'AntiqueWhite4' - (127 255 212) 'aquamarine' - (127 255 212) 'aquamarine1' - (118 238 198) 'aquamarine2' - (102 205 170) 'aquamarine3' - ( 69 139 116) 'aquamarine4' - (240 255 255) 'azure' - (240 255 255) 'azure1' - (224 238 238) 'azure2' - (193 205 205) 'azure3' - (131 139 139) 'azure4' - (245 245 220) 'beige' - (255 228 196) 'bisque' - (255 228 196) 'bisque1' - (238 213 183) 'bisque2' - (205 183 158) 'bisque3' - (139 125 107) 'bisque4' - ( 0 0 0) 'black' - (255 235 205) 'blanchedalmond' - ( 0 0 255) 'blue' - (138 43 226) 'blueviolet' - ( 0 0 255) 'blue1' - ( 0 0 238) 'blue2' - ( 0 0 205) 'blue3' - ( 0 0 139) 'blue4' - (165 42 42) 'brown' - (255 64 64) 'brown1' - (238 59 59) 'brown2' - (205 51 51) 'brown3' - (139 35 35) 'brown4' - (222 184 135) 'burlywood' - (255 211 155) 'burlywood1' - (238 197 145) 'burlywood2' - (205 170 125) 'burlywood3' - (139 115 85) 'burlywood4' - ( 95 158 160) 'cadetblue' - (152 245 255) 'CadetBlue1' - (142 229 238) 'CadetBlue2' - (122 197 205) 'CadetBlue3' - ( 83 134 139) 'CadetBlue4' - (127 255 0) 'chartreuse' - (127 255 0) 'chartreuse1' - (118 238 0) 'chartreuse2' - (102 205 0) 'chartreuse3' - ( 69 139 0) 'chartreuse4' - (210 105 30) 'chocolate' - (255 127 36) 'chocolate1' - (238 118 33) 'chocolate2' - (205 102 29) 'chocolate3' - (139 69 19) 'chocolate4' - (255 127 80) 'coral' - (255 114 86) 'coral1' - (238 106 80) 'coral2' - (205 91 69) 'coral3' - (139 62 47) 'coral4' - (100 149 237) 'cornflowerblue' - (255 248 220) 'cornsilk' - (255 248 220) 'cornsilk1' - (238 232 205) 'cornsilk2' - (205 200 177) 'cornsilk3' - (139 136 120) 'cornsilk4' - ( 0 255 255) 'cyan' - ( 0 255 255) 'cyan1' - ( 0 238 238) 'cyan2' - ( 0 205 205) 'cyan3' - ( 0 139 139) 'cyan4' - ( 0 0 139) 'darkblue' - ( 0 139 139) 'darkcyan' - (184 134 11) 'darkgoldenrod' - (169 169 169) 'darkgray' - ( 0 100 0) 'darkgreen' - (169 169 169) 'darkgrey' - (189 183 107) 'darkkhaki' - (139 0 139) 'darkmagenta' - ( 85 107 47) 'darkolivegreen' - (255 140 0) 'darkorange' - (153 50 204) 'darkorchid' - (139 0 0) 'darkred' - (233 150 122) 'darksalmon' - (143 188 143) 'darkseagreen' - ( 72 61 139) 'darkslateblue' - ( 47 79 79) 'darkslategray' - ( 47 79 79) 'darkslategrey' - ( 0 206 209) 'darkturquoise' - (148 0 211) 'darkviolet' - (255 185 15) 'DarkGoldenrod1' - (238 173 14) 'DarkGoldenrod2' - (205 149 12) 'DarkGoldenrod3' - (139 101 8) 'DarkGoldenrod4' - (202 255 112) 'DarkOliveGreen1' - (188 238 104) 'DarkOliveGreen2' - (162 205 90) 'DarkOliveGreen3' - (110 139 61) 'DarkOliveGreen4' - (255 127 0) 'DarkOrange1' - (238 118 0) 'DarkOrange2' - (205 102 0) 'DarkOrange3' - (139 69 0) 'DarkOrange4' - (191 62 255) 'DarkOrchid1' - (178 58 238) 'DarkOrchid2' - (154 50 205) 'DarkOrchid3' - (104 34 139) 'DarkOrchid4' - (193 255 193) 'DarkSeaGreen1' - (180 238 180) 'DarkSeaGreen2' - (155 205 155) 'DarkSeaGreen3' - (105 139 105) 'DarkSeaGreen4' - (151 255 255) 'DarkSlateGray1' - (141 238 238) 'DarkSlateGray2' - (121 205 205) 'DarkSlateGray3' - ( 82 139 139) 'DarkSlateGray4' - (255 20 147) 'deeppink' - ( 0 191 255) 'deepskyblue' - (255 20 147) 'DeepPink' - (255 20 147) 'DeepPink1' - (238 18 137) 'DeepPink2' - (205 16 118) 'DeepPink3' - (139 10 80) 'DeepPink4' - ( 0 191 255) 'DeepSkyBlue1' - ( 0 178 238) 'DeepSkyBlue2' - ( 0 154 205) 'DeepSkyBlue3' - ( 0 104 139) 'DeepSkyBlue4' - (105 105 105) 'dimgray' - (105 105 105) 'dimgrey' - ( 30 144 255) 'dodgerblue' - ( 30 144 255) 'DodgerBlue1' - ( 28 134 238) 'DodgerBlue2' - ( 24 116 205) 'DodgerBlue3' - ( 16 78 139) 'DodgerBlue4' - (178 34 34) 'firebrick' - (255 48 48) 'firebrick1' - (238 44 44) 'firebrick2' - (205 38 38) 'firebrick3' - (139 26 26) 'firebrick4' - (255 250 240) 'floralwhite' - ( 34 139 34) 'forestgreen' - (220 220 220) 'gainsboro' - (248 248 255) 'ghostwhite' - (255 215 0) 'gold' - (255 215 0) 'gold1' - (238 201 0) 'gold2' - (205 173 0) 'gold3' - (139 117 0) 'gold4' - (218 165 32) 'goldenrod' - (255 193 37) 'goldenrod1' - (238 180 34) 'goldenrod2' - (205 155 29) 'goldenrod3' - (139 105 20) 'goldenrod4' - (192 192 192) 'grey' - ( 0 0 0) 'grey0' - ( 3 3 3) 'grey1' - ( 26 26 26) 'grey10' - (255 255 255) 'grey100' - ( 28 28 28) 'grey11' - ( 31 31 31) 'grey12' - ( 33 33 33) 'grey13' - ( 36 36 36) 'grey14' - ( 38 38 38) 'grey15' - ( 41 41 41) 'grey16' - ( 43 43 43) 'grey17' - ( 46 46 46) 'grey18' - ( 48 48 48) 'grey19' - ( 5 5 5) 'grey2' - ( 51 51 51) 'grey20' - ( 54 54 54) 'grey21' - ( 56 56 56) 'grey22' - ( 59 59 59) 'grey23' - ( 61 61 61) 'grey24' - ( 64 64 64) 'grey25' - ( 66 66 66) 'grey26' - ( 69 69 69) 'grey27' - ( 71 71 71) 'grey28' - ( 74 74 74) 'grey29' - ( 8 8 8) 'grey3' - ( 77 77 77) 'grey30' - ( 79 79 79) 'grey31' - ( 82 82 82) 'grey32' - ( 84 84 84) 'grey33' - ( 87 87 87) 'grey34' - ( 89 89 89) 'grey35' - ( 92 92 92) 'grey36' - ( 94 94 94) 'grey37' - ( 97 97 97) 'grey38' - ( 99 99 99) 'grey39' - ( 10 10 10) 'grey4' - (102 102 102) 'grey40' - (105 105 105) 'grey41' - (107 107 107) 'grey42' - (110 110 110) 'grey43' - (112 112 112) 'grey44' - (115 115 115) 'grey45' - (117 117 117) 'grey46' - (120 120 120) 'grey47' - (122 122 122) 'grey48' - (125 125 125) 'grey49' - ( 13 13 13) 'grey5' - (127 127 127) 'grey50' - (130 130 130) 'grey51' - (133 133 133) 'grey52' - (135 135 135) 'grey53' - (138 138 138) 'grey54' - (140 140 140) 'grey55' - (143 143 143) 'grey56' - (145 145 145) 'grey57' - (148 148 148) 'grey58' - (150 150 150) 'grey59' - ( 15 15 15) 'grey6' - (153 153 153) 'grey60' - (156 156 156) 'grey61' - (158 158 158) 'grey62' - (161 161 161) 'grey63' - (163 163 163) 'grey64' - (166 166 166) 'grey65' - (168 168 168) 'grey66' - (171 171 171) 'grey67' - (173 173 173) 'grey68' - (176 176 176) 'grey69' - ( 18 18 18) 'grey7' - (179 179 179) 'grey70' - (181 181 181) 'grey71' - (184 184 184) 'grey72' - (186 186 186) 'grey73' - (189 189 189) 'grey74' - (191 191 191) 'grey75' - (194 194 194) 'grey76' - (196 196 196) 'grey77' - (199 199 199) 'grey78' - (201 201 201) 'grey79' - ( 20 20 20) 'grey8' - (204 204 204) 'grey80' - (207 207 207) 'grey81' - (209 209 209) 'grey82' - (212 212 212) 'grey83' - (214 214 214) 'grey84' - (217 217 217) 'grey85' - (219 219 219) 'grey86' - (222 222 222) 'grey87' - (224 224 224) 'grey88' - (227 227 227) 'grey89' - ( 23 23 23) 'grey9' - (229 229 229) 'grey90' - (232 232 232) 'grey91' - (235 235 235) 'grey92' - (237 237 237) 'grey93' - (240 240 240) 'grey94' - (242 242 242) 'grey95' - (245 245 245) 'grey96' - (247 247 247) 'grey97' - (250 250 250) 'grey98' - (252 252 252) 'grey99' - - (192 192 192) 'gray' - ( 0 0 0) 'gray0' - ( 3 3 3) 'gray1' - ( 26 26 26) 'gray10' - (255 255 255) 'gray100' - ( 28 28 28) 'gray11' - ( 31 31 31) 'gray12' - ( 33 33 33) 'gray13' - ( 36 36 36) 'gray14' - ( 38 38 38) 'gray15' - ( 41 41 41) 'gray16' - ( 43 43 43) 'gray17' - ( 46 46 46) 'gray18' - ( 48 48 48) 'gray19' - ( 5 5 5) 'gray2' - ( 51 51 51) 'gray20' - ( 54 54 54) 'gray21' - ( 56 56 56) 'gray22' - ( 59 59 59) 'gray23' - ( 61 61 61) 'gray24' - ( 64 64 64) 'gray25' - ( 66 66 66) 'gray26' - ( 69 69 69) 'gray27' - ( 71 71 71) 'gray28' - ( 74 74 74) 'gray29' - ( 8 8 8) 'gray3' - ( 77 77 77) 'gray30' - ( 79 79 79) 'gray31' - ( 82 82 82) 'gray32' - ( 84 84 84) 'gray33' - ( 87 87 87) 'gray34' - ( 89 89 89) 'gray35' - ( 92 92 92) 'gray36' - ( 94 94 94) 'gray37' - ( 97 97 97) 'gray38' - ( 99 99 99) 'gray39' - ( 10 10 10) 'gray4' - (102 102 102) 'gray40' - (105 105 105) 'gray41' - (107 107 107) 'gray42' - (110 110 110) 'gray43' - (112 112 112) 'gray44' - (115 115 115) 'gray45' - (117 117 117) 'gray46' - (120 120 120) 'gray47' - (122 122 122) 'gray48' - (125 125 125) 'gray49' - ( 13 13 13) 'gray5' - (127 127 127) 'gray50' - (130 130 130) 'gray51' - (133 133 133) 'gray52' - (135 135 135) 'gray53' - (138 138 138) 'gray54' - (140 140 140) 'gray55' - (143 143 143) 'gray56' - (145 145 145) 'gray57' - (148 148 148) 'gray58' - (150 150 150) 'gray59' - ( 15 15 15) 'gray6' - (153 153 153) 'gray60' - (156 156 156) 'gray61' - (158 158 158) 'gray62' - (161 161 161) 'gray63' - (163 163 163) 'gray64' - (166 166 166) 'gray65' - (168 168 168) 'gray66' - (171 171 171) 'gray67' - (173 173 173) 'gray68' - (176 176 176) 'gray69' - ( 18 18 18) 'gray7' - (179 179 179) 'gray70' - (181 181 181) 'gray71' - (184 184 184) 'gray72' - (186 186 186) 'gray73' - (189 189 189) 'gray74' - (191 191 191) 'gray75' - (194 194 194) 'gray76' - (196 196 196) 'gray77' - (199 199 199) 'gray78' - (201 201 201) 'gray79' - ( 20 20 20) 'gray8' - (204 204 204) 'gray80' - (207 207 207) 'gray81' - (209 209 209) 'gray82' - (212 212 212) 'gray83' - (214 214 214) 'gray84' - (217 217 217) 'gray85' - (219 219 219) 'gray86' - (222 222 222) 'gray87' - (224 224 224) 'gray88' - (227 227 227) 'gray89' - ( 23 23 23) 'gray9' - (229 229 229) 'gray90' - (232 232 232) 'gray91' - (235 235 235) 'gray92' - (237 237 237) 'gray93' - (240 240 240) 'gray94' - (242 242 242) 'gray95' - (245 245 245) 'gray96' - (247 247 247) 'gray97' - (250 250 250) 'gray98' - (252 252 252) 'gray99' - ( 0 255 0) 'green' - (173 255 47) 'greenyellow' - ( 0 255 0) 'green1' - ( 0 238 0) 'green2' - ( 0 205 0) 'green3' - ( 0 139 0) 'green4' - (240 255 240) 'honeydew' - (240 255 240) 'honeydew1' - (224 238 224) 'honeydew2' - (193 205 193) 'honeydew3' - (131 139 131) 'honeydew4' - (255 105 180) 'hotpink' - (255 110 180) 'HotPink1' - (238 106 167) 'HotPink2' - (205 96 144) 'HotPink3' - (139 58 98) 'HotPink4' - (205 92 92) 'indianred' - (255 106 106) 'IndianRed1' - (238 99 99) 'IndianRed2' - (205 85 85) 'IndianRed3' - (139 58 58) 'IndianRed4' - (255 255 240) 'ivory' - (255 255 240) 'ivory1' - (238 238 224) 'ivory2' - (205 205 193) 'ivory3' - (139 139 131) 'ivory4' - (240 230 140) 'khaki' - (255 246 143) 'khaki1' - (238 230 133) 'khaki2' - (205 198 115) 'khaki3' - (139 134 78) 'khaki4' - (230 230 250) 'lavender' - (255 240 245) 'lavenderblush' - (255 240 245) 'LavenderBlush1' - (238 224 229) 'LavenderBlush2' - (205 193 197) 'LavenderBlush3' - (139 131 134) 'LavenderBlush4' - (124 252 0) 'lawngreen' - (255 250 205) 'lemonchiffon' - (255 250 205) 'LemonChiffon1' - (238 233 191) 'LemonChiffon2' - (205 201 165) 'LemonChiffon3' - (139 137 112) 'LemonChiffon4' - (173 216 230) 'lightblue' - (240 128 128) 'lightcoral' - (224 255 255) 'lightcyan' - (238 221 130) 'lightgoldenrod' - (250 250 210) 'lightgoldenrodyellow' - (211 211 211) 'lightgray' - (144 238 144) 'lightgreen' - (211 211 211) 'lightgrey' - (255 182 193) 'lightpink' - (255 160 122) 'lightsalmon' - ( 32 178 170) 'lightseagreen' - (135 206 250) 'lightskyblue' - (132 112 255) 'lightslateblue' - (119 136 153) 'lightslategray' - (119 136 153) 'lightslategrey' - (176 196 222) 'lightsteelblue' - (255 255 224) 'lightyellow' - (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' - (255 236 139) 'LightGoldenrod1' - (238 220 130) 'LightGoldenrod2' - (205 190 112) 'LightGoldenrod3' - (139 129 76) 'LightGoldenrod4' - (255 174 185) 'LightPink1' - (238 162 173) 'LightPink2' - (205 140 149) 'LightPink3' - (139 95 101) 'LightPink4' - (255 160 122) 'LightSalmon1' - (238 149 114) 'LightSalmon2' - (205 129 98) 'LightSalmon3' - (139 87 66) 'LightSalmon4' - (176 226 255) 'LightSkyBlue1' - (164 211 238) 'LightSkyBlue2' - (141 182 205) 'LightSkyBlue3' - ( 96 123 139) 'LightSkyBlue4' - (202 225 255) 'LightSteelBlue1' - (188 210 238) 'LightSteelBlue2' - (162 181 205) 'LightSteelBlue3' - (110 123 139) 'LightSteelBlue4' - (255 255 224) 'LightYellow1' - (238 238 209) 'LightYellow2' - (205 205 180) 'LightYellow3' - (139 139 122) 'LightYellow4' - ( 50 205 50) 'limegreen' - (250 240 230) 'linen' - (255 0 255) 'magenta' - (255 0 255) 'magenta1' - (238 0 238) 'magenta2' - (205 0 205) 'magenta3' - (139 0 139) 'magenta4' - (176 48 96) 'maroon' - (255 52 179) 'maroon1' - (238 48 167) 'maroon2' - (205 41 144) 'maroon3' - (139 28 98) 'maroon4' - (102 205 170) 'mediumaquamarine' - ( 0 0 205) 'mediumblue' - (186 85 211) 'mediumorchid' - (147 112 219) 'mediumpurple' - ( 60 179 113) 'mediumseagreen' - (123 104 238) 'mediumslateblue' - ( 0 250 154) 'mediumspringgreen' - ( 72 209 204) 'mediumturquoise' - (199 21 133) 'mediumvioletred' - (224 102 255) 'MediumOrchid1' - (209 95 238) 'MediumOrchid2' - (180 82 205) 'MediumOrchid3' - (122 55 139) 'MediumOrchid4' - (171 130 255) 'MediumPurple1' - (159 121 238) 'MediumPurple2' - (137 104 205) 'MediumPurple3' - ( 93 71 139) 'MediumPurple4' - ( 25 25 112) 'midnightblue' - (245 255 250) 'mintcream' - (255 228 225) 'mistyrose' - (255 228 225) 'MistyRose1' - (238 213 210) 'MistyRose2' - (205 183 181) 'MistyRose3' - (139 125 123) 'MistyRose4' - (255 228 181) 'moccasin' - (255 222 173) 'navajowhite' - (255 222 173) 'NavajoWhite1' - (238 207 161) 'NavajoWhite2' - (205 179 139) 'NavajoWhite3' - (139 121 94) 'NavajoWhite4' - ( 0 0 128) 'navy' - ( 0 0 128) 'navyblue' - (253 245 230) 'oldlace' - (107 142 35) 'olivedrab' - (192 255 62) 'OliveDrab1' - (179 238 58) 'OliveDrab2' - (154 205 50) 'OliveDrab3' - (105 139 34) 'OliveDrab4' - (255 165 0) 'orange' - (255 165 0) 'orange1' - (238 154 0) 'orange2' - (205 133 0) 'orange3' - (139 90 0) 'orange4' - (255 69 0) 'orangered' - (255 69 0) 'OrangeRed1' - (238 64 0) 'OrangeRed2' - (205 55 0) 'OrangeRed3' - (139 37 0) 'OrangeRed4' - (218 112 214) 'orchid' - (255 131 250) 'orchid1' - (238 122 233) 'orchid2' - (205 105 201) 'orchid3' - (139 71 137) 'orchid4' - (238 232 170) 'palegoldenrod' - (152 251 152) 'palegreen' - (175 238 238) 'paleturquoise' - (219 112 147) 'palevioletred' - (154 255 154) 'PaleGreen1' - (144 238 144) 'PaleGreen2' - (124 205 124) 'PaleGreen3' - ( 84 139 84) 'PaleGreen4' - (187 255 255) 'PaleTurquoise1' - (174 238 238) 'PaleTurquoise2' - (150 205 205) 'PaleTurquoise3' - (102 139 139) 'PaleTurquoise4' - (255 130 171) 'PaleVioletRed1' - (238 121 159) 'PaleVioletRed2' - (205 104 137) 'PaleVioletRed3' - (139 71 93) 'PaleVioletRed4' - (255 239 213) 'papayawhip' - (255 218 185) 'peachpuff' - (255 218 185) 'PeachPuff1' - (238 203 173) 'PeachPuff2' - (205 175 149) 'PeachPuff3' - (139 119 101) 'PeachPuff4' - (205 133 63) 'peru' - (255 192 203) 'pink' - (255 181 197) 'pink1' - (238 169 184) 'pink2' - (205 145 158) 'pink3' - (139 99 108) 'pink4' - (221 160 221) 'plum' - (255 187 255) 'plum1' - (238 174 238) 'plum2' - (205 150 205) 'plum3' - (139 102 139) 'plum4' - (176 224 230) 'powderblue' - (160 32 240) 'purple' - (155 48 255) 'purple1' - (145 44 238) 'purple2' - (125 38 205) 'purple3' - ( 85 26 139) 'purple4' - (255 0 0) 'red' - (255 0 0) 'red1' - (238 0 0) 'red2' - (205 0 0) 'red3' - (139 0 0) 'red4' - (188 143 143) 'rosybrown' - (255 193 193) 'RosyBrown1' - (238 180 180) 'RosyBrown2' - (205 155 155) 'RosyBrown3' - (139 105 105) 'RosyBrown4' - ( 65 105 225) 'royalblue' - ( 72 118 255) 'RoyalBlue1' - ( 67 110 238) 'RoyalBlue2' - ( 58 95 205) 'RoyalBlue3' - ( 39 64 139) 'RoyalBlue4' - (139 69 19) 'saddlebrown' - (250 128 114) 'salmon' - (255 140 105) 'salmon1' - (238 130 98) 'salmon2' - (205 112 84) 'salmon3' - (139 76 57) 'salmon4' - (244 164 96) 'sandybrown' - ( 255 206 137) 'scoActiveBackground' - ( 43 45 49) 'scoActiveForeground' - ( 254 222 255) 'scoActiveTopShadow' - ( 172 186 204) 'scoAltBackground' - ( 203 203 192) 'scoBackground' - ( 11 0 113) 'scoForeground' - ( 141 178 215) 'scoHighlight' - ( 255 240 248) 'scoTopShadow' - ( 46 139 87) 'seagreen' - ( 84 255 159) 'SeaGreen1' - ( 78 238 148) 'SeaGreen2' - ( 67 205 128) 'SeaGreen3' - ( 46 139 87) 'SeaGreen4' - (255 245 238) 'seashell' - (255 245 238) 'seashell1' - (238 229 222) 'seashell2' - (205 197 191) 'seashell3' - (139 134 130) 'seashell4' - (142 56 142) 'sgi beet' - (197 193 170) 'sgi bright gray' - (197 193 170) 'sgi bright grey' - (113 198 113) 'sgi chartreuse' - ( 85 85 85) 'sgi dark gray' - ( 85 85 85) 'sgi dark grey' - ( 0 0 0) 'sgi gray 0' - (255 255 255) 'sgi gray 100' - ( 30 30 30) 'sgi gray 12' - ( 40 40 40) 'sgi gray 16' - ( 51 51 51) 'sgi gray 20' - ( 61 61 61) 'sgi gray 24' - ( 71 71 71) 'sgi gray 28' - ( 81 81 81) 'sgi gray 32' - ( 91 91 91) 'sgi gray 36' - ( 10 10 10) 'sgi gray 4' - (102 102 102) 'sgi gray 40' - (112 112 112) 'sgi gray 44' - (122 122 122) 'sgi gray 48' - (132 132 132) 'sgi gray 52' - (142 142 142) 'sgi gray 56' - (153 153 153) 'sgi gray 60' - (163 163 163) 'sgi gray 64' - (173 173 173) 'sgi gray 68' - (183 183 183) 'sgi gray 72' - (193 193 193) 'sgi gray 76' - ( 20 20 20) 'sgi gray 8' - (204 204 204) 'sgi gray 80' - (214 214 214) 'sgi gray 84' - (224 224 224) 'sgi gray 88' - (234 234 234) 'sgi gray 92' - (244 244 244) 'sgi gray 96' - ( 0 0 0) 'sgi grey 0' - (255 255 255) 'sgi grey 100' - ( 30 30 30) 'sgi grey 12' - ( 40 40 40) 'sgi grey 16' - ( 51 51 51) 'sgi grey 20' - ( 61 61 61) 'sgi grey 24' - ( 71 71 71) 'sgi grey 28' - ( 81 81 81) 'sgi grey 32' - ( 91 91 91) 'sgi grey 36' - ( 10 10 10) 'sgi grey 4' - (102 102 102) 'sgi grey 40' - (112 112 112) 'sgi grey 44' - (122 122 122) 'sgi grey 48' - (132 132 132) 'sgi grey 52' - (142 142 142) 'sgi grey 56' - (153 153 153) 'sgi grey 60' - (163 163 163) 'sgi grey 64' - (173 173 173) 'sgi grey 68' - (183 183 183) 'sgi grey 72' - (193 193 193) 'sgi grey 76' - ( 20 20 20) 'sgi grey 8' - (204 204 204) 'sgi grey 80' - (214 214 214) 'sgi grey 84' - (224 224 224) 'sgi grey 88' - (234 234 234) 'sgi grey 92' - (244 244 244) 'sgi grey 96' - (125 158 192) 'sgi light blue' - (170 170 170) 'sgi light gray' - (170 170 170) 'sgi light grey' - (132 132 132) 'sgi medium gray' - (132 132 132) 'sgi medium grey' - (142 142 56) 'sgi olive drab' - (198 113 113) 'sgi salmon' - (113 113 198) 'sgi slate blue' - ( 56 142 142) 'sgi teal' - ( 40 40 40) 'sgi very dark gray' - ( 40 40 40) 'sgi very dark grey' - (214 214 214) 'sgi very light gray' - (214 214 214) 'sgi very light grey' - (142 56 142) 'SGIBeet' - (197 193 170) 'SGIBrightGray' - (197 193 170) 'SGIBrightGrey' - (113 198 113) 'SGIChartreuse' - ( 85 85 85) 'SGIDarkGray' - ( 85 85 85) 'SGIDarkGrey' - ( 0 0 0) 'SGIGray0' - (255 255 255) 'SGIGray100' - ( 30 30 30) 'SGIGray12' - ( 40 40 40) 'SGIGray16' - ( 51 51 51) 'SGIGray20' - ( 61 61 61) 'SGIGray24' - ( 71 71 71) 'SGIGray28' - ( 81 81 81) 'SGIGray32' - ( 91 91 91) 'SGIGray36' - ( 10 10 10) 'SGIGray4' - (102 102 102) 'SGIGray40' - (112 112 112) 'SGIGray44' - (122 122 122) 'SGIGray48' - (132 132 132) 'SGIGray52' - (142 142 142) 'SGIGray56' - (153 153 153) 'SGIGray60' - (163 163 163) 'SGIGray64' - (173 173 173) 'SGIGray68' - (183 183 183) 'SGIGray72' - (193 193 193) 'SGIGray76' - ( 20 20 20) 'SGIGray8' - (204 204 204) 'SGIGray80' - (214 214 214) 'SGIGray84' - (224 224 224) 'SGIGray88' - (234 234 234) 'SGIGray92' - (244 244 244) 'SGIGray96' - ( 0 0 0) 'SGIGrey0' - (255 255 255) 'SGIGrey100' - ( 30 30 30) 'SGIGrey12' - ( 40 40 40) 'SGIGrey16' - ( 51 51 51) 'SGIGrey20' - ( 61 61 61) 'SGIGrey24' - ( 71 71 71) 'SGIGrey28' - ( 81 81 81) 'SGIGrey32' - ( 91 91 91) 'SGIGrey36' - ( 10 10 10) 'SGIGrey4' - (102 102 102) 'SGIGrey40' - (112 112 112) 'SGIGrey44' - (122 122 122) 'SGIGrey48' - (132 132 132) 'SGIGrey52' - (142 142 142) 'SGIGrey56' - (153 153 153) 'SGIGrey60' - (163 163 163) 'SGIGrey64' - (173 173 173) 'SGIGrey68' - (183 183 183) 'SGIGrey72' - (193 193 193) 'SGIGrey76' - ( 20 20 20) 'SGIGrey8' - (204 204 204) 'SGIGrey80' - (214 214 214) 'SGIGrey84' - (224 224 224) 'SGIGrey88' - (234 234 234) 'SGIGrey92' - (244 244 244) 'SGIGrey96' - (125 158 192) 'SGILightBlue' - (170 170 170) 'SGILightGray' - (170 170 170) 'SGILightGrey' - (132 132 132) 'SGIMediumGray' - (132 132 132) 'SGIMediumGrey' - (142 142 56) 'SGIOliveDrab' - (198 113 113) 'SGISalmon' - (113 113 198) 'SGISlateBlue' - ( 56 142 142) 'SGITeal' - ( 40 40 40) 'SGIVeryDarkGray' - ( 40 40 40) 'SGIVeryDarkGrey' - (214 214 214) 'SGIVeryLightGray' - (214 214 214) 'SGIVeryLightGrey' - (160 82 45) 'sienna' - (255 130 71) 'sienna1' - (238 121 66) 'sienna2' - (205 104 57) 'sienna3' - (139 71 38) 'sienna4' - (135 206 235) 'skyblue' - (135 206 255) 'SkyBlue1' - (126 192 238) 'SkyBlue2' - (108 166 205) 'SkyBlue3' - ( 74 112 139) 'SkyBlue4' - (112 128 144) 'slategray' - (112 128 144) 'slategrey' - (106 90 205) 'slateblue' - (131 111 255) 'SlateBlue1' - (122 103 238) 'SlateBlue2' - (105 89 205) 'SlateBlue3' - ( 71 60 139) 'SlateBlue4' - (198 226 255) 'SlateGray1' - (185 211 238) 'SlateGray2' - (159 182 205) 'SlateGray3' - (108 123 139) 'SlateGray4' - (255 250 250) 'snow' - (255 250 250) 'snow1' - (238 233 233) 'snow2' - (205 201 201) 'snow3' - (139 137 137) 'snow4' - ( 0 255 127) 'springgreen' - ( 0 255 127) 'SpringGreen1' - ( 0 238 118) 'SpringGreen2' - ( 0 205 102) 'SpringGreen3' - ( 0 139 69) 'SpringGreen4' - ( 70 130 180) 'steelblue' - ( 99 184 255) 'SteelBlue1' - ( 92 172 238) 'SteelBlue2' - ( 79 148 205) 'SteelBlue3' - ( 54 100 139) 'SteelBlue4' - (210 180 140) 'tan' - (255 165 79) 'tan1' - (238 154 73) 'tan2' - (205 133 63) 'tan3' - (139 90 43) 'tan4' - (216 191 216) 'thistle' - (255 225 255) 'thistle1' - (238 210 238) 'thistle2' - (205 181 205) 'thistle3' - (139 123 139) 'thistle4' - (255 99 71) 'tomato' - (255 99 71) 'tomato1' - (238 92 66) 'tomato2' - (205 79 57) 'tomato3' - (139 54 38) 'tomato4' - ( 64 224 208) 'turquoise' - ( 0 245 255) 'turquoise1' - ( 0 229 238) 'turquoise2' - ( 0 197 205) 'turquoise3' - ( 0 134 139) 'turquoise4' - (238 130 238) 'violet' - (208 32 144) 'violetred' - (255 62 150) 'VioletRed1' - (238 58 140) 'VioletRed2' - (205 50 120) 'VioletRed3' - (139 34 82) 'VioletRed4' - (245 222 179) 'wheat' - (255 231 186) 'wheat1' - (238 216 174) 'wheat2' - (205 186 150) 'wheat3' - (139 126 102) 'wheat4' - (255 255 255) 'white' - (245 245 245) 'whitesmoke' - (255 255 0) 'yellow' - (154 205 50) 'yellowgreen' - (255 255 0) 'yellow1' - (238 238 0) 'yellow2' - (205 205 0) 'yellow3' - (139 139 0) 'yellow4' - ) pairWiseDo:[ :value :name | - StandardColorValues at:name put:value - ]. + StandardColorValues := Dictionary + withKeysAndValues:#( + 'aliceblue' (240 248 255) + 'antiquewhite' (250 235 215) + 'AntiqueWhite1' (255 239 219) + 'AntiqueWhite2' (238 223 204) + 'AntiqueWhite3' (205 192 176) + 'AntiqueWhite4' (139 131 120) + 'aquamarine' (127 255 212) + 'aquamarine1' (127 255 212) + 'aquamarine2' (118 238 198) + 'aquamarine3' (102 205 170) + 'aquamarine4' (69 139 116) + 'azure' (240 255 255) + 'azure1' (240 255 255) + 'azure2' (224 238 238) + 'azure3' (193 205 205) + 'azure4' (131 139 139) + 'beige' (245 245 220) + 'bisque' (255 228 196) + 'bisque1' (255 228 196) + 'bisque2' (238 213 183) + 'bisque3' (205 183 158) + 'bisque4' (139 125 107) + 'black' (0 0 0) + 'blanchedalmond' (255 235 205) + 'blue' (0 0 255) + 'blueviolet' (138 43 226) + 'blue1' (0 0 255) + 'blue2' (0 0 238) + 'blue3' (0 0 205) + 'blue4' (0 0 139) + 'brown' (165 42 42) + 'brown1' (255 64 64) + 'brown2' (238 59 59) + 'brown3' (205 51 51) + 'brown4' (139 35 35) + 'burlywood' (222 184 135) + 'burlywood1' (255 211 155) + 'burlywood2' (238 197 145) + 'burlywood3' (205 170 125) + 'burlywood4' (139 115 85) + 'cadetblue' (95 158 160) + 'CadetBlue1' (152 245 255) + 'CadetBlue2' (142 229 238) + 'CadetBlue3' (122 197 205) + 'CadetBlue4' (83 134 139) + 'chartreuse' (127 255 0) + 'chartreuse1' (127 255 0) + 'chartreuse2' (118 238 0) + 'chartreuse3' (102 205 0) + 'chartreuse4' (69 139 0) + 'chocolate' (210 105 30) + 'chocolate1' (255 127 36) + 'chocolate2' (238 118 33) + 'chocolate3' (205 102 29) + 'chocolate4' (139 69 19) + 'coral' (255 127 80) + 'coral1' (255 114 86) + 'coral2' (238 106 80) + 'coral3' (205 91 69) + 'coral4' (139 62 47) + 'cornflowerblue' (100 149 237) + 'cornsilk' (255 248 220) + 'cornsilk1' (255 248 220) + 'cornsilk2' (238 232 205) + 'cornsilk3' (205 200 177) + 'cornsilk4' (139 136 120) + 'cyan' (0 255 255) + 'cyan1' (0 255 255) + 'cyan2' (0 238 238) + 'cyan3' (0 205 205) + 'cyan4' (0 139 139) + 'darkblue' (0 0 139) + 'darkcyan' (0 139 139) + 'darkgoldenrod' (184 134 11) + 'darkgray' (169 169 169) + 'darkgreen' (0 100 0) + 'darkgrey' (169 169 169) + 'darkkhaki' (189 183 107) + 'darkmagenta' (139 0 139) + 'darkolivegreen' (85 107 47) + 'darkorange' (255 140 0) + 'darkorchid' (153 50 204) + 'darkred' (139 0 0) + 'darksalmon' (233 150 122) + 'darkseagreen' (143 188 143) + 'darkslateblue' (72 61 139) + 'darkslategray' (47 79 79) + 'darkslategrey' (47 79 79) + 'darkturquoise' (0 206 209) + 'darkviolet' (148 0 211) + 'DarkGoldenrod1' (255 185 15) + 'DarkGoldenrod2' (238 173 14) + 'DarkGoldenrod3' (205 149 12) + 'DarkGoldenrod4' (139 101 8) + 'DarkOliveGreen1' (202 255 112) + 'DarkOliveGreen2' (188 238 104) + 'DarkOliveGreen3' (162 205 90) + 'DarkOliveGreen4' (110 139 61) + 'DarkOrange1' (255 127 0) + 'DarkOrange2' (238 118 0) + 'DarkOrange3' (205 102 0) + 'DarkOrange4' (139 69 0) + 'DarkOrchid1' (191 62 255) + 'DarkOrchid2' (178 58 238) + 'DarkOrchid3' (154 50 205) + 'DarkOrchid4' (104 34 139) + 'DarkSeaGreen1' (193 255 193) + 'DarkSeaGreen2' (180 238 180) + 'DarkSeaGreen3' (155 205 155) + 'DarkSeaGreen4' (105 139 105) + 'DarkSlateGray1' (151 255 255) + 'DarkSlateGray2' (141 238 238) + 'DarkSlateGray3' (121 205 205) + 'DarkSlateGray4' (82 139 139) + 'deeppink' (255 20 147) + 'deepskyblue' (0 191 255) + 'DeepPink' (255 20 147) + 'DeepPink1' (255 20 147) + 'DeepPink2' (238 18 137) + 'DeepPink3' (205 16 118) + 'DeepPink4' (139 10 80) + 'DeepSkyBlue1' (0 191 255) + 'DeepSkyBlue2' (0 178 238) + 'DeepSkyBlue3' (0 154 205) + 'DeepSkyBlue4' (0 104 139) + 'dimgray' (105 105 105) + 'dimgrey' (105 105 105) + 'dodgerblue' (30 144 255) + 'DodgerBlue1' (30 144 255) + 'DodgerBlue2' (28 134 238) + 'DodgerBlue3' (24 116 205) + 'DodgerBlue4' (16 78 139) + 'firebrick' (178 34 34) + 'firebrick1' (255 48 48) + 'firebrick2' (238 44 44) + 'firebrick3' (205 38 38) + 'firebrick4' (139 26 26) + 'floralwhite' (255 250 240) + 'forestgreen' (34 139 34) + 'gainsboro' (220 220 220) + 'ghostwhite' (248 248 255) + 'gold' (255 215 0) + 'gold1' (255 215 0) + 'gold2' (238 201 0) + 'gold3' (205 173 0) + 'gold4' (139 117 0) + 'goldenrod' (218 165 32) + 'goldenrod1' (255 193 37) + 'goldenrod2' (238 180 34) + 'goldenrod3' (205 155 29) + 'goldenrod4' (139 105 20) + 'grey' (192 192 192) + 'grey0' (0 0 0) + 'grey1' (3 3 3) + 'grey10' (26 26 26) + 'grey100' (255 255 255) + 'grey11' (28 28 28) + 'grey12' (31 31 31) + 'grey13' (33 33 33) + 'grey14' (36 36 36) + 'grey15' (38 38 38) + 'grey16' (41 41 41) + 'grey17' (43 43 43) + 'grey18' (46 46 46) + 'grey19' (48 48 48) + 'grey2' (5 5 5) + 'grey20' (51 51 51) + 'grey21' (54 54 54) + 'grey22' (56 56 56) + 'grey23' (59 59 59) + 'grey24' (61 61 61) + 'grey25' (64 64 64) + 'grey26' (66 66 66) + 'grey27' (69 69 69) + 'grey28' (71 71 71) + 'grey29' (74 74 74) + 'grey3' (8 8 8) + 'grey30' (77 77 77) + 'grey31' (79 79 79) + 'grey32' (82 82 82) + 'grey33' (84 84 84) + 'grey34' (87 87 87) + 'grey35' (89 89 89) + 'grey36' (92 92 92) + 'grey37' (94 94 94) + 'grey38' (97 97 97) + 'grey39' (99 99 99) + 'grey4' (10 10 10) + 'grey40' (102 102 102) + 'grey41' (105 105 105) + 'grey42' (107 107 107) + 'grey43' (110 110 110) + 'grey44' (112 112 112) + 'grey45' (115 115 115) + 'grey46' (117 117 117) + 'grey47' (120 120 120) + 'grey48' (122 122 122) + 'grey49' (125 125 125) + 'grey5' (13 13 13) + 'grey50' (127 127 127) + 'grey51' (130 130 130) + 'grey52' (133 133 133) + 'grey53' (135 135 135) + 'grey54' (138 138 138) + 'grey55' (140 140 140) + 'grey56' (143 143 143) + 'grey57' (145 145 145) + 'grey58' (148 148 148) + 'grey59' (150 150 150) + 'grey6' (15 15 15) + 'grey60' (153 153 153) + 'grey61' (156 156 156) + 'grey62' (158 158 158) + 'grey63' (161 161 161) + 'grey64' (163 163 163) + 'grey65' (166 166 166) + 'grey66' (168 168 168) + 'grey67' (171 171 171) + 'grey68' (173 173 173) + 'grey69' (176 176 176) + 'grey7' (18 18 18) + 'grey70' (179 179 179) + 'grey71' (181 181 181) + 'grey72' (184 184 184) + 'grey73' (186 186 186) + 'grey74' (189 189 189) + 'grey75' (191 191 191) + 'grey76' (194 194 194) + 'grey77' (196 196 196) + 'grey78' (199 199 199) + 'grey79' (201 201 201) + 'grey8' (20 20 20) + 'grey80' (204 204 204) + 'grey81' (207 207 207) + 'grey82' (209 209 209) + 'grey83' (212 212 212) + 'grey84' (214 214 214) + 'grey85' (217 217 217) + 'grey86' (219 219 219) + 'grey87' (222 222 222) + 'grey88' (224 224 224) + 'grey89' (227 227 227) + 'grey9' (23 23 23) + 'grey90' (229 229 229) + 'grey91' (232 232 232) + 'grey92' (235 235 235) + 'grey93' (237 237 237) + 'grey94' (240 240 240) + 'grey95' (242 242 242) + 'grey96' (245 245 245) + 'grey97' (247 247 247) + 'grey98' (250 250 250) + 'grey99' (252 252 252) + 'gray' (192 192 192) + 'gray0' (0 0 0) + 'gray1' (3 3 3) + 'gray10' (26 26 26) + 'gray100' (255 255 255) + 'gray11' (28 28 28) + 'gray12' (31 31 31) + 'gray13' (33 33 33) + 'gray14' (36 36 36) + 'gray15' (38 38 38) + 'gray16' (41 41 41) + 'gray17' (43 43 43) + 'gray18' (46 46 46) + 'gray19' (48 48 48) + 'gray2' (5 5 5) + 'gray20' (51 51 51) + 'gray21' (54 54 54) + 'gray22' (56 56 56) + 'gray23' (59 59 59) + 'gray24' (61 61 61) + 'gray25' (64 64 64) + 'gray26' (66 66 66) + 'gray27' (69 69 69) + 'gray28' (71 71 71) + 'gray29' (74 74 74) + 'gray3' (8 8 8) + 'gray30' (77 77 77) + 'gray31' (79 79 79) + 'gray32' (82 82 82) + 'gray33' (84 84 84) + 'gray34' (87 87 87) + 'gray35' (89 89 89) + 'gray36' (92 92 92) + 'gray37' (94 94 94) + 'gray38' (97 97 97) + 'gray39' (99 99 99) + 'gray4' (10 10 10) + 'gray40' (102 102 102) + 'gray41' (105 105 105) + 'gray42' (107 107 107) + 'gray43' (110 110 110) + 'gray44' (112 112 112) + 'gray45' (115 115 115) + 'gray46' (117 117 117) + 'gray47' (120 120 120) + 'gray48' (122 122 122) + 'gray49' (125 125 125) + 'gray5' (13 13 13) + 'gray50' (127 127 127) + 'gray51' (130 130 130) + 'gray52' (133 133 133) + 'gray53' (135 135 135) + 'gray54' (138 138 138) + 'gray55' (140 140 140) + 'gray56' (143 143 143) + 'gray57' (145 145 145) + 'gray58' (148 148 148) + 'gray59' (150 150 150) + 'gray6' (15 15 15) + 'gray60' (153 153 153) + 'gray61' (156 156 156) + 'gray62' (158 158 158) + 'gray63' (161 161 161) + 'gray64' (163 163 163) + 'gray65' (166 166 166) + 'gray66' (168 168 168) + 'gray67' (171 171 171) + 'gray68' (173 173 173) + 'gray69' (176 176 176) + 'gray7' (18 18 18) + 'gray70' (179 179 179) + 'gray71' (181 181 181) + 'gray72' (184 184 184) + 'gray73' (186 186 186) + 'gray74' (189 189 189) + 'gray75' (191 191 191) + 'gray76' (194 194 194) + 'gray77' (196 196 196) + 'gray78' (199 199 199) + 'gray79' (201 201 201) + 'gray8' (20 20 20) + 'gray80' (204 204 204) + 'gray81' (207 207 207) + 'gray82' (209 209 209) + 'gray83' (212 212 212) + 'gray84' (214 214 214) + 'gray85' (217 217 217) + 'gray86' (219 219 219) + 'gray87' (222 222 222) + 'gray88' (224 224 224) + 'gray89' (227 227 227) + 'gray9' (23 23 23) + 'gray90' (229 229 229) + 'gray91' (232 232 232) + 'gray92' (235 235 235) + 'gray93' (237 237 237) + 'gray94' (240 240 240) + 'gray95' (242 242 242) + 'gray96' (245 245 245) + 'gray97' (247 247 247) + 'gray98' (250 250 250) + 'gray99' (252 252 252) + 'green' (0 255 0) + 'greenyellow' (173 255 47) + 'green1' (0 255 0) + 'green2' (0 238 0) + 'green3' (0 205 0) + 'green4' (0 139 0) + 'honeydew' (240 255 240) + 'honeydew1' (240 255 240) + 'honeydew2' (224 238 224) + 'honeydew3' (193 205 193) + 'honeydew4' (131 139 131) + 'hotpink' (255 105 180) + 'HotPink1' (255 110 180) + 'HotPink2' (238 106 167) + 'HotPink3' (205 96 144) + 'HotPink4' (139 58 98) + 'indianred' (205 92 92) + 'IndianRed1' (255 106 106) + 'IndianRed2' (238 99 99) + 'IndianRed3' (205 85 85) + 'IndianRed4' (139 58 58) + 'ivory' (255 255 240) + 'ivory1' (255 255 240) + 'ivory2' (238 238 224) + 'ivory3' (205 205 193) + 'ivory4' (139 139 131) + 'khaki' (240 230 140) + 'khaki1' (255 246 143) + 'khaki2' (238 230 133) + 'khaki3' (205 198 115) + 'khaki4' (139 134 78) + 'lavender' (230 230 250) + 'lavenderblush' (255 240 245) + 'LavenderBlush1' (255 240 245) + 'LavenderBlush2' (238 224 229) + 'LavenderBlush3' (205 193 197) + 'LavenderBlush4' (139 131 134) + 'lawngreen' (124 252 0) + 'lemonchiffon' (255 250 205) + 'LemonChiffon1' (255 250 205) + 'LemonChiffon2' (238 233 191) + 'LemonChiffon3' (205 201 165) + 'LemonChiffon4' (139 137 112) + 'lightblue' (173 216 230) + 'lightcoral' (240 128 128) + 'lightcyan' (224 255 255) + 'lightgoldenrod' (238 221 130) + 'lightgoldenrodyellow' (250 250 210) + 'lightgray' (211 211 211) + 'lightgreen' (144 238 144) + 'lightgrey' (211 211 211) + 'lightpink' (255 182 193) + 'lightsalmon' (255 160 122) + 'lightseagreen' (32 178 170) + 'lightskyblue' (135 206 250) + 'lightslateblue' (132 112 255) + 'lightslategray' (119 136 153) + 'lightslategrey' (119 136 153) + 'lightsteelblue' (176 196 222) + 'lightyellow' (255 255 224) + 'LightBlue1' (191 239 255) + 'LightBlue2' (178 223 238) + 'LightBlue3' (154 192 205) + 'LightBlue4' (104 131 139) + 'LightCyan1' (224 255 255) + 'LightCyan2' (209 238 238) + 'LightCyan3' (180 205 205) + 'LightCyan4' (122 139 139) + 'LightGoldenrod1' (255 236 139) + 'LightGoldenrod2' (238 220 130) + 'LightGoldenrod3' (205 190 112) + 'LightGoldenrod4' (139 129 76) + 'LightPink1' (255 174 185) + 'LightPink2' (238 162 173) + 'LightPink3' (205 140 149) + 'LightPink4' (139 95 101) + 'LightSalmon1' (255 160 122) + 'LightSalmon2' (238 149 114) + 'LightSalmon3' (205 129 98) + 'LightSalmon4' (139 87 66) + 'LightSkyBlue1' (176 226 255) + 'LightSkyBlue2' (164 211 238) + 'LightSkyBlue3' (141 182 205) + 'LightSkyBlue4' (96 123 139) + 'LightSteelBlue1' (202 225 255) + 'LightSteelBlue2' (188 210 238) + 'LightSteelBlue3' (162 181 205) + 'LightSteelBlue4' (110 123 139) + 'LightYellow1' (255 255 224) + 'LightYellow2' (238 238 209) + 'LightYellow3' (205 205 180) + 'LightYellow4' (139 139 122) + 'limegreen' (50 205 50) + 'linen' (250 240 230) + 'magenta' (255 0 255) + 'magenta1' (255 0 255) + 'magenta2' (238 0 238) + 'magenta3' (205 0 205) + 'magenta4' (139 0 139) + 'maroon' (176 48 96) + 'maroon1' (255 52 179) + 'maroon2' (238 48 167) + 'maroon3' (205 41 144) + 'maroon4' (139 28 98) + 'mediumaquamarine' (102 205 170) + 'mediumblue' (0 0 205) + 'mediumorchid' (186 85 211) + 'mediumpurple' (147 112 219) + 'mediumseagreen' (60 179 113) + 'mediumslateblue' (123 104 238) + 'mediumspringgreen' (0 250 154) + 'mediumturquoise' (72 209 204) + 'mediumvioletred' (199 21 133) + 'MediumOrchid1' (224 102 255) + 'MediumOrchid2' (209 95 238) + 'MediumOrchid3' (180 82 205) + 'MediumOrchid4' (122 55 139) + 'MediumPurple1' (171 130 255) + 'MediumPurple2' (159 121 238) + 'MediumPurple3' (137 104 205) + 'MediumPurple4' (93 71 139) + 'midnightblue' (25 25 112) + 'mintcream' (245 255 250) + 'mistyrose' (255 228 225) + 'MistyRose1' (255 228 225) + 'MistyRose2' (238 213 210) + 'MistyRose3' (205 183 181) + 'MistyRose4' (139 125 123) + 'moccasin' (255 228 181) + 'navajowhite' (255 222 173) + 'NavajoWhite1' (255 222 173) + 'NavajoWhite2' (238 207 161) + 'NavajoWhite3' (205 179 139) + 'NavajoWhite4' (139 121 94) + 'navy' (0 0 128) + 'navyblue' (0 0 128) + 'oldlace' (253 245 230) + 'olivedrab' (107 142 35) + 'OliveDrab1' (192 255 62) + 'OliveDrab2' (179 238 58) + 'OliveDrab3' (154 205 50) + 'OliveDrab4' (105 139 34) + 'orange' (255 165 0) + 'orange1' (255 165 0) + 'orange2' (238 154 0) + 'orange3' (205 133 0) + 'orange4' (139 90 0) + 'orangered' (255 69 0) + 'OrangeRed1' (255 69 0) + 'OrangeRed2' (238 64 0) + 'OrangeRed3' (205 55 0) + 'OrangeRed4' (139 37 0) + 'orchid' (218 112 214) + 'orchid1' (255 131 250) + 'orchid2' (238 122 233) + 'orchid3' (205 105 201) + 'orchid4' (139 71 137) + 'palegoldenrod' (238 232 170) + 'palegreen' (152 251 152) + 'paleturquoise' (175 238 238) + 'palevioletred' (219 112 147) + 'PaleGreen1' (154 255 154) + 'PaleGreen2' (144 238 144) + 'PaleGreen3' (124 205 124) + 'PaleGreen4' (84 139 84) + 'PaleTurquoise1' (187 255 255) + 'PaleTurquoise2' (174 238 238) + 'PaleTurquoise3' (150 205 205) + 'PaleTurquoise4' (102 139 139) + 'PaleVioletRed1' (255 130 171) + 'PaleVioletRed2' (238 121 159) + 'PaleVioletRed3' (205 104 137) + 'PaleVioletRed4' (139 71 93) + 'papayawhip' (255 239 213) + 'peachpuff' (255 218 185) + 'PeachPuff1' (255 218 185) + 'PeachPuff2' (238 203 173) + 'PeachPuff3' (205 175 149) + 'PeachPuff4' (139 119 101) + 'peru' (205 133 63) + 'pink' (255 192 203) + 'pink1' (255 181 197) + 'pink2' (238 169 184) + 'pink3' (205 145 158) + 'pink4' (139 99 108) + 'plum' (221 160 221) + 'plum1' (255 187 255) + 'plum2' (238 174 238) + 'plum3' (205 150 205) + 'plum4' (139 102 139) + 'powderblue' (176 224 230) + 'purple' (160 32 240) + 'purple1' (155 48 255) + 'purple2' (145 44 238) + 'purple3' (125 38 205) + 'purple4' (85 26 139) + 'red' (255 0 0) + 'red1' (255 0 0) + 'red2' (238 0 0) + 'red3' (205 0 0) + 'red4' (139 0 0) + 'rosybrown' (188 143 143) + 'RosyBrown1' (255 193 193) + 'RosyBrown2' (238 180 180) + 'RosyBrown3' (205 155 155) + 'RosyBrown4' (139 105 105) + 'royalblue' (65 105 225) + 'RoyalBlue1' (72 118 255) + 'RoyalBlue2' (67 110 238) + 'RoyalBlue3' (58 95 205) + 'RoyalBlue4' (39 64 139) + 'saddlebrown' (139 69 19) + 'salmon' (250 128 114) + 'salmon1' (255 140 105) + 'salmon2' (238 130 98) + 'salmon3' (205 112 84) + 'salmon4' (139 76 57) + 'sandybrown' (244 164 96) + 'scoActiveBackground' (255 206 137) + 'scoActiveForeground' (43 45 49) + 'scoActiveTopShadow' (254 222 255) + 'scoAltBackground' (172 186 204) + 'scoBackground' (203 203 192) + 'scoForeground' (11 0 113) + 'scoHighlight' (141 178 215) + 'scoTopShadow' (255 240 248) + 'seagreen' (46 139 87) + 'SeaGreen1' (84 255 159) + 'SeaGreen2' (78 238 148) + 'SeaGreen3' (67 205 128) + 'SeaGreen4' (46 139 87) + 'seashell' (255 245 238) + 'seashell1' (255 245 238) + 'seashell2' (238 229 222) + 'seashell3' (205 197 191) + 'seashell4' (139 134 130) + 'sgi beet' (142 56 142) + 'sgi bright gray' (197 193 170) + 'sgi bright grey' (197 193 170) + 'sgi chartreuse' (113 198 113) + 'sgi dark gray' (85 85 85) + 'sgi dark grey' (85 85 85) + 'sgi gray 0' (0 0 0) + 'sgi gray 100' (255 255 255) + 'sgi gray 12' (30 30 30) + 'sgi gray 16' (40 40 40) + 'sgi gray 20' (51 51 51) + 'sgi gray 24' (61 61 61) + 'sgi gray 28' (71 71 71) + 'sgi gray 32' (81 81 81) + 'sgi gray 36' (91 91 91) + 'sgi gray 4' (10 10 10) + 'sgi gray 40' (102 102 102) + 'sgi gray 44' (112 112 112) + 'sgi gray 48' (122 122 122) + 'sgi gray 52' (132 132 132) + 'sgi gray 56' (142 142 142) + 'sgi gray 60' (153 153 153) + 'sgi gray 64' (163 163 163) + 'sgi gray 68' (173 173 173) + 'sgi gray 72' (183 183 183) + 'sgi gray 76' (193 193 193) + 'sgi gray 8' (20 20 20) + 'sgi gray 80' (204 204 204) + 'sgi gray 84' (214 214 214) + 'sgi gray 88' (224 224 224) + 'sgi gray 92' (234 234 234) + 'sgi gray 96' (244 244 244) + 'sgi grey 0' (0 0 0) + 'sgi grey 100' (255 255 255) + 'sgi grey 12' (30 30 30) + 'sgi grey 16' (40 40 40) + 'sgi grey 20' (51 51 51) + 'sgi grey 24' (61 61 61) + 'sgi grey 28' (71 71 71) + 'sgi grey 32' (81 81 81) + 'sgi grey 36' (91 91 91) + 'sgi grey 4' (10 10 10) + 'sgi grey 40' (102 102 102) + 'sgi grey 44' (112 112 112) + 'sgi grey 48' (122 122 122) + 'sgi grey 52' (132 132 132) + 'sgi grey 56' (142 142 142) + 'sgi grey 60' (153 153 153) + 'sgi grey 64' (163 163 163) + 'sgi grey 68' (173 173 173) + 'sgi grey 72' (183 183 183) + 'sgi grey 76' (193 193 193) + 'sgi grey 8' (20 20 20) + 'sgi grey 80' (204 204 204) + 'sgi grey 84' (214 214 214) + 'sgi grey 88' (224 224 224) + 'sgi grey 92' (234 234 234) + 'sgi grey 96' (244 244 244) + 'sgi light blue' (125 158 192) + 'sgi light gray' (170 170 170) + 'sgi light grey' (170 170 170) + 'sgi medium gray' (132 132 132) + 'sgi medium grey' (132 132 132) + 'sgi olive drab' (142 142 56) + 'sgi salmon' (198 113 113) + 'sgi slate blue' (113 113 198) + 'sgi teal' (56 142 142) + 'sgi very dark gray' (40 40 40) + 'sgi very dark grey' (40 40 40) + 'sgi very light gray' (214 214 214) + 'sgi very light grey' (214 214 214) + 'SGIBeet' (142 56 142) + 'SGIBrightGray' (197 193 170) + 'SGIBrightGrey' (197 193 170) + 'SGIChartreuse' (113 198 113) + 'SGIDarkGray' (85 85 85) + 'SGIDarkGrey' (85 85 85) + 'SGIGray0' (0 0 0) + 'SGIGray100' (255 255 255) + 'SGIGray12' (30 30 30) + 'SGIGray16' (40 40 40) + 'SGIGray20' (51 51 51) + 'SGIGray24' (61 61 61) + 'SGIGray28' (71 71 71) + 'SGIGray32' (81 81 81) + 'SGIGray36' (91 91 91) + 'SGIGray4' (10 10 10) + 'SGIGray40' (102 102 102) + 'SGIGray44' (112 112 112) + 'SGIGray48' (122 122 122) + 'SGIGray52' (132 132 132) + 'SGIGray56' (142 142 142) + 'SGIGray60' (153 153 153) + 'SGIGray64' (163 163 163) + 'SGIGray68' (173 173 173) + 'SGIGray72' (183 183 183) + 'SGIGray76' (193 193 193) + 'SGIGray8' (20 20 20) + 'SGIGray80' (204 204 204) + 'SGIGray84' (214 214 214) + 'SGIGray88' (224 224 224) + 'SGIGray92' (234 234 234) + 'SGIGray96' (244 244 244) + 'SGIGrey0' (0 0 0) + 'SGIGrey100' (255 255 255) + 'SGIGrey12' (30 30 30) + 'SGIGrey16' (40 40 40) + 'SGIGrey20' (51 51 51) + 'SGIGrey24' (61 61 61) + 'SGIGrey28' (71 71 71) + 'SGIGrey32' (81 81 81) + 'SGIGrey36' (91 91 91) + 'SGIGrey4' (10 10 10) + 'SGIGrey40' (102 102 102) + 'SGIGrey44' (112 112 112) + 'SGIGrey48' (122 122 122) + 'SGIGrey52' (132 132 132) + 'SGIGrey56' (142 142 142) + 'SGIGrey60' (153 153 153) + 'SGIGrey64' (163 163 163) + 'SGIGrey68' (173 173 173) + 'SGIGrey72' (183 183 183) + 'SGIGrey76' (193 193 193) + 'SGIGrey8' (20 20 20) + 'SGIGrey80' (204 204 204) + 'SGIGrey84' (214 214 214) + 'SGIGrey88' (224 224 224) + 'SGIGrey92' (234 234 234) + 'SGIGrey96' (244 244 244) + 'SGILightBlue' (125 158 192) + 'SGILightGray' (170 170 170) + 'SGILightGrey' (170 170 170) + 'SGIMediumGray' (132 132 132) + 'SGIMediumGrey' (132 132 132) + 'SGIOliveDrab' (142 142 56) + 'SGISalmon' (198 113 113) + 'SGISlateBlue' (113 113 198) + 'SGITeal' (56 142 142) + 'SGIVeryDarkGray' (40 40 40) + 'SGIVeryDarkGrey' (40 40 40) + 'SGIVeryLightGray' (214 214 214) + 'SGIVeryLightGrey' (214 214 214) + 'sienna' (160 82 45) + 'sienna1' (255 130 71) + 'sienna2' (238 121 66) + 'sienna3' (205 104 57) + 'sienna4' (139 71 38) + 'skyblue' (135 206 235) + 'SkyBlue1' (135 206 255) + 'SkyBlue2' (126 192 238) + 'SkyBlue3' (108 166 205) + 'SkyBlue4' (74 112 139) + 'slategray' (112 128 144) + 'slategrey' (112 128 144) + 'slateblue' (106 90 205) + 'SlateBlue1' (131 111 255) + 'SlateBlue2' (122 103 238) + 'SlateBlue3' (105 89 205) + 'SlateBlue4' (71 60 139) + 'SlateGray1' (198 226 255) + 'SlateGray2' (185 211 238) + 'SlateGray3' (159 182 205) + 'SlateGray4' (108 123 139) + 'snow' (255 250 250) + 'snow1' (255 250 250) + 'snow2' (238 233 233) + 'snow3' (205 201 201) + 'snow4' (139 137 137) + 'springgreen' (0 255 127) + 'SpringGreen1' (0 255 127) + 'SpringGreen2' (0 238 118) + 'SpringGreen3' (0 205 102) + 'SpringGreen4' (0 139 69) + 'steelblue' (70 130 180) + 'SteelBlue1' (99 184 255) + 'SteelBlue2' (92 172 238) + 'SteelBlue3' (79 148 205) + 'SteelBlue4' (54 100 139) + 'tan' (210 180 140) + 'tan1' (255 165 79) + 'tan2' (238 154 73) + 'tan3' (205 133 63) + 'tan4' (139 90 43) + 'thistle' (216 191 216) + 'thistle1' (255 225 255) + 'thistle2' (238 210 238) + 'thistle3' (205 181 205) + 'thistle4' (139 123 139) + 'tomato' (255 99 71) + 'tomato1' (255 99 71) + 'tomato2' (238 92 66) + 'tomato3' (205 79 57) + 'tomato4' (139 54 38) + 'turquoise' (64 224 208) + 'turquoise1' (0 245 255) + 'turquoise2' (0 229 238) + 'turquoise3' (0 197 205) + 'turquoise4' (0 134 139) + 'violet' (238 130 238) + 'violetred' (208 32 144) + 'VioletRed1' (255 62 150) + 'VioletRed2' (238 58 140) + 'VioletRed3' (205 50 120) + 'VioletRed4' (139 34 82) + 'wheat' (245 222 179) + 'wheat1' (255 231 186) + 'wheat2' (238 216 174) + 'wheat3' (205 186 150) + 'wheat4' (139 126 102) + 'white' (255 255 255) + 'whitesmoke' (245 245 245) + 'yellow' (255 255 0) + 'yellowgreen' (154 205 50) + 'yellow1' (255 255 0) + 'yellow2' (238 238 0) + 'yellow3' (205 205 0) + 'yellow4' (139 139 0) + ). + " WinWorkstation initializeStandardColorNames " @@ -6294,130 +6256,130 @@ msg = 'WM_ALL' ifTrue:[ %{ - __debug_WM_ALL__ = (aBoolean == true) ? 1 : 0; + __debug_WM_ALL__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_USER' ifTrue:[ %{ - __debug_WM_MOUSEENTER__ = (aBoolean == true) ? 1 : 0; - __debug_WM_MOUSELEAVE__ = (aBoolean == true) ? 1 : 0; - __debug_WM_MOUSEMOVE__ = (aBoolean == true) ? 1 : 0; - __debug_WM_MOUSEACTIVATE__ = (aBoolean == true) ? 1 : 0; - __debug_WM_BUTTONUP__ = (aBoolean == true) ? 1 : 0; - __debug_WM_BUTTONDOWN__ = (aBoolean == true) ? 1 : 0; - __debug_WM_KEYUP__ = (aBoolean == true) ? 1 : 0; - __debug_WM_KEYDOWN__ = (aBoolean == true) ? 1 : 0; - __debug_WM_CHAR__ = (aBoolean == true) ? 1 : 0; + __debug_WM_MOUSEENTER__ = (aBoolean == true); + __debug_WM_MOUSELEAVE__ = (aBoolean == true); + __debug_WM_MOUSEMOVE__ = (aBoolean == true); + __debug_WM_MOUSEACTIVATE__ = (aBoolean == true); + __debug_WM_BUTTONUP__ = (aBoolean == true); + __debug_WM_BUTTONDOWN__ = (aBoolean == true); + __debug_WM_KEYUP__ = (aBoolean == true); + __debug_WM_KEYDOWN__ = (aBoolean == true); + __debug_WM_CHAR__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_MOUSEENTER' ifTrue:[ %{ - __debug_WM_MOUSEENTER__ = (aBoolean == true) ? 1 : 0; + __debug_WM_MOUSEENTER__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_MOUSELEAVE' ifTrue:[ %{ - __debug_WM_MOUSELEAVE__ = (aBoolean == true) ? 1 : 0; + __debug_WM_MOUSELEAVE__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_MOUSEMOVE' ifTrue:[ %{ - __debug_WM_MOUSEMOVE__ = (aBoolean == true) ? 1 : 0; + __debug_WM_MOUSEMOVE__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_MOUSEACTIVATE' ifTrue:[ %{ - __debug_WM_MOUSEACTIVATE__ = (aBoolean == true) ? 1 : 0; + __debug_WM_MOUSEACTIVATE__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_BUTTONUP' ifTrue:[ %{ - __debug_WM_BUTTONUP__ = (aBoolean == true) ? 1 : 0; + __debug_WM_BUTTONUP__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_BUTTONDOWN' ifTrue:[ %{ - __debug_WM_BUTTONDOWN__ = (aBoolean == true) ? 1 : 0; + __debug_WM_BUTTONDOWN__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_KEYUP' ifTrue:[ %{ - __debug_WM_KEYUP__ = (aBoolean == true) ? 1 : 0; + __debug_WM_KEYUP__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_KEYDOWN' ifTrue:[ %{ - __debug_WM_KEYDOWN__ = (aBoolean == true) ? 1 : 0; + __debug_WM_KEYDOWN__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_CHAR' ifTrue:[ %{ - __debug_WM_CHAR__ = (aBoolean == true) ? 1 : 0; + __debug_WM_CHAR__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_PAINT' ifTrue:[ %{ - __debug_WM_PAINT__ = (aBoolean == true) ? 1 : 0; + __debug_WM_PAINT__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_MOVING' ifTrue:[ %{ - __debug_WM_MOVING__ = (aBoolean == true) ? 1 : 0; + __debug_WM_MOVING__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_ERASEBKGND' ifTrue:[ %{ - __debug_WM_ERASEBKGND__ = (aBoolean == true) ? 1 : 0; + __debug_WM_ERASEBKGND__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_SETTEXT' ifTrue:[ %{ - __debug_WM_SETTEXT__ = (aBoolean == true) ? 1 : 0; + __debug_WM_SETTEXT__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_COPYDATA' ifTrue:[ %{ - __debug_WM_COPYDATA__ = (aBoolean == true) ? 1 : 0; + __debug_WM_COPYDATA__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_DROPFILES' ifTrue:[ %{ - __debug_WM_DROPFILES__ = (aBoolean == true) ? 1 : 0; + __debug_WM_DROPFILES__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_SHOWWINDOW' ifTrue:[ %{ - __debug_WM_SHOWWINDOW__ = (aBoolean == true) ? 1 : 0; + __debug_WM_SHOWWINDOW__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_SETCURSOR' ifTrue:[ %{ - __debug_WM_SETCURSOR__ = (aBoolean == true) ? 1 : 0; + __debug_WM_SETCURSOR__ = (aBoolean == true); RETURN (self); %} ]. msg = 'WM_FOCUS' ifTrue:[ %{ - __debug_WM_FOCUS__ = (aBoolean == true) ? 1 : 0; + __debug_WM_FOCUS__ = (aBoolean == true); RETURN (self); %} ]. @@ -6434,7 +6396,7 @@ WinWorkstation debug:true message:'WM_KEYUP' WinWorkstation debug:true message:'WM_KEYDOWN' WinWorkstation debug:true message:'WM_CHAR' - WinWorkstation debug:true message:'WM_BUTTONDOWN' + WinWorkstation debug:true message:'WM_COPYDATA' " ! @@ -6451,7 +6413,7 @@ debugNative:aBoolean %{ /* NOCONTEXT */ - __debugNative__ = (aBoolean == true) ? 1 : 0; + __debugNative__ = (aBoolean == true); %} " WinWorkstation debugNative:true @@ -9703,44 +9665,49 @@ getScaledRGBFromName:colorName into:aBlock "get scaled rgb components (0..16rFFFF) of color named colorName, and evaluate the 3-arg block, aBlock with them. - Return nil for unknown color names." + Return nil for unknown color names or invalid hex numbers." |triple r g b found cName| r := g := b := 0. found := false. (colorName startsWith:$#) ifTrue:[ - "/ color in r/g/b hex notation - r := Integer readFrom:(colorName copyFrom:2 to:3) radix:16. - g := Integer readFrom:(colorName copyFrom:4 to:5) radix:16. - b := Integer readFrom:(colorName copyFrom:6 to:7) radix:16. - found := true. + "/ color in r/g/b hex notation + colorName size == 7 ifTrue:[ + r := Integer readFrom:(colorName copyFrom:2 to:3) radix:16 onError:[nil]. + g := Integer readFrom:(colorName copyFrom:4 to:5) radix:16 onError:[nil]. + b := Integer readFrom:(colorName copyFrom:6 to:7) radix:16 onError:[nil]. + ]. + (r isNil or:[g isNil or:[b isNil]]) ifTrue:[^ nil]. + found := true. ] ifFalse:[ - cName := colorName asString. - triple := StandardColorValues at:cName ifAbsent:nil. - triple isNil ifTrue:[ - "/ try lowercase name - cName := cName asLowercase. - triple := StandardColorValues at:cName ifAbsent:nil. - triple isNil ifTrue:[ - "/ try lowercase without intermixed spaces - cName := cName asCollectionOfWords asStringWith:nil. - triple := StandardColorValues at:cName ifAbsent:nil. - ]. - ]. - triple notNil ifTrue:[ - r := triple at:1. - g := triple at:2. - b := triple at:3. - found := true. - ]. + cName := colorName asString. + triple := StandardColorValues at:cName ifAbsent:nil. + triple isNil ifTrue:[ + "/ try lowercase name + cName := cName asLowercase. + triple := StandardColorValues at:cName ifAbsent:nil. + triple isNil ifTrue:[ + "/ try lowercase without intermixed spaces + cName := cName asCollectionOfWords asStringWith:nil. + triple := StandardColorValues at:cName ifAbsent:nil. + ]. + ]. + triple notNil ifTrue:[ + r := triple at:1. + g := triple at:2. + b := triple at:3. + found := true. + ]. ]. found ifFalse:[ - "/ ('WinWorkstation: unknown color: ' , colorName) infoPrintCR. - ^ nil. + "/ ('WinWorkstation: unknown color: ' , colorName) infoPrintCR. + ^ nil. ]. ^ aBlock value:((r * 256) + r) value:((g * 256) + g) value:((b * 256) + b) + + "Modified (comment): / 14-11-2016 / 14:02:11 / cg" ! listOfAvailableColors @@ -12738,14 +12705,15 @@ /* message from another process */ case WM_COPYDATA: - DPRINTF((">>> WM_COPYDATA\n")); + DPRINTF((">>> WM_COPYDATA")); { OBJ eventData; void *data = (void *)(ev->ev_arg1); - int nBytes = ev->ev_arg2; - - if (ev->ev_arg1) { - eventData = __MKBYTEARRAY(data, nBytes); + DPRINTFIF((__debug_WM_COPYDATA__) , (">>> WM_COPYDATA %s (%d)\n", data, ev->ev_arg2)); + + if (data) { + eventData = __MKBYTEARRAY(data, (int)ev->ev_arg2); + free(data); // see winEventProcessing() } else { eventData = nil; } @@ -13736,9 +13704,9 @@ %{ if (__tmpDC) { #ifdef USE_EnumFontFamiliesEx - EnumFontFamiliesEx( __tmpDC, NULL, EnumFPTypeFaceProc, (INT)&(typeFaceList)); -#else - EnumFontFamilies( __tmpDC, NULL, EnumFPTypeFaceProc, (INT)&(typeFaceList)); + EnumFontFamiliesEx( __tmpDC, NULL, EnumFPTypeFaceProc, (INT)&typeFaceList); +#else + EnumFontFamilies( __tmpDC, NULL, EnumFPTypeFaceProc, (INT)&typeFaceList); #endif } %} @@ -13751,9 +13719,9 @@ if (__isStringLike(typeFace)) { if (__tmpDC) { #ifdef USE_EnumFontFamiliesEx - EnumFontFamiliesEx(__tmpDC, __stringVal(typeFace), EnumFontsProc, (INT)&(fontList)); -#else - EnumFontFamilies(__tmpDC, __stringVal(typeFace), EnumFontsProc, (INT)&(fontList)); + EnumFontFamiliesEx(__tmpDC, __stringVal(typeFace), EnumFontsProc, (INT)&fontList); +#else + EnumFontFamilies(__tmpDC, __stringVal(typeFace), EnumFontsProc, (INT)&fontList); #endif } } @@ -15596,7 +15564,7 @@ data.hArray = handleArray; data.index = 0; - EnumDisplayMonitors(NULL, NULL, EnumDisplayMonitorsProc, (INT)(&data)); + EnumDisplayMonitors(NULL, NULL, EnumDisplayMonitorsProc, (INT)&data); %}. ^ handleArray @@ -17756,13 +17724,13 @@ ((lpClassName notNil and:[lpClassName isWideString]) or:[lpWindowName notNil and:[lpWindowName isWideString]]) ifTrue:[ - ^ self - primFindWindowW:(lpClassName isNil - ifTrue:[nil] - ifFalse:[lpClassName asUnicode16StringZ]) - windowName:(lpWindowName isNil - ifTrue:[nil] - ifFalse:[lpWindowName asUnicode16StringZ]) + ^ self + primFindWindowW:(lpClassName isNil + ifTrue:[nil] + ifFalse:[lpClassName asUnicode16StringZ]) + windowName:(lpWindowName isNil + ifTrue:[nil] + ifFalse:[lpWindowName asUnicode16StringZ]) ]. ^ self primFindWindowA:lpClassName windowName:lpWindowName @@ -18275,7 +18243,7 @@ " - Display primFindWindowW: nil windowName: 'ST/X Launcher' asUnicode16String + Display primFindWindowW: nil windowName: 'ST/X Launcher' asUnicode16String " ! @@ -18646,9 +18614,9 @@ externalBytes := aByteArrayOrString asExternalBytesUnprotected. copyDataStruct := CopyDataStructStructure new. - copyDataStruct - cbData:externalBytes size; - lpData:externalBytes address. + copyDataStruct + cbData:externalBytes size; + lpData:externalBytes address. lParam := copyDataStruct asExternalBytesUnprotected. ^ self primSendMessage:aWindowId message:messageType wParam:nil lParam:lParam. @@ -19392,7 +19360,7 @@ sizeInBytes ExternalAddress pointerSize == 8 ifTrue:[ - ^ 20. + ^ 24. ]. ^ 12 ! ! @@ -19408,46 +19376,46 @@ cbData ExternalAddress pointerSize == 8 ifTrue:[ - ^ self unsignedInt32At: 8 + 1. + ^ self unsignedInt32At: 8 + 1. ]. ^ self unsignedInt32At: 4 + 1. ! cbData: cbData ExternalAddress pointerSize == 8 ifTrue:[ - self unsignedInt32At: 8 + 1 put: cbData. + self unsignedInt32At: 8 + 1 put: cbData. ] ifFalse:[ - self unsignedInt32At: 4 + 1 put: cbData. + self unsignedInt32At: 4 + 1 put: cbData. ]. ! dwData ExternalAddress pointerSize == 8 ifTrue:[ - ^ self unsignedInt64At: 0 + 1. + ^ self unsignedInt64At: 0 + 1. ]. ^ self unsignedInt32At: 0 + 1. ! dwData: dwData ExternalAddress pointerSize == 8 ifTrue:[ - self unsignedInt64At: 0 + 1 put:dwData. + self unsignedInt64At: 0 + 1 put:dwData. ] ifFalse:[ - self unsignedInt32At: 0 + 1 put:dwData. + self unsignedInt32At: 0 + 1 put:dwData. ]. ! lpData ExternalAddress pointerSize == 8 ifTrue:[ - ^ self unsignedInt64At: 12 + 1. + ^ self unsignedInt64At: 16 + 1. ]. ^ self unsignedInt32At: 8 + 1. ! lpData: lpData ExternalAddress pointerSize == 8 ifTrue:[ - self unsignedInt64At: 12 + 1 put: lpData. + self unsignedInt64At: 16 + 1 put: lpData. ] ifFalse:[ - self unsignedInt32At: 8 + 1 put: lpData. + self unsignedInt32At: 8 + 1 put: lpData. ]. ! !