(linenum→info "unix/slp.c:2238")

emacs/22.1/src/macfns.c

    1: /* Graphical user interface functions for Mac OS.
    2:    Copyright (C) 2000, 2001, 2002, 2003, 2004,
    3:                  2005, 2006, 2007 Free Software Foundation, Inc.
    4: 
    5: This file is part of GNU Emacs.
    6: 
    7: GNU Emacs is free software; you can redistribute it and/or modify
    8: it under the terms of the GNU General Public License as published by
    9: the Free Software Foundation; either version 2, or (at your option)
   10: any later version.
   11: 
   12: GNU Emacs is distributed in the hope that it will be useful,
   13: but WITHOUT ANY WARRANTY; without even the implied warranty of
   14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   15: GNU General Public License for more details.
   16: 
   17: You should have received a copy of the GNU General Public License
   18: along with GNU Emacs; see the file COPYING.  If not, write to
   19: the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
   20: Boston, MA 02110-1301, USA.  */
   21: 
   22: /* Contributed by Andrew Choi (akochoi@mac.com).  */
   23: 
   24: #include <config.h>
   25: #include <stdio.h>
   26: #include <math.h>
   27: 
   28: #include "lisp.h"
   29: #include "macterm.h"
   30: #include "frame.h"
   31: #include "window.h"
   32: #include "buffer.h"
   33: #include "intervals.h"
   34: #include "dispextern.h"
   35: #include "keyboard.h"
   36: #include "blockinput.h"
   37: #include <epaths.h>
   38: #include "charset.h"
   39: #include "coding.h"
   40: #include "fontset.h"
   41: #include "systime.h"
   42: #include "termhooks.h"
   43: #include "atimer.h"
   44: 
   45: #include <ctype.h>
   46: #include <sys/types.h>
   47: #include <sys/stat.h>
   48: #include <limits.h>
   49: #include <errno.h>
   50: #include <sys/param.h>
   51: 
   52: extern void free_frame_menubar ();
   53: 
   54: #if TARGET_API_MAC_CARBON
   55: 
   56: /* Carbon version info */
   57: 
   58: static Lisp_Object Vmac_carbon_version_string;
   59: 
   60: #endif  /* TARGET_API_MAC_CARBON */
   61: 
   62: /* Non-zero means we're allowed to display an hourglass cursor.  */
   63: 
   64: int display_hourglass_p;
   65: 
   66: /* The background and shape of the mouse pointer, and shape when not
   67:    over text or in the modeline.  */
   68: 
   69: Lisp_Object Vx_pointer_shape, Vx_nontext_pointer_shape, Vx_mode_pointer_shape;
   70: Lisp_Object Vx_hourglass_pointer_shape;
   71: 
   72: /* The shape when over mouse-sensitive text.  */
   73: 
   74: Lisp_Object Vx_sensitive_text_pointer_shape;
   75: 
   76: /* If non-nil, the pointer shape to indicate that windows can be
   77:    dragged horizontally.  */
   78: 
   79: Lisp_Object Vx_window_horizontal_drag_shape;
   80: 
   81: /* Color of chars displayed in cursor box.  */
   82: 
   83: Lisp_Object Vx_cursor_fore_pixel;
   84: 
   85: /* Nonzero if using Windows.  */
   86: 
   87: static int mac_in_use;
   88: 
   89: /* Non nil if no window manager is in use.  */
   90: 
   91: Lisp_Object Vx_no_window_manager;
   92: 
   93: /* Regexp matching a font name whose width is the same as `PIXEL_SIZE'.  */
   94: 
   95: Lisp_Object Vx_pixel_size_width_font_regexp;
   96: 
   97: Lisp_Object Qnone;
   98: Lisp_Object Qsuppress_icon;
   99: Lisp_Object Qundefined_color;
  100: Lisp_Object Qcancel_timer;
  101: 
  102: /* In dispnew.c */
  103: 
  104: extern Lisp_Object Vwindow_system_version;
  105: 
  106: #if GLYPH_DEBUG
  107: int image_cache_refcount, dpyinfo_refcount;
  108: #endif
  109: 
  110: 
  111: #if 0 /* Use xstricmp instead.  */
  112: /* compare two strings ignoring case */
  113: 
  114: static int
  115: stricmp (const char *s, const char *t)
  116: {
  117:   for ( ; tolower (*s) == tolower (*t); s++, t++)
  118:     if (*s == '\0')
  119:       return 0;
  120:   return tolower (*s) - tolower (*t);
  121: }
  122: #endif
  123: 
  124: /* compare two strings up to n characters, ignoring case */
  125: 
  126: static int
  127: strnicmp (const char *s, const char *t, unsigned int n)
  128: {
  129:   for ( ; n > 0 && tolower (*s) == tolower (*t); n--, s++, t++)
  130:     if (*s == '\0')
  131:       return 0;
  132:   return n == 0 ? 0 : tolower (*s) - tolower (*t);
  133: }
  134: 
  135: ^L
  136: /* Error if we are not running on Mac OS.  */
  137: 
  138: void
  139: check_mac ()
  140: {
  141:   if (! mac_in_use)
  142:     error ("Mac native windows not in use or not initialized");
  143: }
  144: 
  145: /* Nonzero if we can use mouse menus.
  146:    You should not call this unless HAVE_MENUS is defined.  */
  147: 
  148: int
  149: have_menus_p ()
  150: {
  151:   return mac_in_use;
  152: }
  153: 
  154: /* Extract a frame as a FRAME_PTR, defaulting to the selected frame
  155:    and checking validity for Mac.  */
  156: 
  157: FRAME_PTR
  158: check_x_frame (frame)
  159:      Lisp_Object frame;
  160: {
  161:   FRAME_PTR f;
  162: 
  163:   if (NILP (frame))
  164:     frame = selected_frame;
  165:   CHECK_LIVE_FRAME (frame);
  166:   f = XFRAME (frame);
  167:   if (! FRAME_MAC_P (f))
  168:     error ("Non-Mac frame used");
  169:   return f;
  170: }
  171: 
  172: /* Let the user specify a display with a frame.
  173:    nil stands for the selected frame--or, if that is not a mac frame,
  174:    the first display on the list.  */
  175: 
  176: struct mac_display_info *
  177: check_x_display_info (frame)
  178:      Lisp_Object frame;
  179: {
  180:   struct mac_display_info *dpyinfo = NULL;
  181: 
  182:   if (NILP (frame))
  183:     {
  184:       struct frame *sf = XFRAME (selected_frame);
  185: 
  186:       if (FRAME_MAC_P (sf) && FRAME_LIVE_P (sf))
  187:         dpyinfo = FRAME_MAC_DISPLAY_INFO (sf);
  188:       else if (x_display_list != 0)
  189:         dpyinfo = x_display_list;
  190:       else
  191:         error ("Mac native windows are not in use or not initialized");
  192:     }
  193:   else if (STRINGP (frame))
  194:     dpyinfo = x_display_info_for_name (frame);
  195:   else
  196:     {
  197:       FRAME_PTR f = check_x_frame (frame);
  198:       dpyinfo = FRAME_MAC_DISPLAY_INFO (f);
  199:     }
  200: 
  201:   return dpyinfo;
  202: }
  203: 
  204: ^L
  205: 
  206: static Lisp_Object unwind_create_frame P_ ((Lisp_Object));
  207: static Lisp_Object unwind_create_tip_frame P_ ((Lisp_Object));
  208: 
  209: void x_set_foreground_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
  210: void x_set_background_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
  211: void x_set_mouse_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
  212: void x_set_cursor_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
  213: void x_set_border_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
  214: void x_set_cursor_type P_ ((struct frame *, Lisp_Object, Lisp_Object));
  215: void x_set_icon_type P_ ((struct frame *, Lisp_Object, Lisp_Object));
  216: void x_set_icon_name P_ ((struct frame *, Lisp_Object, Lisp_Object));
  217: void x_explicitly_set_name P_ ((struct frame *, Lisp_Object, Lisp_Object));
  218: void x_set_menu_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
  219: void x_set_title P_ ((struct frame *, Lisp_Object, Lisp_Object));
  220: void x_set_tool_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
  221: 
  222: extern void mac_get_window_bounds P_ ((struct frame *, Rect *, Rect *));
  223: 
  224: ^L
  225: 
  226: /* Store the screen positions of frame F into XPTR and YPTR.
  227:    These are the positions of the containing window manager window,
  228:    not Emacs's own window.  */
  229: 
  230: void
  231: x_real_positions (f, xptr, yptr)
  232:      FRAME_PTR f;
  233:      int *xptr, *yptr;
  234: {
  235:   Rect inner, outer;
  236: 
  237:   mac_get_window_bounds (f, &inner, &outer);
  238: 
  239:   f->x_pixels_diff = inner.left - outer.left;
  240:   f->y_pixels_diff = inner.top - outer.top;
  241: 
  242:   *xptr = outer.left;
  243:   *yptr = outer.top;
  244: }
  245: 
  246: ^L
  247: /* The default colors for the Mac color map */
  248: typedef struct colormap_t
  249: {
  250:   unsigned long color;
  251:   char *name;
  252: } colormap_t;
  253: 
  254: static const colormap_t mac_color_map[] =
  255: {
  256:   { RGB_TO_ULONG(255, 250, 250), "snow" },
  257:   { RGB_TO_ULONG(248, 248, 255), "ghost white" },
  258:   { RGB_TO_ULONG(248, 248, 255), "GhostWhite" },
  259:   { RGB_TO_ULONG(245, 245, 245), "white smoke" },
  260:   { RGB_TO_ULONG(245, 245, 245), "WhiteSmoke" },
  261:   { RGB_TO_ULONG(220, 220, 220), "gainsboro" },
  262:   { RGB_TO_ULONG(255, 250, 240), "floral white" },
  263:   { RGB_TO_ULONG(255, 250, 240), "FloralWhite" },
  264:   { RGB_TO_ULONG(253, 245, 230), "old lace" },
  265:   { RGB_TO_ULONG(253, 245, 230), "OldLace" },
  266:   { RGB_TO_ULONG(250, 240, 230), "linen" },
  267:   { RGB_TO_ULONG(250, 235, 215), "antique white" },
  268:   { RGB_TO_ULONG(250, 235, 215), "AntiqueWhite" },
  269:   { RGB_TO_ULONG(255, 239, 213), "papaya whip" },
  270:   { RGB_TO_ULONG(255, 239, 213), "PapayaWhip" },
  271:   { RGB_TO_ULONG(255, 235, 205), "blanched almond" },
  272:   { RGB_TO_ULONG(255, 235, 205), "BlanchedAlmond" },
  273:   { RGB_TO_ULONG(255, 228, 196), "bisque" },
  274:   { RGB_TO_ULONG(255, 218, 185), "peach puff" },
  275:   { RGB_TO_ULONG(255, 218, 185), "PeachPuff" },
  276:   { RGB_TO_ULONG(255, 222, 173), "navajo white" },
  277:   { RGB_TO_ULONG(255, 222, 173), "NavajoWhite" },
  278:   { RGB_TO_ULONG(255, 228, 181), "moccasin" },
  279:   { RGB_TO_ULONG(255, 248, 220), "cornsilk" },
  280:   { RGB_TO_ULONG(255, 255, 240), "ivory" },
  281:   { RGB_TO_ULONG(255, 250, 205), "lemon chiffon" },
  282:   { RGB_TO_ULONG(255, 250, 205), "LemonChiffon" },
  283:   { RGB_TO_ULONG(255, 245, 238), "seashell" },
  284:   { RGB_TO_ULONG(240, 255, 240), "honeydew" },
  285:   { RGB_TO_ULONG(245, 255, 250), "mint cream" },
  286:   { RGB_TO_ULONG(245, 255, 250), "MintCream" },
  287:   { RGB_TO_ULONG(240, 255, 255), "azure" },
  288:   { RGB_TO_ULONG(240, 248, 255), "alice blue" },
  289:   { RGB_TO_ULONG(240, 248, 255), "AliceBlue" },
  290:   { RGB_TO_ULONG(230, 230, 250), "lavender" },
  291:   { RGB_TO_ULONG(255, 240, 245), "lavender blush" },
  292:   { RGB_TO_ULONG(255, 240, 245), "LavenderBlush" },
  293:   { RGB_TO_ULONG(255, 228, 225), "misty rose" },
  294:   { RGB_TO_ULONG(255, 228, 225), "MistyRose" },
  295:   { RGB_TO_ULONG(255, 255, 255), "white" },
  296:   { RGB_TO_ULONG(0  , 0  , 0  ), "black" },
  297:   { RGB_TO_ULONG(47 , 79 , 79 ), "dark slate gray" },
  298:   { RGB_TO_ULONG(47 , 79 , 79 ), "DarkSlateGray" },
  299:   { RGB_TO_ULONG(47 , 79 , 79 ), "dark slate grey" },
  300:   { RGB_TO_ULONG(47 , 79 , 79 ), "DarkSlateGrey" },
  301:   { RGB_TO_ULONG(105, 105, 105), "dim gray" },
  302:   { RGB_TO_ULONG(105, 105, 105), "DimGray" },
  303:   { RGB_TO_ULONG(105, 105, 105), "dim grey" },
  304:   { RGB_TO_ULONG(105, 105, 105), "DimGrey" },
  305:   { RGB_TO_ULONG(112, 128, 144), "slate gray" },
  306:   { RGB_TO_ULONG(112, 128, 144), "SlateGray" },
  307:   { RGB_TO_ULONG(112, 128, 144), "slate grey" },
  308:   { RGB_TO_ULONG(112, 128, 144), "SlateGrey" },
  309:   { RGB_TO_ULONG(119, 136, 153), "light slate gray" },
  310:   { RGB_TO_ULONG(119, 136, 153), "LightSlateGray" },
  311:   { RGB_TO_ULONG(119, 136, 153), "light slate grey" },
  312:   { RGB_TO_ULONG(119, 136, 153), "LightSlateGrey" },
  313:   { RGB_TO_ULONG(190, 190, 190), "gray" },
  314:   { RGB_TO_ULONG(190, 190, 190), "grey" },
  315:   { RGB_TO_ULONG(211, 211, 211), "light grey" },
  316:   { RGB_TO_ULONG(211, 211, 211), "LightGrey" },
  317:   { RGB_TO_ULONG(211, 211, 211), "light gray" },
  318:   { RGB_TO_ULONG(211, 211, 211), "LightGray" },
  319:   { RGB_TO_ULONG(25 , 25 , 112), "midnight blue" },
  320:   { RGB_TO_ULONG(25 , 25 , 112), "MidnightBlue" },
  321:   { RGB_TO_ULONG(0  , 0  , 128), "navy" },
  322:   { RGB_TO_ULONG(0  , 0  , 128), "navy blue" },
  323:   { RGB_TO_ULONG(0  , 0  , 128), "NavyBlue" },
  324:   { RGB_TO_ULONG(100, 149, 237), "cornflower blue" },
  325:   { RGB_TO_ULONG(100, 149, 237), "CornflowerBlue" },
  326:   { RGB_TO_ULONG(72 , 61 , 139), "dark slate blue" },
  327:   { RGB_TO_ULONG(72 , 61 , 139), "DarkSlateBlue" },
  328:   { RGB_TO_ULONG(106, 90 , 205), "slate blue" },
  329:   { RGB_TO_ULONG(106, 90 , 205), "SlateBlue" },
  330:   { RGB_TO_ULONG(123, 104, 238), "medium slate blue" },
  331:   { RGB_TO_ULONG(123, 104, 238), "MediumSlateBlue" },
  332:   { RGB_TO_ULONG(132, 112, 255), "light slate blue" },
  333:   { RGB_TO_ULONG(132, 112, 255), "LightSlateBlue" },
  334:   { RGB_TO_ULONG(0  , 0  , 205), "medium blue" },
  335:   { RGB_TO_ULONG(0  , 0  , 205), "MediumBlue" },
  336:   { RGB_TO_ULONG(65 , 105, 225), "royal blue" },
  337:   { RGB_TO_ULONG(65 , 105, 225), "RoyalBlue" },
  338:   { RGB_TO_ULONG(0  , 0  , 255), "blue" },
  339:   { RGB_TO_ULONG(30 , 144, 255), "dodger blue" },
  340:   { RGB_TO_ULONG(30 , 144, 255), "DodgerBlue" },
  341:   { RGB_TO_ULONG(0  , 191, 255), "deep sky blue" },
  342:   { RGB_TO_ULONG(0  , 191, 255), "DeepSkyBlue" },
  343:   { RGB_TO_ULONG(135, 206, 235), "sky blue" },
  344:   { RGB_TO_ULONG(135, 206, 235), "SkyBlue" },
  345:   { RGB_TO_ULONG(135, 206, 250), "light sky blue" },
  346:   { RGB_TO_ULONG(135, 206, 250), "LightSkyBlue" },
  347:   { RGB_TO_ULONG(70 , 130, 180), "steel blue" },
  348:   { RGB_TO_ULONG(70 , 130, 180), "SteelBlue" },
  349:   { RGB_TO_ULONG(176, 196, 222), "light steel blue" },
  350:   { RGB_TO_ULONG(176, 196, 222), "LightSteelBlue" },
  351:   { RGB_TO_ULONG(173, 216, 230), "light blue" },
  352:   { RGB_TO_ULONG(173, 216, 230), "LightBlue" },
  353:   { RGB_TO_ULONG(176, 224, 230), "powder blue" },
  354:   { RGB_TO_ULONG(176, 224, 230), "PowderBlue" },
  355:   { RGB_TO_ULONG(175, 238, 238), "pale turquoise" },
  356:   { RGB_TO_ULONG(175, 238, 238), "PaleTurquoise" },
  357:   { RGB_TO_ULONG(0  , 206, 209), "dark turquoise" },
  358:   { RGB_TO_ULONG(0  , 206, 209), "DarkTurquoise" },
  359:   { RGB_TO_ULONG(72 , 209, 204), "medium turquoise" },
  360:   { RGB_TO_ULONG(72 , 209, 204), "MediumTurquoise" },
  361:   { RGB_TO_ULONG(64 , 224, 208), "turquoise" },
  362:   { RGB_TO_ULONG(0  , 255, 255), "cyan" },
  363:   { RGB_TO_ULONG(224, 255, 255), "light cyan" },
  364:   { RGB_TO_ULONG(224, 255, 255), "LightCyan" },
  365:   { RGB_TO_ULONG(95 , 158, 160), "cadet blue" },
  366:   { RGB_TO_ULONG(95 , 158, 160), "CadetBlue" },
  367:   { RGB_TO_ULONG(102, 205, 170), "medium aquamarine" },
  368:   { RGB_TO_ULONG(102, 205, 170), "MediumAquamarine" },
  369:   { RGB_TO_ULONG(127, 255, 212), "aquamarine" },
  370:   { RGB_TO_ULONG(0  , 100, 0  ), "dark green" },
  371:   { RGB_TO_ULONG(0  , 100, 0  ), "DarkGreen" },
  372:   { RGB_TO_ULONG(85 , 107, 47 ), "dark olive green" },
  373:   { RGB_TO_ULONG(85 , 107, 47 ), "DarkOliveGreen" },
  374:   { RGB_TO_ULONG(143, 188, 143), "dark sea green" },
  375:   { RGB_TO_ULONG(143, 188, 143), "DarkSeaGreen" },
  376:   { RGB_TO_ULONG(46 , 139, 87 ), "sea green" },
  377:   { RGB_TO_ULONG(46 , 139, 87 ), "SeaGreen" },
  378:   { RGB_TO_ULONG(60 , 179, 113), "medium sea green" },
  379:   { RGB_TO_ULONG(60 , 179, 113), "MediumSeaGreen" },
  380:   { RGB_TO_ULONG(32 , 178, 170), "light sea green" },
  381:   { RGB_TO_ULONG(32 , 178, 170), "LightSeaGreen" },
  382:   { RGB_TO_ULONG(152, 251, 152), "pale green" },
  383:   { RGB_TO_ULONG(152, 251, 152), "PaleGreen" },
  384:   { RGB_TO_ULONG(0  , 255, 127), "spring green" },
  385:   { RGB_TO_ULONG(0  , 255, 127), "SpringGreen" },
  386:   { RGB_TO_ULONG(124, 252, 0  ), "lawn green" },
  387:   { RGB_TO_ULONG(124, 252, 0  ), "LawnGreen" },
  388:   { RGB_TO_ULONG(0  , 255, 0  ), "green" },
  389:   { RGB_TO_ULONG(127, 255, 0  ), "chartreuse" },
  390:   { RGB_TO_ULONG(0  , 250, 154), "medium spring green" },
  391:   { RGB_TO_ULONG(0  , 250, 154), "MediumSpringGreen" },
  392:   { RGB_TO_ULONG(173, 255, 47 ), "green yellow" },
  393:   { RGB_TO_ULONG(173, 255, 47 ), "GreenYellow" },
  394:   { RGB_TO_ULONG(50 , 205, 50 ), "lime green" },
  395:   { RGB_TO_ULONG(50 , 205, 50 ), "LimeGreen" },
  396:   { RGB_TO_ULONG(154, 205, 50 ), "yellow green" },
  397:   { RGB_TO_ULONG(154, 205, 50 ), "YellowGreen" },
  398:   { RGB_TO_ULONG(34 , 139, 34 ), "forest green" },
  399:   { RGB_TO_ULONG(34 , 139, 34 ), "ForestGreen" },
  400:   { RGB_TO_ULONG(107, 142, 35 ), "olive drab" },
  401:   { RGB_TO_ULONG(107, 142, 35 ), "OliveDrab" },
  402:   { RGB_TO_ULONG(189, 183, 107), "dark khaki" },
  403:   { RGB_TO_ULONG(189, 183, 107), "DarkKhaki" },
  404:   { RGB_TO_ULONG(240, 230, 140), "khaki" },
  405:   { RGB_TO_ULONG(238, 232, 170), "pale goldenrod" },
  406:   { RGB_TO_ULONG(238, 232, 170), "PaleGoldenrod" },
  407:   { RGB_TO_ULONG(250, 250, 210), "light goldenrod yellow" },
  408:   { RGB_TO_ULONG(250, 250, 210), "LightGoldenrodYellow" },
  409:   { RGB_TO_ULONG(255, 255, 224), "light yellow" },
  410:   { RGB_TO_ULONG(255, 255, 224), "LightYellow" },
  411:   { RGB_TO_ULONG(255, 255, 0  ), "yellow" },
  412:   { RGB_TO_ULONG(255, 215, 0  ), "gold" },
  413:   { RGB_TO_ULONG(238, 221, 130), "light goldenrod" },
  414:   { RGB_TO_ULONG(238, 221, 130), "LightGoldenrod" },
  415:   { RGB_TO_ULONG(218, 165, 32 ), "goldenrod" },
  416:   { RGB_TO_ULONG(184, 134, 11 ), "dark goldenrod" },
  417:   { RGB_TO_ULONG(184, 134, 11 ), "DarkGoldenrod" },
  418:   { RGB_TO_ULONG(188, 143, 143), "rosy brown" },
  419:   { RGB_TO_ULONG(188, 143, 143), "RosyBrown" },
  420:   { RGB_TO_ULONG(205, 92 , 92 ), "indian red" },
  421:   { RGB_TO_ULONG(205, 92 , 92 ), "IndianRed" },
  422:   { RGB_TO_ULONG(139, 69 , 19 ), "saddle brown" },
  423:   { RGB_TO_ULONG(139, 69 , 19 ), "SaddleBrown" },
  424:   { RGB_TO_ULONG(160, 82 , 45 ), "sienna" },
  425:   { RGB_TO_ULONG(205, 133, 63 ), "peru" },
  426:   { RGB_TO_ULONG(222, 184, 135), "burlywood" },
  427:   { RGB_TO_ULONG(245, 245, 220), "beige" },
  428:   { RGB_TO_ULONG(245, 222, 179), "wheat" },
  429:   { RGB_TO_ULONG(244, 164, 96 ), "sandy brown" },
  430:   { RGB_TO_ULONG(244, 164, 96 ), "SandyBrown" },
  431:   { RGB_TO_ULONG(210, 180, 140), "tan" },
  432:   { RGB_TO_ULONG(210, 105, 30 ), "chocolate" },
  433:   { RGB_TO_ULONG(178, 34 , 34 ), "firebrick" },
  434:   { RGB_TO_ULONG(165, 42 , 42 ), "brown" },
  435:   { RGB_TO_ULONG(233, 150, 122), "dark salmon" },
  436:   { RGB_TO_ULONG(233, 150, 122), "DarkSalmon" },
  437:   { RGB_TO_ULONG(250, 128, 114), "salmon" },
  438:   { RGB_TO_ULONG(255, 160, 122), "light salmon" },
  439:   { RGB_TO_ULONG(255, 160, 122), "LightSalmon" },
  440:   { RGB_TO_ULONG(255, 165, 0  ), "orange" },
  441:   { RGB_TO_ULONG(255, 140, 0  ), "dark orange" },
  442:   { RGB_TO_ULONG(255, 140, 0  ), "DarkOrange" },
  443:   { RGB_TO_ULONG(255, 127, 80 ), "coral" },
  444:   { RGB_TO_ULONG(240, 128, 128), "light coral" },
  445:   { RGB_TO_ULONG(240, 128, 128), "LightCoral" },
  446:   { RGB_TO_ULONG(255, 99 , 71 ), "tomato" },
  447:   { RGB_TO_ULONG(255, 69 , 0  ), "orange red" },
  448:   { RGB_TO_ULONG(255, 69 , 0  ), "OrangeRed" },
  449:   { RGB_TO_ULONG(255, 0  , 0  ), "red" },
  450:   { RGB_TO_ULONG(255, 105, 180), "hot pink" },
  451:   { RGB_TO_ULONG(255, 105, 180), "HotPink" },
  452:   { RGB_TO_ULONG(255, 20 , 147), "deep pink" },
  453:   { RGB_TO_ULONG(255, 20 , 147), "DeepPink" },
  454:   { RGB_TO_ULONG(255, 192, 203), "pink" },
  455:   { RGB_TO_ULONG(255, 182, 193), "light pink" },
  456:   { RGB_TO_ULONG(255, 182, 193), "LightPink" },
  457:   { RGB_TO_ULONG(219, 112, 147), "pale violet red" },
  458:   { RGB_TO_ULONG(219, 112, 147), "PaleVioletRed" },
  459:   { RGB_TO_ULONG(176, 48 , 96 ), "maroon" },
  460:   { RGB_TO_ULONG(199, 21 , 133), "medium violet red" },
  461:   { RGB_TO_ULONG(199, 21 , 133), "MediumVioletRed" },
  462:   { RGB_TO_ULONG(208, 32 , 144), "violet red" },
  463:   { RGB_TO_ULONG(208, 32 , 144), "VioletRed" },
  464:   { RGB_TO_ULONG(255, 0  , 255), "magenta" },
  465:   { RGB_TO_ULONG(238, 130, 238), "violet" },
  466:   { RGB_TO_ULONG(221, 160, 221), "plum" },
  467:   { RGB_TO_ULONG(218, 112, 214), "orchid" },
  468:   { RGB_TO_ULONG(186, 85 , 211), "medium orchid" },
  469:   { RGB_TO_ULONG(186, 85 , 211), "MediumOrchid" },
  470:   { RGB_TO_ULONG(153, 50 , 204), "dark orchid" },
  471:   { RGB_TO_ULONG(153, 50 , 204), "DarkOrchid" },
  472:   { RGB_TO_ULONG(148, 0  , 211), "dark violet" },
  473:   { RGB_TO_ULONG(148, 0  , 211), "DarkViolet" },
  474:   { RGB_TO_ULONG(138, 43 , 226), "blue violet" },
  475:   { RGB_TO_ULONG(138, 43 , 226), "BlueViolet" },
  476:   { RGB_TO_ULONG(160, 32 , 240), "purple" },
  477:   { RGB_TO_ULONG(147, 112, 219), "medium purple" },
  478:   { RGB_TO_ULONG(147, 112, 219), "MediumPurple" },
  479:   { RGB_TO_ULONG(216, 191, 216), "thistle" },
  480:   { RGB_TO_ULONG(255, 250, 250), "snow1" },
  481:   { RGB_TO_ULONG(238, 233, 233), "snow2" },
  482:   { RGB_TO_ULONG(205, 201, 201), "snow3" },
  483:   { RGB_TO_ULONG(139, 137, 137), "snow4" },
  484:   { RGB_TO_ULONG(255, 245, 238), "seashell1" },
  485:   { RGB_TO_ULONG(238, 229, 222), "seashell2" },
  486:   { RGB_TO_ULONG(205, 197, 191), "seashell3" },
  487:   { RGB_TO_ULONG(139, 134, 130), "seashell4" },
  488:   { RGB_TO_ULONG(255, 239, 219), "AntiqueWhite1" }