WinWorkstation.st
changeset 2659 c181846c6f5a
parent 2653 f0ca966a5636
child 2661 c68f92ae1cb5
equal deleted inserted replaced
2658:0d33cf3ae07f 2659:c181846c6f5a
   674 static struct queuedEvent *eventQueueHead = (struct queuedEvent *)0;
   674 static struct queuedEvent *eventQueueHead = (struct queuedEvent *)0;
   675 static struct queuedEvent *eventQueueTail = (struct queuedEvent *)0;
   675 static struct queuedEvent *eventQueueTail = (struct queuedEvent *)0;
   676 static int eventsendcount = 0;
   676 static int eventsendcount = 0;
   677 static int eventempfcount = 0;
   677 static int eventempfcount = 0;
   678 
   678 
       
   679 /*
       
   680  * remember the last background-paint brush
       
   681  * will be reused by next bg-paint, if it needs
       
   682  * the same color. Otherwise, the next bg-erase
       
   683  * will destroy this brush.
       
   684  */
   679 #ifdef CACHE_LAST_WM_PAINT_BRUSH
   685 #ifdef CACHE_LAST_WM_PAINT_BRUSH
   680  static HBRUSH wm_paint_brush = (HBRUSH) 0;
   686  static HBRUSH wm_paint_brush = (HBRUSH) 0;
   681  static HWND   wm_paint_brush_hwnd = (HWND) 0;
       
   682  static HWND   wm_paint_brush_clr = (HWND) 0;
   687  static HWND   wm_paint_brush_clr = (HWND) 0;
   683 #endif
   688 #endif
       
   689 
       
   690 static HWND lastPos_win = 0;
       
   691 static int lastPos_w;
       
   692 static int lastPos_h;
       
   693 static int lastPos_x;
       
   694 static int lastPos_y;
   684 
   695 
   685 %}
   696 %}
   686 ! !
   697 ! !
   687 
   698 
   688 !WinWorkstation primitiveFunctions!
   699 !WinWorkstation primitiveFunctions!
   801 
   812 
   802 #else
   813 #else
   803 # define _DeleteObject(o,lnr)  DeleteObject(o)
   814 # define _DeleteObject(o,lnr)  DeleteObject(o)
   804 #endif
   815 #endif
   805 
   816 
       
   817 static int
       
   818 _DeleteBrush(br, lineNr)
       
   819     HBRUSH br;
       
   820 {
       
   821     int r;
       
   822 
       
   823     if ((br != __whiteBrush)
       
   824      && (br != __blackBrush)) {
       
   825 	r = DeleteObject(br);
       
   826 
       
   827 	if (r == 0)
       
   828 	    fprintf(stderr, "WinWorkstation: ERROR in DeleteBrush %x [%d]\n", br, lineNr);
       
   829 	return r;
       
   830     }
       
   831     return 1;
       
   832 }
       
   833 
       
   834 static int
       
   835 _DeletePen(p, lineNr)
       
   836     HPEN p;
       
   837 {
       
   838     int r;
       
   839 
       
   840     if ((p != __whitePen)
       
   841      && (p != __blackPen)) {
       
   842 	r = DeleteObject(p);
       
   843 
       
   844 	if (r == 0)
       
   845 	    fprintf(stderr, "WinWorkstation: ERROR in DeletePen %x [%d]\n", p, lineNr);
       
   846 	return r;
       
   847     }
       
   848     return 1;
       
   849 }
       
   850 
   806 static struct gcData *
   851 static struct gcData *
   807 newGcData() {
   852 newGcData() {
   808     struct gcData *gcData = (struct gcData *)malloc(sizeof(struct gcData));
   853     struct gcData *gcData = (struct gcData *)malloc(sizeof(struct gcData));
   809 
   854 
   810     if (! gcData) {
   855     if (! gcData) {
   855     if (__gcData__->hPen) {           \
   900     if (__gcData__->hPen) {           \
   856 	if (__gcData__->save_hPen) {  \
   901 	if (__gcData__->save_hPen) {  \
   857 	    SelectObject(__gcData__->_hDC, __gcData__->save_hPen); \
   902 	    SelectObject(__gcData__->_hDC, __gcData__->save_hPen); \
   858 	    __gcData__->save_hPen = 0;   \
   903 	    __gcData__->save_hPen = 0;   \
   859 	} \
   904 	} \
   860 	if ((__gcData__->hPen != __blackPen) \
   905 	_DeletePen(__gcData__->hPen, __LINE__); \
   861 	 && (__gcData__->hPen != __whitePen)) { \
       
   862 	    _DeleteObject(__gcData__->hPen, __LINE__); \
       
   863 	} \
       
   864 	__gcData__->hPen = 0; \
   906 	__gcData__->hPen = 0; \
   865     }
   907     }
   866 #else
   908 #else
   867 # define FLUSH_CACHED_PEN(x)    /* */
   909 # define FLUSH_CACHED_PEN(x)    /* */
   868 #endif
   910 #endif
   872     if (__gcData__->hBrush) {           \
   914     if (__gcData__->hBrush) {           \
   873 	if (__gcData__->save_hBrush) {  \
   915 	if (__gcData__->save_hBrush) {  \
   874 	    SelectObject(__gcData__->_hDC, __gcData__->save_hBrush); \
   916 	    SelectObject(__gcData__->_hDC, __gcData__->save_hBrush); \
   875 	    __gcData__->save_hBrush = 0;   \
   917 	    __gcData__->save_hBrush = 0;   \
   876 	} \
   918 	} \
   877 	if ((__gcData__->hBrush != __blackBrush) \
   919 	_DeleteBrush(__gcData__->hBrush, __LINE__); \
   878 	 && (__gcData__->hBrush != __whiteBrush)) { \
       
   879 	    _DeleteObject(__gcData__->hBrush, __LINE__); \
       
   880 	} \
       
   881 	__gcData__->hBrush = 0; \
   920 	__gcData__->hBrush = 0; \
   882     }
   921     }
   883 #else
   922 #else
   884 # define FLUSH_CACHED_BRUSH(x)    /* */
   923 # define FLUSH_CACHED_BRUSH(x)    /* */
   885 #endif
   924 #endif
   913     }
   952     }
   914     gcData->_hDC = 0;
   953     gcData->_hDC = 0;
   915 
   954 
   916 #ifdef CACHE_LAST_PEN
   955 #ifdef CACHE_LAST_PEN
   917     if (gcData->hPen) {
   956     if (gcData->hPen) {
   918 	if ((gcData->hPen != __blackPen)
   957 	_DeletePen(gcData->hPen, __LINE__);
   919 	 && (gcData->hPen != __whitePen)) {
       
   920 	    _DeleteObject(gcData->hPen, __LINE__);
       
   921 	}
       
   922 	gcData->hPen = 0;
   958 	gcData->hPen = 0;
   923     }
   959     }
   924 #endif
   960 #endif
   925 #ifdef CACHE_LAST_BRUSH
   961 #ifdef CACHE_LAST_BRUSH
   926     if (gcData->hBrush) {
   962     if (gcData->hBrush) {
   927 	if ((gcData->hBrush != __blackBrush)
   963 	_DeleteBrush(gcData->hBrush, __LINE__);
   928 	 && (gcData->hBrush != __whiteBrush)) {
       
   929 	    _DeleteObject(gcData->hBrush, __LINE__);
       
   930 	}
       
   931 	gcData->hBrush = 0;
   964 	gcData->hBrush = 0;
   932     }
   965     }
   933 #endif
   966 #endif
   934 #ifdef CACHE_LAST_DC
   967 #ifdef CACHE_LAST_DC
   935     if (lastGcData == gcData) {
   968     if (lastGcData == gcData) {
  1072     hBrush = gcData->hBrush;
  1105     hBrush = gcData->hBrush;
  1073     if (gcData->save_hBrush) {
  1106     if (gcData->save_hBrush) {
  1074 	SelectObject(hDC, gcData->save_hBrush);
  1107 	SelectObject(hDC, gcData->save_hBrush);
  1075 	gcData->save_hBrush = NULL;
  1108 	gcData->save_hBrush = NULL;
  1076     }
  1109     }
  1077     if ((hBrush != __blackBrush) && (hBrush != __whiteBrush)) {
  1110     _DeleteBrush(hBrush, __LINE__); 
  1078 	_DeleteObject(hBrush, __LINE__); 
       
  1079     }
       
  1080     gcData->hBrush = 0;
  1111     gcData->hBrush = 0;
  1081 }
  1112 }
  1082 #endif
  1113 #endif
  1083 
  1114 
  1084 static HPEN
  1115 static HPEN
  1233     if (gcData->save_hPen) {
  1264     if (gcData->save_hPen) {
  1234 	SelectObject(hDC, gcData->save_hPen);
  1265 	SelectObject(hDC, gcData->save_hPen);
  1235 	gcData->save_hPen = NULL;
  1266 	gcData->save_hPen = NULL;
  1236     }
  1267     }
  1237     hPen = gcData->hPen;
  1268     hPen = gcData->hPen;
  1238     if ((hPen != __blackPen) && (hPen != __whitePen)) {
  1269     _DeletePen(hPen, __LINE__); 
  1239 	_DeleteObject(hPen, __LINE__); 
       
  1240     }
       
  1241     gcData->hPen = 0;
  1270     gcData->hPen = 0;
  1242 }
  1271 }
  1243 #endif /* CACHE_LAST_PEN */
  1272 #endif /* CACHE_LAST_PEN */
  1244 
  1273 
  1245 static int
  1274 static int
  1689 	    {
  1718 	    {
  1690 		HBRUSH br;
  1719 		HBRUSH br;
  1691 
  1720 
  1692 		if (br = GetWindow_viewBgBrush(hWnd)) {
  1721 		if (br = GetWindow_viewBgBrush(hWnd)) {
  1693 		    SetWindow_viewBgBrush(hWnd, 0);
  1722 		    SetWindow_viewBgBrush(hWnd, 0);
  1694 		    _DeleteObject(br, __LINE__);
  1723 		    _DeleteBrush(br, __LINE__);
  1695 		}
  1724 		}
  1696 	    }
  1725 	    }
  1697 	    if (! DestroyWindow(hWnd)) {
  1726 	    if (! DestroyWindow(hWnd)) {
  1698 		DPRINTF(("DestroyWindow ERROR\n"));
  1727 		DPRINTF(("DestroyWindow ERROR\n"));
  1699 	    }
  1728 	    }
  1709 		{
  1738 		{
  1710 		    HBRUSH br;
  1739 		    HBRUSH br;
  1711 
  1740 
  1712 		    if (br = GetWindow_viewBgBrush(hWnd)) {
  1741 		    if (br = GetWindow_viewBgBrush(hWnd)) {
  1713 			SetWindow_viewBgBrush(hWnd, 0);
  1742 			SetWindow_viewBgBrush(hWnd, 0);
  1714 			_DeleteObject(br, __LINE__);
  1743 			_DeleteBrush(br, __LINE__);
  1715 		    }
  1744 		    }
  1716 		}
  1745 		}
  1717 		if (! DestroyWindow(hWnd)) {
  1746 		if (! DestroyWindow(hWnd)) {
  1718 		    DPRINTF(("DestroyWindow ERROR\n"));
  1747 		    DPRINTF(("DestroyWindow ERROR\n"));
  1719 		}
  1748 		}
  1736 			n = (char*) malloc(200);
  1765 			n = (char*) malloc(200);
  1737 			GetClassName(hWnd,n,200);
  1766 			GetClassName(hWnd,n,200);
  1738 		    }
  1767 		    }
  1739 		    /* free all resources */
  1768 		    /* free all resources */
  1740 		    /*if (GetWindow_bgBrush(hWnd))
  1769 		    /*if (GetWindow_bgBrush(hWnd))
  1741 		     *    _DeleteObject(GetWindow_bgBrush(hWnd), __LINE__);
  1770 		     *    _DeleteBrush(GetWindow_bgBrush(hWnd), __LINE__);
  1742 		     */
  1771 		     */
  1743 		    /* freeing now done in other thread */
  1772 		    /* freeing now done in other thread */
  1744 		    //free(GETLOCALWINDOWINFOPTR(hWnd));
  1773 		    //free(GETLOCALWINDOWINFOPTR(hWnd));
  1745 		}
  1774 		}
  1746 #endif
  1775 #endif
  1896 			enqEvent(ENQ_AT_END, 0, hWnd, __WM_ICONIFIED, 0, 0, 0, 0, 0);
  1925 			enqEvent(ENQ_AT_END, 0, hWnd, __WM_ICONIFIED, 0, 0, 0, 0, 0);
  1897 		    }
  1926 		    }
  1898 		    if (!(wp->flags & SWP_NOSIZE) 
  1927 		    if (!(wp->flags & SWP_NOSIZE) 
  1899 		     || !(wp->flags & SWP_NOMOVE)) {
  1928 		     || !(wp->flags & SWP_NOMOVE)) {
  1900 			enqEvent(ENQ_AT_END, 0, hWnd, message, wParam, x, y, w, h);
  1929 			enqEvent(ENQ_AT_END, 0, hWnd, message, wParam, x, y, w, h);
       
  1930 			/*
       
  1931 			 * remember the current
       
  1932 			 * window and size;
       
  1933 			 * This allows the backend to ignore
       
  1934 			 * intermediate events.
       
  1935 			 */
       
  1936 			lastPos_win = 0;
       
  1937 			lastPos_w = w;
       
  1938 			lastPos_h = h;
       
  1939 			lastPos_x = x;
       
  1940 			lastPos_y = y;
       
  1941 			lastPos_win = hWnd;
  1901 		    }
  1942 		    }
  1902 		}
  1943 		}
  1903 #ifdef MAKES_GUI_PAINTER_START_SLOW
  1944 #ifdef MAKES_GUI_PAINTER_START_SLOW
  1904 		*pDefault = 0;
  1945 		*pDefault = 0;
  1905 #endif
  1946 #endif
  1942 			    if (wm_paint_brush
  1983 			    if (wm_paint_brush
  1943 			     && (wm_paint_brush_clr == bgClr)) {
  1984 			     && (wm_paint_brush_clr == bgClr)) {
  1944 				br = wm_paint_brush;
  1985 				br = wm_paint_brush;
  1945 			    } else {
  1986 			    } else {
  1946 				if (wm_paint_brush) {
  1987 				if (wm_paint_brush) {
  1947 				    if ((wm_paint_brush != __whiteBrush)
  1988 				    _DeleteBrush(wm_paint_brush, __LINE__);
  1948 				     && (wm_paint_brush != __blackBrush)) {
       
  1949 					_DeleteObject(wm_paint_brush, __LINE__);
       
  1950 				    }
       
  1951 				}
  1989 				}
  1952 				if (bgClr == WhitePixel) {
  1990 				if (bgClr == WhitePixel) {
  1953 				    br = __whiteBrush;
  1991 				    br = __whiteBrush;
  1954 				} else if (bgClr == BlackPixel) {
  1992 				} else if (bgClr == BlackPixel) {
  1955 				    br = __blackBrush;
  1993 				    br = __blackBrush;
  1962 #  else
  2000 #  else
  1963 			    br = CreateSolidBrush(bgClr);
  2001 			    br = CreateSolidBrush(bgClr);
  1964 #  endif
  2002 #  endif
  1965 			}
  2003 			}
  1966 			if (br) {
  2004 			if (br) {
  1967 			    // printf("erase %d %d %d %d\n",rec.left,rec.top,rec.right,rec.bottom);
       
  1968 			    SelectClipRgn(dc, 0);
  2005 			    SelectClipRgn(dc, 0);
  1969 			    FillRect(dc, &upd, br);
  2006 			    FillRect(dc, &upd, br);
  1970 #  ifndef CACHE_LAST_WM_PAINT_BRUSH
  2007 #  ifndef CACHE_LAST_WM_PAINT_BRUSH
  1971 			    if (isSolidColorBrush) {
  2008 			    if (isSolidColorBrush) {
  1972 				if ((br != __whiteBrush) && (br != __blackBrush)) {
  2009 				_DeleteBrush(br, __LINE__);
  1973 				    _DeleteObject(br, __LINE__);
       
  1974 				}
       
  1975 			    }
  2010 			    }
  1976 #  endif
  2011 #  endif
  1977 			}
  2012 			}
  1978 			ReleaseDC(hWnd, dc);
  2013 			ReleaseDC(hWnd, dc);
  1979 # endif
  2014 # endif
  1980 			enqEvent(ENQ_AT_END, ExposureMask, hWnd, message, wParam, upd.left, upd.top, upd.right-upd.left+1, upd.bottom-upd.top+1);
  2015 			enqEvent(ENQ_AT_END, ExposureMask, hWnd, message, wParam, 
       
  2016 				 upd.left, 
       
  2017 				 upd.top, 
       
  2018 				 upd.right - upd.left + 1, 
       
  2019 				 upd.bottom - upd.top + 1);
  1981 		    }
  2020 		    }
  1982 		}
  2021 		}
  1983 	    } else {
  2022 	    } else {
  1984 # ifdef THIS_MAKES_GUI_PAINTER_START_SLOW
  2023 # ifdef THIS_MAKES_GUI_PAINTER_START_SLOW
  1985 		*pDefault = 0;
  2024 		*pDefault = 0;
  1988 	    return 0;
  2027 	    return 0;
  1989 	    break;
  2028 	    break;
  1990 
  2029 
  1991 	case WM_SIZE:
  2030 	case WM_SIZE:
  1992 	    EVENT_PRINTF(("WM_SIZE\n"));
  2031 	    EVENT_PRINTF(("WM_SIZE\n"));
  1993 #if 0
       
  1994 	    switch(wParam) {
       
  1995 		case SIZE_RESTORED:
       
  1996 		case SIZE_MAXIMIZED:
       
  1997 		    GetClientRect(hWnd, (LPRECT) &upd);
       
  1998 		    if (GetWindow_eventMask(hWnd) & ExposureMask)
       
  1999 			enqEvent(ENQ_AT_END, ExposureMask, hWnd, WM_PAINT, wParam, upd.left, upd.top, upd.right-upd.left+1, upd.bottom-upd.top+1);
       
  2000 		    DPRINTF(("WM_SIZE %x w %d h %d\n",hWnd,LOWORD(lParam),HIWORD(lParam)));
       
  2001 		    break;
       
  2002 	    }
       
  2003 #endif
       
  2004 	    *pDefault = 0;
  2032 	    *pDefault = 0;
  2005 	    return 0;
  2033 	    return 0;
  2006 	    break;
  2034 	    break;
  2007 
  2035 
  2008 	case WM_DROPFILES:
  2036 	case WM_DROPFILES:
  2506 	    EVENT_PRINTF(("WM_NCMBUTTONDOWN\n"));
  2534 	    EVENT_PRINTF(("WM_NCMBUTTONDOWN\n"));
  2507 	    break;
  2535 	    break;
  2508 
  2536 
  2509 	case WM_NCMBUTTONUP:
  2537 	case WM_NCMBUTTONUP:
  2510 	    EVENT_PRINTF(("WM_NCMBUTTONUP\n"));
  2538 	    EVENT_PRINTF(("WM_NCMBUTTONUP\n"));
       
  2539 	    break;
       
  2540 
       
  2541 	case WM_NCLBUTTONDBLCLK:
       
  2542 	    EVENT_PRINTF(("WM_NCLBUTTONDBLCLK\n"));
       
  2543 	    break;
       
  2544 
       
  2545 	case WM_NCRBUTTONDBLCLK:
       
  2546 	    EVENT_PRINTF(("WM_NCRBUTTONDBLCLK\n"));
       
  2547 	    break;
       
  2548 
       
  2549 	case WM_NCMBUTTONDBLCLK:
       
  2550 	    EVENT_PRINTF(("WM_NCMBUTTONDBLCLK\n"));
  2511 	    break;
  2551 	    break;
  2512 
  2552 
  2513 	case WM_SETTEXT:
  2553 	case WM_SETTEXT:
  2514 	    EVENT_PRINTF(("WM_SETTEXT\n"));
  2554 	    EVENT_PRINTF(("WM_SETTEXT\n"));
  2515 	    break;
  2555 	    break;
  3274 
  3314 
  3275     "setup standard color names (X-color names)"
  3315     "setup standard color names (X-color names)"
  3276 
  3316 
  3277     StandardColorValues := Dictionary new.
  3317     StandardColorValues := Dictionary new.
  3278     #(
  3318     #(
  3279 	(240 248 255)   'alice blue'
  3319 	(240 248 255)   'aliceblue'
  3280 	(240 248 255)   'AliceBlue'
  3320 	(250 235 215)   'antiquewhite'
  3281 	(250 235 215)   'antique white'
       
  3282 	(250 235 215)   'AntiqueWhite'
       
  3283 	(255 239 219)   'AntiqueWhite1'
  3321 	(255 239 219)   'AntiqueWhite1'
  3284 	(238 223 204)   'AntiqueWhite2'
  3322 	(238 223 204)   'AntiqueWhite2'
  3285 	(205 192 176)   'AntiqueWhite3'
  3323 	(205 192 176)   'AntiqueWhite3'
  3286 	(139 131 120)   'AntiqueWhite4'
  3324 	(139 131 120)   'AntiqueWhite4'
  3287 	(127 255 212)   'aquamarine'
  3325 	(127 255 212)   'aquamarine'
  3299 	(255 228 196)   'bisque1'
  3337 	(255 228 196)   'bisque1'
  3300 	(238 213 183)   'bisque2'
  3338 	(238 213 183)   'bisque2'
  3301 	(205 183 158)   'bisque3'
  3339 	(205 183 158)   'bisque3'
  3302 	(139 125 107)   'bisque4'
  3340 	(139 125 107)   'bisque4'
  3303 	(  0   0   0)   'black'
  3341 	(  0   0   0)   'black'
  3304 	(255 235 205)   'blanched almond'
  3342 	(255 235 205)   'blanchedalmond'
  3305 	(255 235 205)   'BlanchedAlmond'
       
  3306 	(  0   0 255)   'blue'
  3343 	(  0   0 255)   'blue'
  3307 	(138  43 226)   'blue violet'
  3344 	(138  43 226)   'blueviolet'
  3308 	(  0   0 255)   'blue1'
  3345 	(  0   0 255)   'blue1'
  3309 	(  0   0 238)   'blue2'
  3346 	(  0   0 238)   'blue2'
  3310 	(  0   0 205)   'blue3'
  3347 	(  0   0 205)   'blue3'
  3311 	(  0   0 139)   'blue4'
  3348 	(  0   0 139)   'blue4'
  3312 	(138  43 226)   'BlueViolet'
       
  3313 	(165  42  42)   'brown'
  3349 	(165  42  42)   'brown'
  3314 	(255  64  64)   'brown1'
  3350 	(255  64  64)   'brown1'
  3315 	(238  59  59)   'brown2'
  3351 	(238  59  59)   'brown2'
  3316 	(205  51  51)   'brown3'
  3352 	(205  51  51)   'brown3'
  3317 	(139  35  35)   'brown4'
  3353 	(139  35  35)   'brown4'
  3318 	(222 184 135)   'burlywood'
  3354 	(222 184 135)   'burlywood'
  3319 	(255 211 155)   'burlywood1'
  3355 	(255 211 155)   'burlywood1'
  3320 	(238 197 145)   'burlywood2'
  3356 	(238 197 145)   'burlywood2'
  3321 	(205 170 125)   'burlywood3'
  3357 	(205 170 125)   'burlywood3'
  3322 	(139 115  85)   'burlywood4'
  3358 	(139 115  85)   'burlywood4'
  3323 	( 95 158 160)   'cadet blue'
  3359 	( 95 158 160)   'cadetblue'
  3324 	( 95 158 160)   'CadetBlue'
       
  3325 	(152 245 255)   'CadetBlue1'
  3360 	(152 245 255)   'CadetBlue1'
  3326 	(142 229 238)   'CadetBlue2'
  3361 	(142 229 238)   'CadetBlue2'
  3327 	(122 197 205)   'CadetBlue3'
  3362 	(122 197 205)   'CadetBlue3'
  3328 	( 83 134 139)   'CadetBlue4'
  3363 	( 83 134 139)   'CadetBlue4'
  3329 	(127 255   0)   'chartreuse'
  3364 	(127 255   0)   'chartreuse'
  3339 	(255 127  80)   'coral'
  3374 	(255 127  80)   'coral'
  3340 	(255 114  86)   'coral1'
  3375 	(255 114  86)   'coral1'
  3341 	(238 106  80)   'coral2'
  3376 	(238 106  80)   'coral2'
  3342 	(205  91  69)   'coral3'
  3377 	(205  91  69)   'coral3'
  3343 	(139  62  47)   'coral4'
  3378 	(139  62  47)   'coral4'
  3344 	(100 149 237)   'cornflower blue'
  3379 	(100 149 237)   'cornflowerblue'
  3345 	(100 149 237)   'CornflowerBlue'
       
  3346 	(255 248 220)   'cornsilk'
  3380 	(255 248 220)   'cornsilk'
  3347 	(255 248 220)   'cornsilk1'
  3381 	(255 248 220)   'cornsilk1'
  3348 	(238 232 205)   'cornsilk2'
  3382 	(238 232 205)   'cornsilk2'
  3349 	(205 200 177)   'cornsilk3'
  3383 	(205 200 177)   'cornsilk3'
  3350 	(139 136 120)   'cornsilk4'
  3384 	(139 136 120)   'cornsilk4'
  3351 	(  0 255 255)   'cyan'
  3385 	(  0 255 255)   'cyan'
  3352 	(  0 255 255)   'cyan1'
  3386 	(  0 255 255)   'cyan1'
  3353 	(  0 238 238)   'cyan2'
  3387 	(  0 238 238)   'cyan2'
  3354 	(  0 205 205)   'cyan3'
  3388 	(  0 205 205)   'cyan3'
  3355 	(  0 139 139)   'cyan4'
  3389 	(  0 139 139)   'cyan4'
  3356 	(  0   0 139)   'dark blue'
  3390 	(  0   0 139)   'darkblue'
  3357 	(  0 139 139)   'dark cyan'
  3391 	(  0 139 139)   'darkcyan'
  3358 	(184 134  11)   'dark goldenrod'
  3392 	(184 134  11)   'darkgoldenrod'
  3359 	(169 169 169)   'dark gray'
  3393 	(169 169 169)   'darkgray'
  3360 	(  0 100   0)   'dark green'
  3394 	(  0 100   0)   'darkgreen'
  3361 	(169 169 169)   'dark grey'
  3395 	(169 169 169)   'darkgrey'
  3362 	(189 183 107)   'dark khaki'
  3396 	(189 183 107)   'darkkhaki'
  3363 	(139   0 139)   'dark magenta'
  3397 	(139   0 139)   'darkmagenta'
  3364 	( 85 107  47)   'dark olive green'
  3398 	( 85 107  47)   'darkolivegreen'
  3365 	(255 140   0)   'dark orange'
  3399 	(255 140   0)   'darkorange'
  3366 	(153  50 204)   'dark orchid'
  3400 	(153  50 204)   'darkorchid'
  3367 	(139   0   0)   'dark red'
  3401 	(139   0   0)   'darkred'
  3368 	(233 150 122)   'dark salmon'
  3402 	(233 150 122)   'darksalmon'
  3369 	(143 188 143)   'dark sea green'
  3403 	(143 188 143)   'darkseagreen'
  3370 	( 72  61 139)   'dark slate blue'
  3404 	( 72  61 139)   'darkslateblue'
  3371 	( 47  79  79)   'dark slate gray'
  3405 	( 47  79  79)   'darkslategray'
  3372 	( 47  79  79)   'dark slate grey'
  3406 	( 47  79  79)   'darkslategrey'
  3373 	(  0 206 209)   'dark turquoise'
  3407 	(  0 206 209)   'darkturquoise'
  3374 	(148   0 211)   'dark violet'
  3408 	(148   0 211)   'darkviolet'
  3375 	(  0   0 139)   'DarkBlue'
       
  3376 	(  0 139 139)   'DarkCyan'
       
  3377 	(184 134  11)   'DarkGoldenrod'
       
  3378 	(255 185  15)   'DarkGoldenrod1'
  3409 	(255 185  15)   'DarkGoldenrod1'
  3379 	(238 173  14)   'DarkGoldenrod2'
  3410 	(238 173  14)   'DarkGoldenrod2'
  3380 	(205 149  12)   'DarkGoldenrod3'
  3411 	(205 149  12)   'DarkGoldenrod3'
  3381 	(139 101   8)   'DarkGoldenrod4'
  3412 	(139 101   8)   'DarkGoldenrod4'
  3382 	(169 169 169)   'DarkGray'
       
  3383 	(  0 100   0)   'DarkGreen'
       
  3384 	(169 169 169)   'DarkGrey'
       
  3385 	(189 183 107)   'DarkKhaki'
       
  3386 	(139   0 139)   'DarkMagenta'
       
  3387 	( 85 107  47)   'DarkOliveGreen'
       
  3388 	(202 255 112)   'DarkOliveGreen1'
  3413 	(202 255 112)   'DarkOliveGreen1'
  3389 	(188 238 104)   'DarkOliveGreen2'
  3414 	(188 238 104)   'DarkOliveGreen2'
  3390 	(162 205  90)   'DarkOliveGreen3'
  3415 	(162 205  90)   'DarkOliveGreen3'
  3391 	(110 139  61)   'DarkOliveGreen4'
  3416 	(110 139  61)   'DarkOliveGreen4'
  3392 	(255 140   0)   'DarkOrange'
       
  3393 	(255 127   0)   'DarkOrange1'
  3417 	(255 127   0)   'DarkOrange1'
  3394 	(238 118   0)   'DarkOrange2'
  3418 	(238 118   0)   'DarkOrange2'
  3395 	(205 102   0)   'DarkOrange3'
  3419 	(205 102   0)   'DarkOrange3'
  3396 	(139  69   0)   'DarkOrange4'
  3420 	(139  69   0)   'DarkOrange4'
  3397 	(153  50 204)   'DarkOrchid'
       
  3398 	(191  62 255)   'DarkOrchid1'
  3421 	(191  62 255)   'DarkOrchid1'
  3399 	(178  58 238)   'DarkOrchid2'
  3422 	(178  58 238)   'DarkOrchid2'
  3400 	(154  50 205)   'DarkOrchid3'
  3423 	(154  50 205)   'DarkOrchid3'
  3401 	(104  34 139)   'DarkOrchid4'
  3424 	(104  34 139)   'DarkOrchid4'
  3402 	(139   0   0)   'DarkRed'
       
  3403 	(233 150 122)   'DarkSalmon'
       
  3404 	(143 188 143)   'DarkSeaGreen'
       
  3405 	(193 255 193)   'DarkSeaGreen1'
  3425 	(193 255 193)   'DarkSeaGreen1'
  3406 	(180 238 180)   'DarkSeaGreen2'
  3426 	(180 238 180)   'DarkSeaGreen2'
  3407 	(155 205 155)   'DarkSeaGreen3'
  3427 	(155 205 155)   'DarkSeaGreen3'
  3408 	(105 139 105)   'DarkSeaGreen4'
  3428 	(105 139 105)   'DarkSeaGreen4'
  3409 	( 72  61 139)   'DarkSlateBlue'
       
  3410 	( 47  79  79)   'DarkSlateGray'
       
  3411 	(151 255 255)   'DarkSlateGray1'
  3429 	(151 255 255)   'DarkSlateGray1'
  3412 	(141 238 238)   'DarkSlateGray2'
  3430 	(141 238 238)   'DarkSlateGray2'
  3413 	(121 205 205)   'DarkSlateGray3'
  3431 	(121 205 205)   'DarkSlateGray3'
  3414 	( 82 139 139)   'DarkSlateGray4'
  3432 	( 82 139 139)   'DarkSlateGray4'
  3415 	( 47  79  79)   'DarkSlateGrey'
  3433 	(255  20 147)   'deeppink'
  3416 	(  0 206 209)   'DarkTurquoise'
  3434 	(  0 191 255)   'deepskyblue'
  3417 	(148   0 211)   'DarkViolet'
       
  3418 	(255  20 147)   'deep pink'
       
  3419 	(  0 191 255)   'deep sky blue'
       
  3420 	(255  20 147)   'DeepPink'
  3435 	(255  20 147)   'DeepPink'
  3421 	(255  20 147)   'DeepPink1'
  3436 	(255  20 147)   'DeepPink1'
  3422 	(238  18 137)   'DeepPink2'
  3437 	(238  18 137)   'DeepPink2'
  3423 	(205  16 118)   'DeepPink3'
  3438 	(205  16 118)   'DeepPink3'
  3424 	(139  10  80)   'DeepPink4'
  3439 	(139  10  80)   'DeepPink4'
  3425 	(  0 191 255)   'DeepSkyBlue'
       
  3426 	(  0 191 255)   'DeepSkyBlue1'
  3440 	(  0 191 255)   'DeepSkyBlue1'
  3427 	(  0 178 238)   'DeepSkyBlue2'
  3441 	(  0 178 238)   'DeepSkyBlue2'
  3428 	(  0 154 205)   'DeepSkyBlue3'
  3442 	(  0 154 205)   'DeepSkyBlue3'
  3429 	(  0 104 139)   'DeepSkyBlue4'
  3443 	(  0 104 139)   'DeepSkyBlue4'
  3430 	(105 105 105)   'dim gray'
  3444 	(105 105 105)   'dimgray'
  3431 	(105 105 105)   'dim grey'
  3445 	(105 105 105)   'dimgrey'
  3432 	(105 105 105)   'DimGray'
  3446 	( 30 144 255)   'dodgerblue'
  3433 	(105 105 105)   'DimGrey'
       
  3434 	( 30 144 255)   'dodger blue'
       
  3435 	( 30 144 255)   'DodgerBlue'
       
  3436 	( 30 144 255)   'DodgerBlue1'
  3447 	( 30 144 255)   'DodgerBlue1'
  3437 	( 28 134 238)   'DodgerBlue2'
  3448 	( 28 134 238)   'DodgerBlue2'
  3438 	( 24 116 205)   'DodgerBlue3'
  3449 	( 24 116 205)   'DodgerBlue3'
  3439 	( 16  78 139)   'DodgerBlue4'
  3450 	( 16  78 139)   'DodgerBlue4'
  3440 	(178  34  34)   'firebrick'
  3451 	(178  34  34)   'firebrick'
  3441 	(255  48  48)   'firebrick1'
  3452 	(255  48  48)   'firebrick1'
  3442 	(238  44  44)   'firebrick2'
  3453 	(238  44  44)   'firebrick2'
  3443 	(205  38  38)   'firebrick3'
  3454 	(205  38  38)   'firebrick3'
  3444 	(139  26  26)   'firebrick4'
  3455 	(139  26  26)   'firebrick4'
  3445 	(255 250 240)   'floral white'
  3456 	(255 250 240)   'floralwhite'
  3446 	(255 250 240)   'FloralWhite'
  3457 	( 34 139  34)   'forestgreen'
  3447 	( 34 139  34)   'forest green'
       
  3448 	( 34 139  34)   'ForestGreen'
       
  3449 	(220 220 220)   'gainsboro'
  3458 	(220 220 220)   'gainsboro'
  3450 	(248 248 255)   'ghost white'
  3459 	(248 248 255)   'ghostwhite'
  3451 	(248 248 255)   'GhostWhite'
       
  3452 	(255 215   0)   'gold'
  3460 	(255 215   0)   'gold'
  3453 	(255 215   0)   'gold1'
  3461 	(255 215   0)   'gold1'
  3454 	(238 201   0)   'gold2'
  3462 	(238 201   0)   'gold2'
  3455 	(205 173   0)   'gold3'
  3463 	(205 173   0)   'gold3'
  3456 	(139 117   0)   'gold4'
  3464 	(139 117   0)   'gold4'
  3457 	(218 165  32)   'goldenrod'
  3465 	(218 165  32)   'goldenrod'
  3458 	(255 193  37)   'goldenrod1'
  3466 	(255 193  37)   'goldenrod1'
  3459 	(238 180  34)   'goldenrod2'
  3467 	(238 180  34)   'goldenrod2'
  3460 	(205 155  29)   'goldenrod3'
  3468 	(205 155  29)   'goldenrod3'
  3461 	(139 105  20)   'goldenrod4'
  3469 	(139 105  20)   'goldenrod4'
  3462 
       
  3463 	(192 192 192)   'grey'
  3470 	(192 192 192)   'grey'
  3464 	(  0   0   0)   'grey0'
  3471 	(  0   0   0)   'grey0'
  3465 	(  3   3   3)   'grey1'
  3472 	(  3   3   3)   'grey1'
  3466 	( 26  26  26)   'grey10'
  3473 	( 26  26  26)   'grey10'
  3467 	(255 255 255)   'grey100'
  3474 	(255 255 255)   'grey100'
  3664 	(245 245 245)   'gray96'
  3671 	(245 245 245)   'gray96'
  3665 	(247 247 247)   'gray97'
  3672 	(247 247 247)   'gray97'
  3666 	(250 250 250)   'gray98'
  3673 	(250 250 250)   'gray98'
  3667 	(252 252 252)   'gray99'
  3674 	(252 252 252)   'gray99'
  3668 	(  0 255   0)   'green'
  3675 	(  0 255   0)   'green'
  3669 	(173 255  47)   'green yellow'
  3676 	(173 255  47)   'greenyellow'
  3670 	(  0 255   0)   'green1'
  3677 	(  0 255   0)   'green1'
  3671 	(  0 238   0)   'green2'
  3678 	(  0 238   0)   'green2'
  3672 	(  0 205   0)   'green3'
  3679 	(  0 205   0)   'green3'
  3673 	(  0 139   0)   'green4'
  3680 	(  0 139   0)   'green4'
  3674 	(173 255  47)   'GreenYellow'
       
  3675 	(240 255 240)   'honeydew'
  3681 	(240 255 240)   'honeydew'
  3676 	(240 255 240)   'honeydew1'
  3682 	(240 255 240)   'honeydew1'
  3677 	(224 238 224)   'honeydew2'
  3683 	(224 238 224)   'honeydew2'
  3678 	(193 205 193)   'honeydew3'
  3684 	(193 205 193)   'honeydew3'
  3679 	(131 139 131)   'honeydew4'
  3685 	(131 139 131)   'honeydew4'
  3680 	(255 105 180)   'hot pink'
  3686 	(255 105 180)   'hotpink'
  3681 	(255 105 180)   'HotPink'
       
  3682 	(255 110 180)   'HotPink1'
  3687 	(255 110 180)   'HotPink1'
  3683 	(238 106 167)   'HotPink2'
  3688 	(238 106 167)   'HotPink2'
  3684 	(205  96 144)   'HotPink3'
  3689 	(205  96 144)   'HotPink3'
  3685 	(139  58  98)   'HotPink4'
  3690 	(139  58  98)   'HotPink4'
  3686 	(205  92  92)   'indian red'
  3691 	(205  92  92)   'indianred'
  3687 	(205  92  92)   'IndianRed'
       
  3688 	(255 106 106)   'IndianRed1'
  3692 	(255 106 106)   'IndianRed1'
  3689 	(238  99  99)   'IndianRed2'
  3693 	(238  99  99)   'IndianRed2'
  3690 	(205  85  85)   'IndianRed3'
  3694 	(205  85  85)   'IndianRed3'
  3691 	(139  58  58)   'IndianRed4'
  3695 	(139  58  58)   'IndianRed4'
  3692 	(255 255 240)   'ivory'
  3696 	(255 255 240)   'ivory'
  3698 	(255 246 143)   'khaki1'
  3702 	(255 246 143)   'khaki1'
  3699 	(238 230 133)   'khaki2'
  3703 	(238 230 133)   'khaki2'
  3700 	(205 198 115)   'khaki3'
  3704 	(205 198 115)   'khaki3'
  3701 	(139 134  78)   'khaki4'
  3705 	(139 134  78)   'khaki4'
  3702 	(230 230 250)   'lavender'
  3706 	(230 230 250)   'lavender'
  3703 	(255 240 245)   'lavender blush'
  3707 	(255 240 245)   'lavenderblush'
  3704 	(255 240 245)   'LavenderBlush'
       
  3705 	(255 240 245)   'LavenderBlush1'
  3708 	(255 240 245)   'LavenderBlush1'
  3706 	(238 224 229)   'LavenderBlush2'
  3709 	(238 224 229)   'LavenderBlush2'
  3707 	(205 193 197)   'LavenderBlush3'
  3710 	(205 193 197)   'LavenderBlush3'
  3708 	(139 131 134)   'LavenderBlush4'
  3711 	(139 131 134)   'LavenderBlush4'
  3709 	(124 252   0)   'lawn green'
  3712 	(124 252   0)   'lawngreen'
  3710 	(124 252   0)   'LawnGreen'
  3713 	(255 250 205)   'lemonchiffon'
  3711 	(255 250 205)   'lemon chiffon'
       
  3712 	(255 250 205)   'LemonChiffon'
       
  3713 	(255 250 205)   'LemonChiffon1'
  3714 	(255 250 205)   'LemonChiffon1'
  3714 	(238 233 191)   'LemonChiffon2'
  3715 	(238 233 191)   'LemonChiffon2'
  3715 	(205 201 165)   'LemonChiffon3'
  3716 	(205 201 165)   'LemonChiffon3'
  3716 	(139 137 112)   'LemonChiffon4'
  3717 	(139 137 112)   'LemonChiffon4'
  3717 	(173 216 230)   'light blue'
  3718 	(173 216 230)   'lightblue'
  3718 	(240 128 128)   'light coral'
  3719 	(240 128 128)   'lightcoral'
  3719 	(224 255 255)   'light cyan'
  3720 	(224 255 255)   'lightcyan'
  3720 	(238 221 130)   'light goldenrod'
  3721 	(238 221 130)   'lightgoldenrod'
  3721 	(250 250 210)   'light goldenrod yellow'
  3722 	(250 250 210)   'lightgoldenrodyellow'
  3722 	(211 211 211)   'light gray'
  3723 	(211 211 211)   'lightgray'
  3723 	(144 238 144)   'light green'
  3724 	(144 238 144)   'lightgreen'
  3724 	(211 211 211)   'light grey'
  3725 	(211 211 211)   'lightgrey'
  3725 	(255 182 193)   'light pink'
  3726 	(255 182 193)   'lightpink'
  3726 	(255 160 122)   'light salmon'
  3727 	(255 160 122)   'lightsalmon'
  3727 	( 32 178 170)   'light sea green'
  3728 	( 32 178 170)   'lightseagreen'
  3728 	(135 206 250)   'light sky blue'
  3729 	(135 206 250)   'lightskyblue'
  3729 	(132 112 255)   'light slate blue'
  3730 	(132 112 255)   'lightslateblue'
  3730 	(119 136 153)   'light slate gray'
  3731 	(119 136 153)   'lightslategray'
  3731 	(119 136 153)   'light slate grey'
  3732 	(119 136 153)   'lightslategrey'
  3732 	(176 196 222)   'light steel blue'
  3733 	(176 196 222)   'lightsteelblue'
  3733 	(255 255 224)   'light yellow'
  3734 	(255 255 224)   'lightyellow'
  3734 	(173 216 230)   'LightBlue'
       
  3735 	(191 239 255)   'LightBlue1'
  3735 	(191 239 255)   'LightBlue1'
  3736 	(178 223 238)   'LightBlue2'
  3736 	(178 223 238)   'LightBlue2'
  3737 	(154 192 205)   'LightBlue3'
  3737 	(154 192 205)   'LightBlue3'
  3738 	(104 131 139)   'LightBlue4'
  3738 	(104 131 139)   'LightBlue4'
  3739 	(240 128 128)   'LightCoral'
       
  3740 	(224 255 255)   'LightCyan'
       
  3741 	(224 255 255)   'LightCyan1'
  3739 	(224 255 255)   'LightCyan1'
  3742 	(209 238 238)   'LightCyan2'
  3740 	(209 238 238)   'LightCyan2'
  3743 	(180 205 205)   'LightCyan3'
  3741 	(180 205 205)   'LightCyan3'
  3744 	(122 139 139)   'LightCyan4'
  3742 	(122 139 139)   'LightCyan4'
  3745 	(238 221 130)   'LightGoldenrod'
       
  3746 	(255 236 139)   'LightGoldenrod1'
  3743 	(255 236 139)   'LightGoldenrod1'
  3747 	(238 220 130)   'LightGoldenrod2'
  3744 	(238 220 130)   'LightGoldenrod2'
  3748 	(205 190 112)   'LightGoldenrod3'
  3745 	(205 190 112)   'LightGoldenrod3'
  3749 	(139 129  76)   'LightGoldenrod4'
  3746 	(139 129  76)   'LightGoldenrod4'
  3750 	(250 250 210)   'LightGoldenrodYellow'
       
  3751 	(211 211 211)   'LightGray'
       
  3752 	(144 238 144)   'LightGreen'
       
  3753 	(211 211 211)   'LightGrey'
       
  3754 	(255 182 193)   'LightPink'
       
  3755 	(255 174 185)   'LightPink1'
  3747 	(255 174 185)   'LightPink1'
  3756 	(238 162 173)   'LightPink2'
  3748 	(238 162 173)   'LightPink2'
  3757 	(205 140 149)   'LightPink3'
  3749 	(205 140 149)   'LightPink3'
  3758 	(139  95 101)   'LightPink4'
  3750 	(139  95 101)   'LightPink4'
  3759 	(255 160 122)   'LightSalmon'
       
  3760 	(255 160 122)   'LightSalmon1'
  3751 	(255 160 122)   'LightSalmon1'
  3761 	(238 149 114)   'LightSalmon2'
  3752 	(238 149 114)   'LightSalmon2'
  3762 	(205 129  98)   'LightSalmon3'
  3753 	(205 129  98)   'LightSalmon3'
  3763 	(139  87  66)   'LightSalmon4'
  3754 	(139  87  66)   'LightSalmon4'
  3764 	( 32 178 170)   'LightSeaGreen'
       
  3765 	(135 206 250)   'LightSkyBlue'
       
  3766 	(176 226 255)   'LightSkyBlue1'
  3755 	(176 226 255)   'LightSkyBlue1'
  3767 	(164 211 238)   'LightSkyBlue2'
  3756 	(164 211 238)   'LightSkyBlue2'
  3768 	(141 182 205)   'LightSkyBlue3'
  3757 	(141 182 205)   'LightSkyBlue3'
  3769 	( 96 123 139)   'LightSkyBlue4'
  3758 	( 96 123 139)   'LightSkyBlue4'
  3770 	(132 112 255)   'LightSlateBlue'
       
  3771 	(119 136 153)   'LightSlateGray'
       
  3772 	(119 136 153)   'LightSlateGrey'
       
  3773 	(176 196 222)   'LightSteelBlue'
       
  3774 	(202 225 255)   'LightSteelBlue1'
  3759 	(202 225 255)   'LightSteelBlue1'
  3775 	(188 210 238)   'LightSteelBlue2'
  3760 	(188 210 238)   'LightSteelBlue2'
  3776 	(162 181 205)   'LightSteelBlue3'
  3761 	(162 181 205)   'LightSteelBlue3'
  3777 	(110 123 139)   'LightSteelBlue4'
  3762 	(110 123 139)   'LightSteelBlue4'
  3778 	(255 255 224)   'LightYellow'
       
  3779 	(255 255 224)   'LightYellow1'
  3763 	(255 255 224)   'LightYellow1'
  3780 	(238 238 209)   'LightYellow2'
  3764 	(238 238 209)   'LightYellow2'
  3781 	(205 205 180)   'LightYellow3'
  3765 	(205 205 180)   'LightYellow3'
  3782 	(139 139 122)   'LightYellow4'
  3766 	(139 139 122)   'LightYellow4'
  3783 	( 50 205  50)   'lime green'
  3767 	( 50 205  50)   'limegreen'
  3784 	( 50 205  50)   'LimeGreen'
       
  3785 	(250 240 230)   'linen'
  3768 	(250 240 230)   'linen'
  3786 	(255   0 255)   'magenta'
  3769 	(255   0 255)   'magenta'
  3787 	(255   0 255)   'magenta1'
  3770 	(255   0 255)   'magenta1'
  3788 	(238   0 238)   'magenta2'
  3771 	(238   0 238)   'magenta2'
  3789 	(205   0 205)   'magenta3'
  3772 	(205   0 205)   'magenta3'
  3791 	(176  48  96)   'maroon'
  3774 	(176  48  96)   'maroon'
  3792 	(255  52 179)   'maroon1'
  3775 	(255  52 179)   'maroon1'
  3793 	(238  48 167)   'maroon2'
  3776 	(238  48 167)   'maroon2'
  3794 	(205  41 144)   'maroon3'
  3777 	(205  41 144)   'maroon3'
  3795 	(139  28  98)   'maroon4'
  3778 	(139  28  98)   'maroon4'
  3796 	(102 205 170)   'medium aquamarine'
  3779 	(102 205 170)   'mediumaquamarine'
  3797 	(  0   0 205)   'medium blue'
  3780 	(  0   0 205)   'mediumblue'
  3798 	(186  85 211)   'medium orchid'
  3781 	(186  85 211)   'mediumorchid'
  3799 	(147 112 219)   'medium purple'
  3782 	(147 112 219)   'mediumpurple'
  3800 	( 60 179 113)   'medium sea green'
  3783 	( 60 179 113)   'mediumseagreen'
  3801 	(123 104 238)   'medium slate blue'
  3784 	(123 104 238)   'mediumslateblue'
  3802 	(  0 250 154)   'medium spring green'
  3785 	(  0 250 154)   'mediumspringgreen'
  3803 	( 72 209 204)   'medium turquoise'
  3786 	( 72 209 204)   'mediumturquoise'
  3804 	(199  21 133)   'medium violet red'
  3787 	(199  21 133)   'mediumvioletred'
  3805 	(102 205 170)   'MediumAquamarine'
       
  3806 	(  0   0 205)   'MediumBlue'
       
  3807 	(186  85 211)   'MediumOrchid'
       
  3808 	(224 102 255)   'MediumOrchid1'
  3788 	(224 102 255)   'MediumOrchid1'
  3809 	(209  95 238)   'MediumOrchid2'
  3789 	(209  95 238)   'MediumOrchid2'
  3810 	(180  82 205)   'MediumOrchid3'
  3790 	(180  82 205)   'MediumOrchid3'
  3811 	(122  55 139)   'MediumOrchid4'
  3791 	(122  55 139)   'MediumOrchid4'
  3812 	(147 112 219)   'MediumPurple'
       
  3813 	(171 130 255)   'MediumPurple1'
  3792 	(171 130 255)   'MediumPurple1'
  3814 	(159 121 238)   'MediumPurple2'
  3793 	(159 121 238)   'MediumPurple2'
  3815 	(137 104 205)   'MediumPurple3'
  3794 	(137 104 205)   'MediumPurple3'
  3816 	( 93  71 139)   'MediumPurple4'
  3795 	( 93  71 139)   'MediumPurple4'
  3817 	( 60 179 113)   'MediumSeaGreen'
  3796 	( 25  25 112)   'midnightblue'
  3818 	(123 104 238)   'MediumSlateBlue'
  3797 	(245 255 250)   'mintcream'
  3819 	(  0 250 154)   'MediumSpringGreen'
  3798 	(255 228 225)   'mistyrose'
  3820 	( 72 209 204)   'MediumTurquoise'
       
  3821 	(199  21 133)   'MediumVioletRed'
       
  3822 	( 25  25 112)   'midnight blue'
       
  3823 	( 25  25 112)   'MidnightBlue'
       
  3824 	(245 255 250)   'mint cream'
       
  3825 	(245 255 250)   'MintCream'
       
  3826 	(255 228 225)   'misty rose'
       
  3827 	(255 228 225)   'MistyRose'
       
  3828 	(255 228 225)   'MistyRose1'
  3799 	(255 228 225)   'MistyRose1'
  3829 	(238 213 210)   'MistyRose2'
  3800 	(238 213 210)   'MistyRose2'
  3830 	(205 183 181)   'MistyRose3'
  3801 	(205 183 181)   'MistyRose3'
  3831 	(139 125 123)   'MistyRose4'
  3802 	(139 125 123)   'MistyRose4'
  3832 	(255 228 181)   'moccasin'
  3803 	(255 228 181)   'moccasin'
  3833 	(255 222 173)   'navajo white'
  3804 	(255 222 173)   'navajowhite'
  3834 	(255 222 173)   'NavajoWhite'
       
  3835 	(255 222 173)   'NavajoWhite1'
  3805 	(255 222 173)   'NavajoWhite1'
  3836 	(238 207 161)   'NavajoWhite2'
  3806 	(238 207 161)   'NavajoWhite2'
  3837 	(205 179 139)   'NavajoWhite3'
  3807 	(205 179 139)   'NavajoWhite3'
  3838 	(139 121  94)   'NavajoWhite4'
  3808 	(139 121  94)   'NavajoWhite4'
  3839 	(  0   0 128)   'navy'
  3809 	(  0   0 128)   'navy'
  3840 	(  0   0 128)   'navy blue'
  3810 	(  0   0 128)   'navyblue'
  3841 	(  0   0 128)   'NavyBlue'
  3811 	(253 245 230)   'oldlace'
  3842 	(253 245 230)   'old lace'
  3812 	(107 142  35)   'olivedrab'
  3843 	(253 245 230)   'OldLace'
       
  3844 	(107 142  35)   'olive drab'
       
  3845 	(107 142  35)   'OliveDrab'
       
  3846 	(192 255  62)   'OliveDrab1'
  3813 	(192 255  62)   'OliveDrab1'
  3847 	(179 238  58)   'OliveDrab2'
  3814 	(179 238  58)   'OliveDrab2'
  3848 	(154 205  50)   'OliveDrab3'
  3815 	(154 205  50)   'OliveDrab3'
  3849 	(105 139  34)   'OliveDrab4'
  3816 	(105 139  34)   'OliveDrab4'
  3850 	(255 165   0)   'orange'
  3817 	(255 165   0)   'orange'
  3851 	(255  69   0)   'orange red'
       
  3852 	(255 165   0)   'orange1'
  3818 	(255 165   0)   'orange1'
  3853 	(238 154   0)   'orange2'
  3819 	(238 154   0)   'orange2'
  3854 	(205 133   0)   'orange3'
  3820 	(205 133   0)   'orange3'
  3855 	(139  90   0)   'orange4'
  3821 	(139  90   0)   'orange4'
  3856 	(255  69   0)   'OrangeRed'
  3822 	(255  69   0)   'orangered'
  3857 	(255  69   0)   'OrangeRed1'
  3823 	(255  69   0)   'OrangeRed1'
  3858 	(238  64   0)   'OrangeRed2'
  3824 	(238  64   0)   'OrangeRed2'
  3859 	(205  55   0)   'OrangeRed3'
  3825 	(205  55   0)   'OrangeRed3'
  3860 	(139  37   0)   'OrangeRed4'
  3826 	(139  37   0)   'OrangeRed4'
  3861 	(218 112 214)   'orchid'
  3827 	(218 112 214)   'orchid'
  3862 	(255 131 250)   'orchid1'
  3828 	(255 131 250)   'orchid1'
  3863 	(238 122 233)   'orchid2'
  3829 	(238 122 233)   'orchid2'
  3864 	(205 105 201)   'orchid3'
  3830 	(205 105 201)   'orchid3'
  3865 	(139  71 137)   'orchid4'
  3831 	(139  71 137)   'orchid4'
  3866 	(238 232 170)   'pale goldenrod'
  3832 	(238 232 170)   'palegoldenrod'
  3867 	(152 251 152)   'pale green'
  3833 	(152 251 152)   'palegreen'
  3868 	(175 238 238)   'pale turquoise'
  3834 	(175 238 238)   'paleturquoise'
  3869 	(219 112 147)   'pale violet red'
  3835 	(219 112 147)   'palevioletred'
  3870 	(238 232 170)   'PaleGoldenrod'
       
  3871 	(152 251 152)   'PaleGreen'
       
  3872 	(154 255 154)   'PaleGreen1'
  3836 	(154 255 154)   'PaleGreen1'
  3873 	(144 238 144)   'PaleGreen2'
  3837 	(144 238 144)   'PaleGreen2'
  3874 	(124 205 124)   'PaleGreen3'
  3838 	(124 205 124)   'PaleGreen3'
  3875 	( 84 139  84)   'PaleGreen4'
  3839 	( 84 139  84)   'PaleGreen4'
  3876 	(175 238 238)   'PaleTurquoise'
       
  3877 	(187 255 255)   'PaleTurquoise1'
  3840 	(187 255 255)   'PaleTurquoise1'
  3878 	(174 238 238)   'PaleTurquoise2'
  3841 	(174 238 238)   'PaleTurquoise2'
  3879 	(150 205 205)   'PaleTurquoise3'
  3842 	(150 205 205)   'PaleTurquoise3'
  3880 	(102 139 139)   'PaleTurquoise4'
  3843 	(102 139 139)   'PaleTurquoise4'
  3881 	(219 112 147)   'PaleVioletRed'
       
  3882 	(255 130 171)   'PaleVioletRed1'
  3844 	(255 130 171)   'PaleVioletRed1'
  3883 	(238 121 159)   'PaleVioletRed2'
  3845 	(238 121 159)   'PaleVioletRed2'
  3884 	(205 104 137)   'PaleVioletRed3'
  3846 	(205 104 137)   'PaleVioletRed3'
  3885 	(139  71  93)   'PaleVioletRed4'
  3847 	(139  71  93)   'PaleVioletRed4'
  3886 	(255 239 213)   'papaya whip'
  3848 	(255 239 213)   'papayawhip'
  3887 	(255 239 213)   'PapayaWhip'
  3849 	(255 218 185)   'peachpuff'
  3888 	(255 218 185)   'peach puff'
       
  3889 	(255 218 185)   'PeachPuff'
       
  3890 	(255 218 185)   'PeachPuff1'
  3850 	(255 218 185)   'PeachPuff1'
  3891 	(238 203 173)   'PeachPuff2'
  3851 	(238 203 173)   'PeachPuff2'
  3892 	(205 175 149)   'PeachPuff3'
  3852 	(205 175 149)   'PeachPuff3'
  3893 	(139 119 101)   'PeachPuff4'
  3853 	(139 119 101)   'PeachPuff4'
  3894 	(205 133  63)   'peru'
  3854 	(205 133  63)   'peru'
  3900 	(221 160 221)   'plum'
  3860 	(221 160 221)   'plum'
  3901 	(255 187 255)   'plum1'
  3861 	(255 187 255)   'plum1'
  3902 	(238 174 238)   'plum2'
  3862 	(238 174 238)   'plum2'
  3903 	(205 150 205)   'plum3'
  3863 	(205 150 205)   'plum3'
  3904 	(139 102 139)   'plum4'
  3864 	(139 102 139)   'plum4'
  3905 	(176 224 230)   'powder blue'
  3865 	(176 224 230)   'powderblue'
  3906 	(176 224 230)   'PowderBlue'
       
  3907 	(160  32 240)   'purple'
  3866 	(160  32 240)   'purple'
  3908 	(155  48 255)   'purple1'
  3867 	(155  48 255)   'purple1'
  3909 	(145  44 238)   'purple2'
  3868 	(145  44 238)   'purple2'
  3910 	(125  38 205)   'purple3'
  3869 	(125  38 205)   'purple3'
  3911 	( 85  26 139)   'purple4'
  3870 	( 85  26 139)   'purple4'
  3912 	(255   0   0)   'red'
  3871 	(255   0   0)   'red'
  3913 	(255   0   0)   'red1'
  3872 	(255   0   0)   'red1'
  3914 	(238   0   0)   'red2'
  3873 	(238   0   0)   'red2'
  3915 	(205   0   0)   'red3'
  3874 	(205   0   0)   'red3'
  3916 	(139   0   0)   'red4'
  3875 	(139   0   0)   'red4'
  3917 	(188 143 143)   'rosy brown'
  3876 	(188 143 143)   'rosybrown'
  3918 	(188 143 143)   'RosyBrown'
       
  3919 	(255 193 193)   'RosyBrown1'
  3877 	(255 193 193)   'RosyBrown1'
  3920 	(238 180 180)   'RosyBrown2'
  3878 	(238 180 180)   'RosyBrown2'
  3921 	(205 155 155)   'RosyBrown3'
  3879 	(205 155 155)   'RosyBrown3'
  3922 	(139 105 105)   'RosyBrown4'
  3880 	(139 105 105)   'RosyBrown4'
  3923 	( 65 105 225)   'royal blue'
  3881 	( 65 105 225)   'royalblue'
  3924 	( 65 105 225)   'RoyalBlue'
       
  3925 	( 72 118 255)   'RoyalBlue1'
  3882 	( 72 118 255)   'RoyalBlue1'
  3926 	( 67 110 238)   'RoyalBlue2'
  3883 	( 67 110 238)   'RoyalBlue2'
  3927 	( 58  95 205)   'RoyalBlue3'
  3884 	( 58  95 205)   'RoyalBlue3'
  3928 	( 39  64 139)   'RoyalBlue4'
  3885 	( 39  64 139)   'RoyalBlue4'
  3929 	(139  69  19)   'saddle brown'
  3886 	(139  69  19)   'saddlebrown'
  3930 	(139  69  19)   'SaddleBrown'
       
  3931 	(250 128 114)   'salmon'
  3887 	(250 128 114)   'salmon'
  3932 	(255 140 105)   'salmon1'
  3888 	(255 140 105)   'salmon1'
  3933 	(238 130  98)   'salmon2'
  3889 	(238 130  98)   'salmon2'
  3934 	(205 112  84)   'salmon3'
  3890 	(205 112  84)   'salmon3'
  3935 	(139  76  57)   'salmon4'
  3891 	(139  76  57)   'salmon4'
  3936 	(244 164  96)   'sandy brown'
  3892 	(244 164  96)   'sandybrown'
  3937 	(244 164  96)   'SandyBrown'
  3893 	( 255 206 137)  'scoActiveBackground'
  3938 	( 255 206 137)   'scoActiveBackground'
       
  3939 	( 43  45  49)   'scoActiveForeground'
  3894 	( 43  45  49)   'scoActiveForeground'
  3940 	( 254 222 255)   'scoActiveTopShadow'
  3895 	( 254 222 255)  'scoActiveTopShadow'
  3941 	( 172 186 204)   'scoAltBackground'
  3896 	( 172 186 204)  'scoAltBackground'
  3942 	( 203 203 192)   'scoBackground'
  3897 	( 203 203 192)  'scoBackground'
  3943 	( 11   0 113)   'scoForeground'
  3898 	( 11   0 113)   'scoForeground'
  3944 	( 141 178 215)   'scoHighlight'
  3899 	( 141 178 215)  'scoHighlight'
  3945 	( 255 240 248)   'scoTopShadow'
  3900 	( 255 240 248)  'scoTopShadow'
  3946 	( 46 139  87)   'sea green'
  3901 	( 46 139  87)   'seagreen'
  3947 	( 46 139  87)   'SeaGreen'
       
  3948 	( 84 255 159)   'SeaGreen1'
  3902 	( 84 255 159)   'SeaGreen1'
  3949 	( 78 238 148)   'SeaGreen2'
  3903 	( 78 238 148)   'SeaGreen2'
  3950 	( 67 205 128)   'SeaGreen3'
  3904 	( 67 205 128)   'SeaGreen3'
  3951 	( 46 139  87)   'SeaGreen4'
  3905 	( 46 139  87)   'SeaGreen4'
  3952 	(255 245 238)   'seashell'
  3906 	(255 245 238)   'seashell'
  3953 	(255 245 238)   'seashell1'
  3907 	(255 245 238)   'seashell1'
  3954 	(238 229 222)   'seashell2'
  3908 	(238 229 222)   'seashell2'
  3955 	(205 197 191)   'seashell3'
  3909 	(205 197 191)   'seashell3'
  3956 	(139 134 130)   'seashell4'
  3910 	(139 134 130)   'seashell4'
  3957 	(142 56 142)   'sgi beet'
  3911 	(142 56 142)    'sgi beet'
  3958 	(197 193 170)   'sgi bright gray'
  3912 	(197 193 170)   'sgi bright gray'
  3959 	(197 193 170)   'sgi bright grey'
  3913 	(197 193 170)   'sgi bright grey'
  3960 	(113 198 113)   'sgi chartreuse'
  3914 	(113 198 113)   'sgi chartreuse'
  3961 	( 85  85  85)   'sgi dark gray'
  3915 	( 85  85  85)   'sgi dark gray'
  3962 	( 85  85  85)   'sgi dark grey'
  3916 	( 85  85  85)   'sgi dark grey'
  4023 	( 56 142 142)   'sgi teal'
  3977 	( 56 142 142)   'sgi teal'
  4024 	( 40  40  40)   'sgi very dark gray'
  3978 	( 40  40  40)   'sgi very dark gray'
  4025 	( 40  40  40)   'sgi very dark grey'
  3979 	( 40  40  40)   'sgi very dark grey'
  4026 	(214 214 214)   'sgi very light gray'
  3980 	(214 214 214)   'sgi very light gray'
  4027 	(214 214 214)   'sgi very light grey'
  3981 	(214 214 214)   'sgi very light grey'
  4028 	(142 56 142)   'SGIBeet'
  3982 	(142 56 142)    'SGIBeet'
  4029 	(197 193 170)   'SGIBrightGray'
  3983 	(197 193 170)   'SGIBrightGray'
  4030 	(197 193 170)   'SGIBrightGrey'
  3984 	(197 193 170)   'SGIBrightGrey'
  4031 	(113 198 113)   'SGIChartreuse'
  3985 	(113 198 113)   'SGIChartreuse'
  4032 	( 85  85  85)   'SGIDarkGray'
  3986 	( 85  85  85)   'SGIDarkGray'
  4033 	( 85  85  85)   'SGIDarkGrey'
  3987 	( 85  85  85)   'SGIDarkGrey'
  4099 	(160  82  45)   'sienna'
  4053 	(160  82  45)   'sienna'
  4100 	(255 130  71)   'sienna1'
  4054 	(255 130  71)   'sienna1'
  4101 	(238 121  66)   'sienna2'
  4055 	(238 121  66)   'sienna2'
  4102 	(205 104  57)   'sienna3'
  4056 	(205 104  57)   'sienna3'
  4103 	(139  71  38)   'sienna4'
  4057 	(139  71  38)   'sienna4'
  4104 	(135 206 235)   'sky blue'
  4058 	(135 206 235)   'skyblue'
  4105 	(135 206 235)   'SkyBlue'
       
  4106 	(135 206 255)   'SkyBlue1'
  4059 	(135 206 255)   'SkyBlue1'
  4107 	(126 192 238)   'SkyBlue2'
  4060 	(126 192 238)   'SkyBlue2'
  4108 	(108 166 205)   'SkyBlue3'
  4061 	(108 166 205)   'SkyBlue3'
  4109 	( 74 112 139)   'SkyBlue4'
  4062 	( 74 112 139)   'SkyBlue4'
  4110 	(106  90 205)   'slate blue'
  4063 	(112 128 144)   'slategray'
  4111 	(112 128 144)   'slate gray'
  4064 	(112 128 144)   'slategrey'
  4112 	(112 128 144)   'slate grey'
  4065 	(106  90 205)   'slateblue'
  4113 	(106  90 205)   'SlateBlue'
       
  4114 	(131 111 255)   'SlateBlue1'
  4066 	(131 111 255)   'SlateBlue1'
  4115 	(122 103 238)   'SlateBlue2'
  4067 	(122 103 238)   'SlateBlue2'
  4116 	(105  89 205)   'SlateBlue3'
  4068 	(105  89 205)   'SlateBlue3'
  4117 	( 71  60 139)   'SlateBlue4'
  4069 	( 71  60 139)   'SlateBlue4'
  4118 	(112 128 144)   'SlateGray'
       
  4119 	(198 226 255)   'SlateGray1'
  4070 	(198 226 255)   'SlateGray1'
  4120 	(185 211 238)   'SlateGray2'
  4071 	(185 211 238)   'SlateGray2'
  4121 	(159 182 205)   'SlateGray3'
  4072 	(159 182 205)   'SlateGray3'
  4122 	(108 123 139)   'SlateGray4'
  4073 	(108 123 139)   'SlateGray4'
  4123 	(112 128 144)   'SlateGrey'
       
  4124 	(255 250 250)   'snow'
  4074 	(255 250 250)   'snow'
  4125 	(255 250 250)   'snow1'
  4075 	(255 250 250)   'snow1'
  4126 	(238 233 233)   'snow2'
  4076 	(238 233 233)   'snow2'
  4127 	(205 201 201)   'snow3'
  4077 	(205 201 201)   'snow3'
  4128 	(139 137 137)   'snow4'
  4078 	(139 137 137)   'snow4'
  4129 	(  0 255 127)   'spring green'
  4079 	(  0 255 127)   'springgreen'
  4130 	(  0 255 127)   'SpringGreen'
       
  4131 	(  0 255 127)   'SpringGreen1'
  4080 	(  0 255 127)   'SpringGreen1'
  4132 	(  0 238 118)   'SpringGreen2'
  4081 	(  0 238 118)   'SpringGreen2'
  4133 	(  0 205 102)   'SpringGreen3'
  4082 	(  0 205 102)   'SpringGreen3'
  4134 	(  0 139  69)   'SpringGreen4'
  4083 	(  0 139  69)   'SpringGreen4'
  4135 	( 70 130 180)   'steel blue'
  4084 	( 70 130 180)   'steelblue'
  4136 	( 70 130 180)   'SteelBlue'
       
  4137 	( 99 184 255)   'SteelBlue1'
  4085 	( 99 184 255)   'SteelBlue1'
  4138 	( 92 172 238)   'SteelBlue2'
  4086 	( 92 172 238)   'SteelBlue2'
  4139 	( 79 148 205)   'SteelBlue3'
  4087 	( 79 148 205)   'SteelBlue3'
  4140 	( 54 100 139)   'SteelBlue4'
  4088 	( 54 100 139)   'SteelBlue4'
  4141 	(210 180 140)   'tan'
  4089 	(210 180 140)   'tan'
  4157 	(  0 245 255)   'turquoise1'
  4105 	(  0 245 255)   'turquoise1'
  4158 	(  0 229 238)   'turquoise2'
  4106 	(  0 229 238)   'turquoise2'
  4159 	(  0 197 205)   'turquoise3'
  4107 	(  0 197 205)   'turquoise3'
  4160 	(  0 134 139)   'turquoise4'
  4108 	(  0 134 139)   'turquoise4'
  4161 	(238 130 238)   'violet'
  4109 	(238 130 238)   'violet'
  4162 	(208  32 144)   'violet red'
  4110 	(208  32 144)   'violetred'
  4163 	(208  32 144)   'VioletRed'
       
  4164 	(255  62 150)   'VioletRed1'
  4111 	(255  62 150)   'VioletRed1'
  4165 	(238  58 140)   'VioletRed2'
  4112 	(238  58 140)   'VioletRed2'
  4166 	(205  50 120)   'VioletRed3'
  4113 	(205  50 120)   'VioletRed3'
  4167 	(139  34  82)   'VioletRed4'
  4114 	(139  34  82)   'VioletRed4'
  4168 	(245 222 179)   'wheat'
  4115 	(245 222 179)   'wheat'
  4169 	(255 231 186)   'wheat1'
  4116 	(255 231 186)   'wheat1'
  4170 	(238 216 174)   'wheat2'
  4117 	(238 216 174)   'wheat2'
  4171 	(205 186 150)   'wheat3'
  4118 	(205 186 150)   'wheat3'
  4172 	(139 126 102)   'wheat4'
  4119 	(139 126 102)   'wheat4'
  4173 	(255 255 255)   'white'
  4120 	(255 255 255)   'white'
  4174 	(245 245 245)   'white smoke'
  4121 	(245 245 245)   'whitesmoke'
  4175 	(245 245 245)   'WhiteSmoke'
       
  4176 	(255 255   0)   'yellow'
  4122 	(255 255   0)   'yellow'
  4177 	(154 205  50)   'yellow green'
  4123 	(154 205  50)   'yellowgreen'
  4178 	(255 255   0)   'yellow1'
  4124 	(255 255   0)   'yellow1'
  4179 	(238 238   0)   'yellow2'
  4125 	(238 238   0)   'yellow2'
  4180 	(205 205   0)   'yellow3'
  4126 	(205 205   0)   'yellow3'
  4181 	(139 139   0)   'yellow4'
  4127 	(139 139   0)   'yellow4'
  4182 	(154 205  50)   'YellowGreen'   
       
  4183     ) pairWiseDo:[ :value :name |
  4128     ) pairWiseDo:[ :value :name |
  4184 	StandardColorValues at:name put:value
  4129 	StandardColorValues at:name put:value
  4185     ].
  4130     ].
  4186     "
  4131     "
  4187      WinWorkstation initializeStandardColorNames
  4132      WinWorkstation initializeStandardColorNames
  5870 
  5815 
  5871 getScaledRGBFromName:colorName into:aBlock
  5816 getScaledRGBFromName:colorName into:aBlock
  5872     "get scaled rgb components (0..16rFFFF) of color named colorName,
  5817     "get scaled rgb components (0..16rFFFF) of color named colorName,
  5873      and evaluate the 3-arg block, aBlock with them"
  5818      and evaluate the 3-arg block, aBlock with them"
  5874 
  5819 
  5875     |triple r g b found|
  5820     |triple r g b found cName|
  5876 
  5821 
  5877     r := g := b := 0.
  5822     r := g := b := 0.
  5878     found := false.
  5823     found := false.
  5879     (colorName startsWith:$#) ifTrue:[
  5824     (colorName startsWith:$#) ifTrue:[
  5880 	"/ color in r/g/b hex notation
  5825 	"/ color in r/g/b hex notation
  5881 	r := Integer readFrom:(colorName copyFrom:2 to:3) radix:16.
  5826 	r := Integer readFrom:(colorName copyFrom:2 to:3) radix:16.
  5882 	g := Integer readFrom:(colorName copyFrom:4 to:5) radix:16.
  5827 	g := Integer readFrom:(colorName copyFrom:4 to:5) radix:16.
  5883 	b := Integer readFrom:(colorName copyFrom:6 to:7) radix:16.
  5828 	b := Integer readFrom:(colorName copyFrom:6 to:7) radix:16.
  5884 	found := true.
  5829 	found := true.
  5885     ] ifFalse:[
  5830     ] ifFalse:[
  5886 
  5831 	cName := colorName asString.
  5887 	triple := StandardColorValues at:colorName asString ifAbsent:nil.
  5832 	triple := StandardColorValues at:cName ifAbsent:nil.
  5888 	triple isNil ifTrue:[
  5833 	triple isNil ifTrue:[
  5889 	    triple := StandardColorValues at:colorName asString asLowercase ifAbsent:nil.
  5834 	    "/ try lowercase name
       
  5835 	    cName := cName asLowercase.
       
  5836 	    triple := StandardColorValues at:cName ifAbsent:nil.
       
  5837 	    triple isNil ifTrue:[
       
  5838 		"/ try lowercase without intermixed spaces
       
  5839 		cName := cName asCollectionOfWords asStringWith:nil.
       
  5840 		triple := StandardColorValues at:cName ifAbsent:nil.
       
  5841 	    ].
  5890 	].
  5842 	].
  5891 	triple notNil ifTrue:[
  5843 	triple notNil ifTrue:[
  5892 	    r := triple at:1.
  5844 	    r := triple at:1.
  5893 	    g := triple at:2.
  5845 	    g := triple at:2.
  5894 	    b := triple at:3.
  5846 	    b := triple at:3.
  6378 # else
  6330 # else
  6379 		UpdateWindow(srcGcData->hWnd);
  6331 		UpdateWindow(srcGcData->hWnd);
  6380 # endif
  6332 # endif
  6381 #endif /* 0 */
  6333 #endif /* 0 */
  6382 
  6334 
       
  6335 #if 0
  6383 		UpdateWindow(srcGcData->hWnd);
  6336 		UpdateWindow(srcGcData->hWnd);
       
  6337 #else
       
  6338 		if (GetUpdateRect(srcGcData->hWnd, &upd, FALSE)) {
       
  6339 		    if ((upd.right >= upd.left)
       
  6340 		     && (upd.bottom >= upd.top)) {
       
  6341 			if (GetWindow_eventMask(srcGcData->hWnd) & ExposureMask) {
       
  6342 			    enqEvent(ENQ_AT_FRONT, ExposureMask,srcGcData->hWnd, __WM_GEXPOSE, 0, upd.left, upd.top, upd.right-upd.left+1, upd.bottom-upd.top+1);
       
  6343 			}
       
  6344 		    }
       
  6345 		}
       
  6346 #endif
  6384 		enqEvent(ENQ_AT_END, ExposureMask, srcGcData->hWnd, __WM_NOGEXPOSE, 0, 0, 0, 0, 0);
  6347 		enqEvent(ENQ_AT_END, ExposureMask, srcGcData->hWnd, __WM_NOGEXPOSE, 0, 0, 0, 0, 0);
  6385 		RETURN ( self );
  6348 		RETURN ( self );
  6386 	    }
  6349 	    }
  6387 
  6350 
  6388 #if 0
  6351 #if 0
  6623 	POINT p;
  6586 	POINT p;
  6624 	int __x = __intVal(px), __y = __intVal(py);
  6587 	int __x = __intVal(px), __y = __intVal(py);
  6625 	int savedLStyle = gcData->lStyle;
  6588 	int savedLStyle = gcData->lStyle;
  6626 	int savedLWidth = gcData->lineWidth;
  6589 	int savedLWidth = gcData->lineWidth;
  6627 
  6590 
       
  6591 #ifdef OLD
  6628 	/*
  6592 	/*
  6629 	 * a point is a point - no matter what lineWidth we have set before
  6593 	 * a point is a point - no matter what lineWidth we have set before
  6630 	 */
  6594 	 */
  6631 	if ((gcData->lStyle != PS_SOLID)
  6595 	if ((gcData->lStyle != PS_SOLID)
  6632 	 || (gcData->lineWidth > 1)) {
  6596 	 || (gcData->lineWidth > 1)) {
  6647 	    LineTo(hDC, __x+1, __y);
  6611 	    LineTo(hDC, __x+1, __y);
  6648 
  6612 
  6649 	    GcDataReleasePen(hDC, gcData);
  6613 	    GcDataReleasePen(hDC, gcData);
  6650 	}
  6614 	}
  6651 
  6615 
  6652 #ifndef CACHE_LAST_DC
  6616 # ifndef CACHE_LAST_DC
  6653 	_releaseDC(gcData);
  6617 	_releaseDC(gcData);
  6654 #endif
  6618 # endif
  6655 	if ((gcData->lStyle != savedLStyle)
  6619 	if ((gcData->lStyle != savedLStyle)
  6656 	 || (gcData->lineWidth != savedLWidth)) {
  6620 	 || (gcData->lineWidth != savedLWidth)) {
  6657 	    FLUSH_CACHED_DC(gcData);
  6621 	    FLUSH_CACHED_DC(gcData);
  6658 	    gcData->lStyle = savedLStyle;
  6622 	    gcData->lStyle = savedLStyle;
  6659 	    gcData->lineWidth = savedLWidth;
  6623 	    gcData->lineWidth = savedLWidth;
  6660 	}
  6624 	}
  6661 
  6625 #else
       
  6626 	hDC = _getDC(gcData);
       
  6627 	SetPixel(hDC, __x, __y, gcData->fgColor);
       
  6628 # ifndef CACHE_LAST_DC
       
  6629 	_releaseDC(gcData);
       
  6630 # endif
       
  6631 #endif
  6662 	RETURN ( self );
  6632 	RETURN ( self );
  6663     }
  6633     }
  6664 %}
  6634 %}
  6665 !
  6635 !
  6666 
  6636 
  7171 	    } else {
  7141 	    } else {
  7172 		HPEN hSavePen;
  7142 		HPEN hSavePen;
  7173 
  7143 
  7174 		rct.left = __intVal(x);
  7144 		rct.left = __intVal(x);
  7175 		rct.top = __intVal(y);
  7145 		rct.top = __intVal(y);
  7176 		rct.right = rct.left + w + 1;
  7146 		rct.right = rct.left + w + 1;    /* definitiv ! */
  7177 		rct.bottom = rct.top + h + 1;
  7147 		rct.bottom = rct.top + h + 1;
  7178 
  7148 
  7179 		CPRINTF(("fillRectangle:%d.%d -> %d.%d\n",rct.left,rct.top,rct.right,rct.bottom));
  7149 		CPRINTF(("fillRectangle:%d.%d -> %d.%d\n",rct.left,rct.top,rct.right,rct.bottom));
  7180 
  7150 
  7181 		/*
  7151 		/*
  7822 			rec.bottom = y + h - 1;
  7792 			rec.bottom = y + h - 1;
  7823 			// printf("erase %d %d %d %d\n",rec.left,rec.top,rec.right,rec.bottom);
  7793 			// printf("erase %d %d %d %d\n",rec.left,rec.top,rec.right,rec.bottom);
  7824 			SelectClipRgn(dc,0);
  7794 			SelectClipRgn(dc,0);
  7825 			FillRect(dc, &rec, br);
  7795 			FillRect(dc, &rec, br);
  7826 			if (mustDeleteBrush) {
  7796 			if (mustDeleteBrush) {
  7827 			    _DeleteObject(br, __LINE__);
  7797 			    _DeleteBrush(br, __LINE__);
  7828 			}
  7798 			}
  7829 		    }
  7799 		    }
  7830 		    ReleaseDC(ev->ev_hWnd,dc);
  7800 		    ReleaseDC(ev->ev_hWnd,dc);
  7831 		}
  7801 		}
  7832 #endif
  7802 #endif
  8424 	if (__isExternalAddress(aViewIdOrNil)) {
  8394 	if (__isExternalAddress(aViewIdOrNil)) {
  8425 	    wWanted = _HWNDVal(aViewIdOrNil);
  8395 	    wWanted = _HWNDVal(aViewIdOrNil);
  8426 	} else{
  8396 	} else{
  8427 	    wWanted = 0;
  8397 	    wWanted = 0;
  8428 	}
  8398 	}
  8429 	if (deqEvent(ev, wWanted, evMask)) {
  8399 	do { /* only to allow continue */
  8430 	    RETURN ( true );
  8400 	    if (deqEvent(ev, wWanted, evMask)) {
  8431 	}
  8401 		if ((ev->ev_hWnd == lastPos_win)
       
  8402 		 && (ev->ev_message == WM_WINDOWPOSCHANGED)
       
  8403 		 && ((ev->ev_arg1 != lastPos_x)
       
  8404 		     || (ev->ev_arg2 != lastPos_y)
       
  8405 		     || (ev->ev_arg3 != lastPos_w)
       
  8406 		     || (ev->ev_arg4 != lastPos_h))) {
       
  8407 		    /*
       
  8408 		     * ignore resize 
       
  8409 		     * (that event is an intermediate one)
       
  8410 		     */
       
  8411 		    continue;
       
  8412 		}
       
  8413 		RETURN ( true );
       
  8414 	    }
       
  8415 	} while (0);
  8432     }
  8416     }
  8433 %}.
  8417 %}.
  8434     ^ false
  8418     ^ false
  8435 !
  8419 !
  8436 
  8420 
 11657 	int clr;
 11641 	int clr;
 11658 	HBRUSH oldBrush;
 11642 	HBRUSH oldBrush;
 11659 
 11643 
 11660 	if (oldBrush = GetWindow_viewBgBrush(hWnd)) {
 11644 	if (oldBrush = GetWindow_viewBgBrush(hWnd)) {
 11661 	    SetWindow_viewBgBrush(hWnd, 0);
 11645 	    SetWindow_viewBgBrush(hWnd, 0);
 11662 	    _DeleteObject(oldBrush, __LINE__);
 11646 	    _DeleteBrush(oldBrush, __LINE__);
 11663 	}
 11647 	}
 11664 	clr = st2RGB(__intVal(aColorIndex), 0);
 11648 	clr = st2RGB(__intVal(aColorIndex), 0);
 11665 	SetWindow_viewBgColor(hWnd, clr);
 11649 	SetWindow_viewBgColor(hWnd, clr);
 11666 
 11650 
 11667 	RETURN (self);
 11651 	RETURN (self);
 11689 	else
 11673 	else
 11690 	    pixmap = 0;
 11674 	    pixmap = 0;
 11691 
 11675 
 11692 	if (oldBrush = GetWindow_viewBgBrush(hWnd)) {
 11676 	if (oldBrush = GetWindow_viewBgBrush(hWnd)) {
 11693 	    SetWindow_viewBgBrush(hWnd, 0);
 11677 	    SetWindow_viewBgBrush(hWnd, 0);
 11694 	    _DeleteObject(oldBrush, __LINE__);
 11678 	    _DeleteBrush(oldBrush, __LINE__);
 11695 	}
 11679 	}
 11696 	if (pixmap) {
 11680 	if (pixmap) {
 11697 	    newBrush = CreatePatternBrush(pixmap);
 11681 	    newBrush = CreatePatternBrush(pixmap);
 11698 	    SetWindow_viewBgBrush(newBrush, 0);
 11682 	    SetWindow_viewBgBrush(hWnd, newBrush);
 11699 /*
 11683 /*
 11700  *            SetBrushOrgEx(hDC, gcData->maskOrgX, gcData->maskOrgY, 0);       
 11684  *            SetBrushOrgEx(hDC, gcData->maskOrgX, gcData->maskOrgY, 0);       
 11701  */
 11685  */
 11702 	}
 11686 	}
 11703 
 11687 
 11876 ! !
 11860 ! !
 11877 
 11861 
 11878 !WinWorkstation class methodsFor:'documentation'!
 11862 !WinWorkstation class methodsFor:'documentation'!
 11879 
 11863 
 11880 version
 11864 version
 11881     ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.117 1999-05-06 19:59:52 cg Exp $'
 11865     ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.118 1999-05-08 15:46:18 cg Exp $'
 11882 ! !
 11866 ! !
 11883 WinWorkstation initialize!
 11867 WinWorkstation initialize!