annotate src/objects-msw.c @ 4981:4aebb0131297

Cleanups/renaming of EXTERNAL_TO_C_STRING and friends -------------------- ChangeLog entries follow: -------------------- modules/ChangeLog addition: 2010-02-05 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c: * postgresql/postgresql.c (CHECK_LIVE_CONNECTION): * postgresql/postgresql.c (Fpq_connectdb): * postgresql/postgresql.c (Fpq_connect_start): * postgresql/postgresql.c (Fpq_lo_import): * postgresql/postgresql.c (Fpq_lo_export): * ldap/eldap.c (Fldap_open): * ldap/eldap.c (Fldap_search_basic): * ldap/eldap.c (Fldap_add): * ldap/eldap.c (Fldap_modify): * ldap/eldap.c (Fldap_delete): * canna/canna_api.c (Fcanna_initialize): * canna/canna_api.c (Fcanna_store_yomi): * canna/canna_api.c (Fcanna_parse): * canna/canna_api.c (Fcanna_henkan_begin): EXTERNAL_TO_C_STRING returns its argument instead of storing it in a parameter, and is renamed to EXTERNAL_TO_ITEXT. Similar things happen to related macros. See entry in src/ChangeLog. More Mule-izing of postgresql.c. Extract out common code between `pq-connectdb' and `pq-connect-start'. Fix places that signal an error string using a formatted string to instead follow the standard and have a fixed reason followed by the particular error message stored as one of the frobs. src/ChangeLog addition: 2010-02-05 Ben Wing <ben@xemacs.org> * console-msw.c (write_string_to_mswindows_debugging_output): * console-msw.c (Fmswindows_message_box): * console-x.c (x_perhaps_init_unseen_key_defaults): * console.c: * database.c (dbm_get): * database.c (dbm_put): * database.c (dbm_remove): * database.c (berkdb_get): * database.c (berkdb_put): * database.c (berkdb_remove): * database.c (Fopen_database): * device-gtk.c (gtk_init_device): * device-msw.c (msprinter_init_device_internal): * device-msw.c (msprinter_default_printer): * device-msw.c (msprinter_init_device): * device-msw.c (sync_printer_with_devmode): * device-msw.c (Fmsprinter_select_settings): * device-x.c (sanity_check_geometry_resource): * device-x.c (Dynarr_add_validified_lisp_string): * device-x.c (x_init_device): * device-x.c (Fx_put_resource): * device-x.c (Fx_valid_keysym_name_p): * device-x.c (Fx_set_font_path): * dialog-msw.c (push_lisp_string_as_unicode): * dialog-msw.c (handle_directory_dialog_box): * dialog-msw.c (handle_file_dialog_box): * dialog-x.c (dbox_descriptor_to_widget_value): * editfns.c (Fformat_time_string): * editfns.c (Fencode_time): * editfns.c (Fset_time_zone_rule): * emacs.c (make_argc_argv): * emacs.c (Fdump_emacs): * emodules.c (emodules_load): * eval.c: * eval.c (maybe_signal_error_1): * event-msw.c (Fdde_alloc_advise_item): * event-msw.c (mswindows_dde_callback): * event-msw.c (mswindows_wnd_proc): * fileio.c (report_error_with_errno): * fileio.c (Fsysnetunam): * fileio.c (Fdo_auto_save): * font-mgr.c (extract_fcapi_string): * font-mgr.c (Ffc_config_app_font_add_file): * font-mgr.c (Ffc_config_app_font_add_dir): * font-mgr.c (Ffc_config_filename): * frame-gtk.c (gtk_set_frame_text_value): * frame-gtk.c (gtk_create_widgets): * frame-msw.c (mswindows_init_frame_1): * frame-msw.c (mswindows_set_title_from_ibyte): * frame-msw.c (msprinter_init_frame_3): * frame-x.c (x_set_frame_text_value): * frame-x.c (x_set_frame_properties): * frame-x.c (start_drag_internal_1): * frame-x.c (x_cde_transfer_callback): * frame-x.c (x_create_widgets): * glyphs-eimage.c (my_jpeg_output_message): * glyphs-eimage.c (jpeg_instantiate): * glyphs-eimage.c (gif_instantiate): * glyphs-eimage.c (png_instantiate): * glyphs-eimage.c (tiff_instantiate): * glyphs-gtk.c (xbm_instantiate_1): * glyphs-gtk.c (gtk_xbm_instantiate): * glyphs-gtk.c (gtk_xpm_instantiate): * glyphs-gtk.c (gtk_xface_instantiate): * glyphs-gtk.c (cursor_font_instantiate): * glyphs-gtk.c (gtk_redisplay_widget): * glyphs-gtk.c (gtk_widget_instantiate_1): * glyphs-gtk.c (gtk_add_tab_item): * glyphs-msw.c (mswindows_xpm_instantiate): * glyphs-msw.c (bmp_instantiate): * glyphs-msw.c (mswindows_resource_instantiate): * glyphs-msw.c (xbm_instantiate_1): * glyphs-msw.c (mswindows_xbm_instantiate): * glyphs-msw.c (mswindows_xface_instantiate): * glyphs-msw.c (mswindows_redisplay_widget): * glyphs-msw.c (mswindows_widget_instantiate): * glyphs-msw.c (add_tree_item): * glyphs-msw.c (add_tab_item): * glyphs-msw.c (mswindows_combo_box_instantiate): * glyphs-msw.c (mswindows_widget_query_string_geometry): * glyphs-x.c (x_locate_pixmap_file): * glyphs-x.c (xbm_instantiate_1): * glyphs-x.c (x_xbm_instantiate): * glyphs-x.c (extract_xpm_color_names): * glyphs-x.c (x_xpm_instantiate): * glyphs-x.c (x_xface_instantiate): * glyphs-x.c (autodetect_instantiate): * glyphs-x.c (safe_XLoadFont): * glyphs-x.c (cursor_font_instantiate): * glyphs-x.c (x_redisplay_widget): * glyphs-x.c (Fchange_subwindow_property): * glyphs-x.c (x_widget_instantiate): * glyphs-x.c (x_tab_control_redisplay): * glyphs.c (pixmap_to_lisp_data): * gui-x.c (menu_separator_style_and_to_external): * gui-x.c (add_accel_and_to_external): * gui-x.c (button_item_to_widget_value): * hpplay.c (player_error_internal): * hpplay.c (play_sound_file): * hpplay.c (play_sound_data): * intl.c (Fset_current_locale): * lisp.h: * menubar-gtk.c (gtk_xemacs_set_accel_keys): * menubar-msw.c (populate_menu_add_item): * menubar-msw.c (populate_or_checksum_helper): * menubar-x.c (menu_item_descriptor_to_widget_value_1): * nt.c (init_user_info): * nt.c (get_long_basename): * nt.c (nt_get_resource): * nt.c (init_mswindows_environment): * nt.c (get_cached_volume_information): * nt.c (mswindows_readdir): * nt.c (read_unc_volume): * nt.c (mswindows_stat): * nt.c (mswindows_getdcwd): * nt.c (mswindows_executable_type): * nt.c (Fmswindows_short_file_name): * ntplay.c (nt_play_sound_file): * objects-gtk.c: * objects-gtk.c (gtk_valid_color_name_p): * objects-gtk.c (gtk_initialize_font_instance): * objects-gtk.c (gtk_font_list): * objects-msw.c (font_enum_callback_2): * objects-msw.c (parse_font_spec): * objects-x.c (x_parse_nearest_color): * objects-x.c (x_valid_color_name_p): * objects-x.c (x_initialize_font_instance): * objects-x.c (x_font_instance_truename): * objects-x.c (x_font_list): * objects-xlike-inc.c (XFUN): * objects-xlike-inc.c (xft_find_charset_font): * process-nt.c (mswindows_report_winsock_error): * process-nt.c (nt_create_process): * process-nt.c (get_internet_address): * process-nt.c (nt_open_network_stream): * process-unix.c: * process-unix.c (allocate_pty): * process-unix.c (get_internet_address): * process-unix.c (unix_canonicalize_host_name): * process-unix.c (unix_open_network_stream): * realpath.c: * select-common.h (lisp_data_to_selection_data): * select-gtk.c (symbol_to_gtk_atom): * select-gtk.c (atom_to_symbol): * select-msw.c (symbol_to_ms_cf): * select-msw.c (mswindows_register_selection_data_type): * select-x.c (symbol_to_x_atom): * select-x.c (x_atom_to_symbol): * select-x.c (hack_motif_clipboard_selection): * select-x.c (Fx_store_cutbuffer_internal): * sound.c (Fplay_sound_file): * sound.c (Fplay_sound): * sound.h (sound_perror): * sysdep.c: * sysdep.c (qxe_allocating_getcwd): * sysdep.c (qxe_execve): * sysdep.c (copy_in_passwd): * sysdep.c (qxe_getpwnam): * sysdep.c (qxe_ctime): * sysdll.c (dll_open): * sysdll.c (dll_function): * sysdll.c (dll_variable): * sysdll.c (search_linked_libs): * sysdll.c (dll_error): * sysfile.h: * sysfile.h (PATHNAME_CONVERT_OUT_TSTR): * sysfile.h (PATHNAME_CONVERT_OUT_UTF_8): * sysfile.h (PATHNAME_CONVERT_OUT): * sysfile.h (LISP_PATHNAME_CONVERT_OUT): * syswindows.h (ITEXT_TO_TSTR): * syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR): * syswindows.h (TSTR_TO_LOCAL_FILE_FORMAT): * syswindows.h (LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN): * syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR): * text.h: * text.h (eicpy_ext_len): * text.h (enum new_dfc_src_type): * text.h (EXTERNAL_TO_ITEXT): * text.h (GET_STRERROR): * tooltalk.c (check_status): * tooltalk.c (Fadd_tooltalk_message_arg): * tooltalk.c (Fadd_tooltalk_pattern_attribute): * tooltalk.c (Fadd_tooltalk_pattern_arg): * win32.c (tstr_to_local_file_format): * win32.c (mswindows_lisp_error_1): * win32.c (mswindows_report_process_error): * win32.c (Fmswindows_shell_execute): * win32.c (mswindows_read_link_1): Changes involving external/internal format conversion, mostly code cleanup and renaming. 1. Eliminate the previous macros like LISP_STRING_TO_EXTERNAL that stored its result in a parameter. The new version of LISP_STRING_TO_EXTERNAL returns its result through the return value, same as the previous NEW_LISP_STRING_TO_EXTERNAL. Use the new-style macros throughout the code. 2. Rename C_STRING_TO_EXTERNAL and friends to ITEXT_TO_EXTERNAL, in keeping with overall naming rationalization involving Itext and related types. Macros involved in previous two: EXTERNAL_TO_C_STRING -> EXTERNAL_TO_ITEXT EXTERNAL_TO_C_STRING_MALLOC -> EXTERNAL_TO_ITEXT_MALLOC SIZED_EXTERNAL_TO_C_STRING -> SIZED_EXTERNAL_TO_ITEXT SIZED_EXTERNAL_TO_C_STRING_MALLOC -> SIZED_EXTERNAL_TO_ITEXT_MALLOC C_STRING_TO_EXTERNAL -> ITEXT_TO_EXTERNAL C_STRING_TO_EXTERNAL_MALLOC -> ITEXT_TO_EXTERNAL_MALLOC LISP_STRING_TO_EXTERNAL LISP_STRING_TO_EXTERNAL_MALLOC LISP_STRING_TO_TSTR C_STRING_TO_TSTR -> ITEXT_TO_TSTR TSTR_TO_C_STRING -> TSTR_TO_ITEXT The following four still return their values through parameters, since they have more than one value to return: C_STRING_TO_SIZED_EXTERNAL -> ITEXT_TO_SIZED_EXTERNAL LISP_STRING_TO_SIZED_EXTERNAL C_STRING_TO_SIZED_EXTERNAL_MALLOC -> ITEXT_TO_SIZED_EXTERNAL_MALLOC LISP_STRING_TO_SIZED_EXTERNAL_MALLOC Sometimes additional casts had to be inserted, since the old macros played strange games and completely defeated the type system of the store params. 3. Rewrite many places where direct calls to TO_EXTERNAL_FORMAT occurred with calls to one of the convenience macros listed above, or to make_extstring(). 4. Eliminate SIZED_C_STRING macros (they were hardly used, anyway) and use a direct call to TO_EXTERNAL_FORMAT or TO_INTERNAL_FORMAT. 4. Use LISP_PATHNAME_CONVERT_OUT in many places instead of something like LISP_STRING_TO_EXTERNAL(..., Qfile_name). 5. Eliminate some temporary variables that are no longer necessary now that we return a value rather than storing it into a variable. 6. Some Mule-izing in database.c. 7. Error functions: -- A bit of code cleanup in maybe_signal_error_1. -- Eliminate report_file_type_error; it's just an alias for signal_error_2 with params in a different order. -- Fix some places in the hostname-handling code that directly inserted externally-retrieved error strings into the supposed ASCII "reason" param instead of doing the right thing and sticking text descriptive of what was going on in "reason" and putting the external message in a frob. 8. Use Ascbyte instead of CIbyte in process-unix.c and maybe one or two other places. 9. Some code cleanup in copy_in_passwd() in sysdep.c. 10. Fix a real bug due to accidental variable shadowing in tstr_to_local_file_format() in win32.c.
author Ben Wing <ben@xemacs.org>
date Fri, 05 Feb 2010 11:02:24 -0600
parents 304aebb79cd3
children 3c3c1d139863
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 /* mswindows-specific Lisp objects.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 Copyright (C) 1993, 1994 Free Software Foundation, Inc.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 Copyright (C) 1995 Board of Trustees, University of Illinois.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 Copyright (C) 1995 Tinker Systems.
2527
491f8cf78a9c [xemacs-hg @ 2005-01-28 02:58:38 by ben]
ben
parents: 2515
diff changeset
5 Copyright (C) 1995, 1996, 2000, 2001, 2002, 2004 Ben Wing.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 Copyright (C) 1995 Sun Microsystems, Inc.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 Copyright (C) 1997 Jonathan Harris.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 XEmacs is free software; you can redistribute it and/or modify it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 under the terms of the GNU General Public License as published by the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 Free Software Foundation; either version 2, or (at your option) any
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 later version.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 XEmacs is distributed in the hope that it will be useful, but WITHOUT
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 for more details.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 You should have received a copy of the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 along with XEmacs; see the file COPYING. If not, write to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 Boston, MA 02111-1307, USA. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 /* Synched up with: Not in FSF. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 /* Authorship:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 Jamie Zawinski, Chuck Thompson, Ben Wing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 Rewritten for mswindows by Jonathan Harris, November 1997 for 21.0.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33
793
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 788
diff changeset
34 /* This function Mule-ized by Ben Wing, 3-24-02. */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 /* TODO: palette handling */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 #include <config.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 #include "lisp.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
41 #include "console-msw-impl.h"
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
42 #include "objects-msw-impl.h"
800
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
43
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 #include "buffer.h"
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
45 #include "charset.h"
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
46 #include "device-impl.h"
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
47 #include "elhash.h"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 #include "insdel.h"
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
49 #include "opaque.h"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
51 typedef struct colormap_t
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 {
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
53 const Ascbyte *name;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
54 COLORREF colorref;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 } colormap_t;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 /* Colors from X11R6 "XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp" */
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
58 /* MSWindows tends to round up the numbers in its palette, ie where X uses
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
59 * 127, MSWindows uses 128. Colors commented as "Adjusted" are tweaked to
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
60 * match the Windows standard palette to increase the likelihood of
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
61 * mswindows_color_to_string() finding a named match.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
62 */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
63 static const colormap_t mswindows_X_color_map[] =
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 {
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
65 {"white" , PALETTERGB (255, 255, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
66 {"black" , PALETTERGB (0, 0, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
67 {"snow" , PALETTERGB (255, 250, 250) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
68 {"GhostWhite" , PALETTERGB (248, 248, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
69 {"WhiteSmoke" , PALETTERGB (245, 245, 245) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
70 {"gainsboro" , PALETTERGB (220, 220, 220) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
71 {"FloralWhite" , PALETTERGB (255, 250, 240) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
72 {"OldLace" , PALETTERGB (253, 245, 230) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
73 {"linen" , PALETTERGB (250, 240, 230) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
74 {"AntiqueWhite" , PALETTERGB (250, 235, 215) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
75 {"PapayaWhip" , PALETTERGB (255, 239, 213) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
76 {"BlanchedAlmond" , PALETTERGB (255, 235, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
77 {"bisque" , PALETTERGB (255, 228, 196) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
78 {"PeachPuff" , PALETTERGB (255, 218, 185) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
79 {"NavajoWhite" , PALETTERGB (255, 222, 173) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
80 {"moccasin" , PALETTERGB (255, 228, 181) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
81 {"cornsilk" , PALETTERGB (255, 248, 220) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
82 {"ivory" , PALETTERGB (255, 255, 240) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
83 {"LemonChiffon" , PALETTERGB (255, 250, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
84 {"seashell" , PALETTERGB (255, 245, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
85 {"honeydew" , PALETTERGB (240, 255, 240) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
86 {"MintCream" , PALETTERGB (245, 255, 250) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
87 {"azure" , PALETTERGB (240, 255, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
88 {"AliceBlue" , PALETTERGB (240, 248, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
89 {"lavender" , PALETTERGB (230, 230, 250) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
90 {"LavenderBlush" , PALETTERGB (255, 240, 245) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
91 {"MistyRose" , PALETTERGB (255, 228, 225) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
92 {"DarkSlateGray" , PALETTERGB (47, 79, 79) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
93 {"DarkSlateGrey" , PALETTERGB (47, 79, 79) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
94 {"DimGray" , PALETTERGB (105, 105, 105) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
95 {"DimGrey" , PALETTERGB (105, 105, 105) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
96 {"SlateGray" , PALETTERGB (112, 128, 144) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
97 {"SlateGrey" , PALETTERGB (112, 128, 144) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
98 {"LightSlateGray" , PALETTERGB (119, 136, 153) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
99 {"LightSlateGrey" , PALETTERGB (119, 136, 153) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
100 {"gray" , PALETTERGB (190, 190, 190) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
101 {"grey" , PALETTERGB (190, 190, 190) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
102 {"LightGrey" , PALETTERGB (211, 211, 211) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
103 {"LightGray" , PALETTERGB (211, 211, 211) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
104 {"MidnightBlue" , PALETTERGB (25, 25, 112) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
105 {"navy" , PALETTERGB (0, 0, 128) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
106 {"NavyBlue" , PALETTERGB (0, 0, 128) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
107 {"CornflowerBlue" , PALETTERGB (100, 149, 237) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
108 {"DarkSlateBlue" , PALETTERGB (72, 61, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
109 {"SlateBlue" , PALETTERGB (106, 90, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
110 {"MediumSlateBlue" , PALETTERGB (123, 104, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
111 {"LightSlateBlue" , PALETTERGB (132, 112, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
112 {"MediumBlue" , PALETTERGB (0, 0, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
113 {"RoyalBlue" , PALETTERGB (65, 105, 225) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
114 {"blue" , PALETTERGB (0, 0, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
115 {"DodgerBlue" , PALETTERGB (30, 144, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
116 {"DeepSkyBlue" , PALETTERGB (0, 191, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
117 {"SkyBlue" , PALETTERGB (135, 206, 235) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
118 {"LightSkyBlue" , PALETTERGB (135, 206, 250) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
119 {"SteelBlue" , PALETTERGB (70, 130, 180) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
120 {"LightSteelBlue" , PALETTERGB (176, 196, 222) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
121 {"LightBlue" , PALETTERGB (173, 216, 230) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
122 {"PowderBlue" , PALETTERGB (176, 224, 230) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
123 {"PaleTurquoise" , PALETTERGB (175, 238, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
124 {"DarkTurquoise" , PALETTERGB (0, 206, 209) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
125 {"MediumTurquoise" , PALETTERGB (72, 209, 204) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
126 {"turquoise" , PALETTERGB (64, 224, 208) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
127 {"cyan" , PALETTERGB (0, 255, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
128 {"LightCyan" , PALETTERGB (224, 255, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
129 {"CadetBlue" , PALETTERGB (95, 158, 160) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
130 {"MediumAquamarine" , PALETTERGB (102, 205, 170) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
131 {"aquamarine" , PALETTERGB (127, 255, 212) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
132 {"DarkGreen" , PALETTERGB (0, 128, 0) }, /* Adjusted */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
133 {"DarkOliveGreen" , PALETTERGB (85, 107, 47) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
134 {"DarkSeaGreen" , PALETTERGB (143, 188, 143) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
135 {"SeaGreen" , PALETTERGB (46, 139, 87) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
136 {"MediumSeaGreen" , PALETTERGB (60, 179, 113) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
137 {"LightSeaGreen" , PALETTERGB (32, 178, 170) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
138 {"PaleGreen" , PALETTERGB (152, 251, 152) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
139 {"SpringGreen" , PALETTERGB (0, 255, 127) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
140 {"LawnGreen" , PALETTERGB (124, 252, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
141 {"green" , PALETTERGB (0, 255, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
142 {"chartreuse" , PALETTERGB (127, 255, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
143 {"MediumSpringGreen" , PALETTERGB (0, 250, 154) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
144 {"GreenYellow" , PALETTERGB (173, 255, 47) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
145 {"LimeGreen" , PALETTERGB (50, 205, 50) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
146 {"YellowGreen" , PALETTERGB (154, 205, 50) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
147 {"ForestGreen" , PALETTERGB (34, 139, 34) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
148 {"OliveDrab" , PALETTERGB (107, 142, 35) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
149 {"DarkKhaki" , PALETTERGB (189, 183, 107) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
150 {"khaki" , PALETTERGB (240, 230, 140) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
151 {"PaleGoldenrod" , PALETTERGB (238, 232, 170) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
152 {"LightGoldenrodYellow", PALETTERGB (250, 250, 210) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
153 {"LightYellow" , PALETTERGB (255, 255, 224) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
154 {"LightYellow" , PALETTERGB (255, 255, 225) }, /* Adjusted */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
155 {"yellow" , PALETTERGB (255, 255, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
156 {"gold" , PALETTERGB (255, 215, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
157 {"LightGoldenrod" , PALETTERGB (238, 221, 130) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
158 {"goldenrod" , PALETTERGB (218, 165, 32) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
159 {"DarkGoldenrod" , PALETTERGB (184, 134, 11) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
160 {"RosyBrown" , PALETTERGB (188, 143, 143) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
161 {"IndianRed" , PALETTERGB (205, 92, 92) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
162 {"SaddleBrown" , PALETTERGB (139, 69, 19) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
163 {"sienna" , PALETTERGB (160, 82, 45) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
164 {"peru" , PALETTERGB (205, 133, 63) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
165 {"burlywood" , PALETTERGB (222, 184, 135) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
166 {"beige" , PALETTERGB (245, 245, 220) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
167 {"wheat" , PALETTERGB (245, 222, 179) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
168 {"SandyBrown" , PALETTERGB (244, 164, 96) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
169 {"tan" , PALETTERGB (210, 180, 140) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
170 {"chocolate" , PALETTERGB (210, 105, 30) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
171 {"firebrick" , PALETTERGB (178, 34, 34) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
172 {"brown" , PALETTERGB (165, 42, 42) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
173 {"DarkSalmon" , PALETTERGB (233, 150, 122) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
174 {"salmon" , PALETTERGB (250, 128, 114) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
175 {"LightSalmon" , PALETTERGB (255, 160, 122) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
176 {"orange" , PALETTERGB (255, 165, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
177 {"DarkOrange" , PALETTERGB (255, 140, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
178 {"coral" , PALETTERGB (255, 127, 80) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
179 {"LightCoral" , PALETTERGB (240, 128, 128) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
180 {"tomato" , PALETTERGB (255, 99, 71) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
181 {"OrangeRed" , PALETTERGB (255, 69, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
182 {"red" , PALETTERGB (255, 0, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
183 {"HotPink" , PALETTERGB (255, 105, 180) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
184 {"DeepPink" , PALETTERGB (255, 20, 147) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
185 {"pink" , PALETTERGB (255, 192, 203) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
186 {"LightPink" , PALETTERGB (255, 182, 193) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
187 {"PaleVioletRed" , PALETTERGB (219, 112, 147) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
188 {"maroon" , PALETTERGB (176, 48, 96) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
189 {"MediumVioletRed" , PALETTERGB (199, 21, 133) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
190 {"VioletRed" , PALETTERGB (208, 32, 144) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
191 {"magenta" , PALETTERGB (255, 0, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
192 {"violet" , PALETTERGB (238, 130, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
193 {"plum" , PALETTERGB (221, 160, 221) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
194 {"orchid" , PALETTERGB (218, 112, 214) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
195 {"MediumOrchid" , PALETTERGB (186, 85, 211) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
196 {"DarkOrchid" , PALETTERGB (153, 50, 204) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
197 {"DarkViolet" , PALETTERGB (148, 0, 211) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
198 {"BlueViolet" , PALETTERGB (138, 43, 226) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
199 {"purple" , PALETTERGB (160, 32, 240) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
200 {"MediumPurple" , PALETTERGB (147, 112, 219) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
201 {"thistle" , PALETTERGB (216, 191, 216) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
202 {"snow1" , PALETTERGB (255, 250, 250) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
203 {"snow2" , PALETTERGB (238, 233, 233) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
204 {"snow3" , PALETTERGB (205, 201, 201) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
205 {"snow4" , PALETTERGB (139, 137, 137) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
206 {"seashell1" , PALETTERGB (255, 245, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
207 {"seashell2" , PALETTERGB (238, 229, 222) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
208 {"seashell3" , PALETTERGB (205, 197, 191) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
209 {"seashell4" , PALETTERGB (139, 134, 130) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
210 {"AntiqueWhite1" , PALETTERGB (255, 239, 219) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
211 {"AntiqueWhite2" , PALETTERGB (238, 223, 204) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
212 {"AntiqueWhite3" , PALETTERGB (205, 192, 176) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
213 {"AntiqueWhite4" , PALETTERGB (139, 131, 120) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
214 {"bisque1" , PALETTERGB (255, 228, 196) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
215 {"bisque2" , PALETTERGB (238, 213, 183) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
216 {"bisque3" , PALETTERGB (205, 183, 158) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
217 {"bisque4" , PALETTERGB (139, 125, 107) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
218 {"PeachPuff1" , PALETTERGB (255, 218, 185) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
219 {"PeachPuff2" , PALETTERGB (238, 203, 173) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
220 {"PeachPuff3" , PALETTERGB (205, 175, 149) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
221 {"PeachPuff4" , PALETTERGB (139, 119, 101) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
222 {"NavajoWhite1" , PALETTERGB (255, 222, 173) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
223 {"NavajoWhite2" , PALETTERGB (238, 207, 161) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
224 {"NavajoWhite3" , PALETTERGB (205, 179, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
225 {"NavajoWhite4" , PALETTERGB (139, 121, 94) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
226 {"LemonChiffon1" , PALETTERGB (255, 250, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
227 {"LemonChiffon2" , PALETTERGB (238, 233, 191) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
228 {"LemonChiffon3" , PALETTERGB (205, 201, 165) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
229 {"LemonChiffon4" , PALETTERGB (139, 137, 112) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
230 {"cornsilk1" , PALETTERGB (255, 248, 220) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
231 {"cornsilk2" , PALETTERGB (238, 232, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
232 {"cornsilk3" , PALETTERGB (205, 200, 177) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
233 {"cornsilk4" , PALETTERGB (139, 136, 120) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
234 {"ivory1" , PALETTERGB (255, 255, 240) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
235 {"ivory2" , PALETTERGB (240, 240, 208) }, /* Adjusted */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
236 {"ivory3" , PALETTERGB (205, 205, 193) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
237 {"ivory4" , PALETTERGB (139, 139, 131) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
238 {"honeydew1" , PALETTERGB (240, 255, 240) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
239 {"honeydew2" , PALETTERGB (224, 238, 224) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
240 {"honeydew3" , PALETTERGB (193, 205, 193) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
241 {"honeydew4" , PALETTERGB (131, 139, 131) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
242 {"LavenderBlush1" , PALETTERGB (255, 240, 245) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
243 {"LavenderBlush2" , PALETTERGB (238, 224, 229) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
244 {"LavenderBlush3" , PALETTERGB (205, 193, 197) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
245 {"LavenderBlush4" , PALETTERGB (139, 131, 134) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
246 {"MistyRose1" , PALETTERGB (255, 228, 225) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
247 {"MistyRose2" , PALETTERGB (238, 213, 210) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
248 {"MistyRose3" , PALETTERGB (205, 183, 181) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
249 {"MistyRose4" , PALETTERGB (139, 125, 123) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
250 {"azure1" , PALETTERGB (240, 255, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
251 {"azure2" , PALETTERGB (224, 238, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
252 {"azure3" , PALETTERGB (193, 205, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
253 {"azure4" , PALETTERGB (131, 139, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
254 {"SlateBlue1" , PALETTERGB (131, 111, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
255 {"SlateBlue2" , PALETTERGB (122, 103, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
256 {"SlateBlue3" , PALETTERGB (105, 89, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
257 {"SlateBlue4" , PALETTERGB (71, 60, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
258 {"RoyalBlue1" , PALETTERGB (72, 118, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
259 {"RoyalBlue2" , PALETTERGB (67, 110, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
260 {"RoyalBlue3" , PALETTERGB (58, 95, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
261 {"RoyalBlue4" , PALETTERGB (39, 64, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
262 {"blue1" , PALETTERGB (0, 0, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
263 {"blue2" , PALETTERGB (0, 0, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
264 {"blue3" , PALETTERGB (0, 0, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
265 {"blue4" , PALETTERGB (0, 0, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
266 {"DodgerBlue1" , PALETTERGB (30, 144, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
267 {"DodgerBlue2" , PALETTERGB (28, 134, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
268 {"DodgerBlue3" , PALETTERGB (24, 116, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
269 {"DodgerBlue4" , PALETTERGB (16, 78, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
270 {"SteelBlue1" , PALETTERGB (99, 184, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
271 {"SteelBlue2" , PALETTERGB (92, 172, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
272 {"SteelBlue3" , PALETTERGB (79, 148, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
273 {"SteelBlue4" , PALETTERGB (54, 100, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
274 {"DeepSkyBlue1" , PALETTERGB (0, 191, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
275 {"DeepSkyBlue2" , PALETTERGB (0, 178, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
276 {"DeepSkyBlue3" , PALETTERGB (0, 154, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
277 {"DeepSkyBlue4" , PALETTERGB (0, 104, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
278 {"SkyBlue1" , PALETTERGB (135, 206, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
279 {"SkyBlue2" , PALETTERGB (126, 192, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
280 {"SkyBlue3" , PALETTERGB (108, 166, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
281 {"SkyBlue4" , PALETTERGB (74, 112, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
282 {"LightSkyBlue1" , PALETTERGB (176, 226, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
283 {"LightSkyBlue2" , PALETTERGB (164, 211, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
284 {"LightSkyBlue3" , PALETTERGB (141, 182, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
285 {"LightSkyBlue4" , PALETTERGB (96, 123, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
286 {"SlateGray1" , PALETTERGB (198, 226, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
287 {"SlateGray2" , PALETTERGB (185, 211, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
288 {"SlateGray3" , PALETTERGB (159, 182, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
289 {"SlateGray4" , PALETTERGB (108, 123, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
290 {"LightSteelBlue1" , PALETTERGB (202, 225, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
291 {"LightSteelBlue2" , PALETTERGB (188, 210, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
292 {"LightSteelBlue3" , PALETTERGB (162, 181, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
293 {"LightSteelBlue4" , PALETTERGB (110, 123, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
294 {"LightBlue1" , PALETTERGB (191, 239, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
295 {"LightBlue2" , PALETTERGB (178, 223, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
296 {"LightBlue3" , PALETTERGB (154, 192, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
297 {"LightBlue4" , PALETTERGB (104, 131, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
298 {"LightCyan1" , PALETTERGB (224, 255, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
299 {"LightCyan2" , PALETTERGB (209, 238, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
300 {"LightCyan3" , PALETTERGB (180, 205, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
301 {"LightCyan4" , PALETTERGB (122, 139, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
302 {"PaleTurquoise1" , PALETTERGB (187, 255, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
303 {"PaleTurquoise2" , PALETTERGB (174, 238, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
304 {"PaleTurquoise3" , PALETTERGB (150, 205, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
305 {"PaleTurquoise4" , PALETTERGB (102, 139, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
306 {"CadetBlue1" , PALETTERGB (152, 245, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
307 {"CadetBlue2" , PALETTERGB (144, 220, 240) }, /* Adjusted */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
308 {"CadetBlue3" , PALETTERGB (122, 197, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
309 {"CadetBlue4" , PALETTERGB (83, 134, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
310 {"turquoise1" , PALETTERGB (0, 245, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
311 {"turquoise2" , PALETTERGB (0, 229, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
312 {"turquoise3" , PALETTERGB (0, 197, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
313 {"turquoise4" , PALETTERGB (0, 134, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
314 {"cyan1" , PALETTERGB (0, 255, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
315 {"cyan2" , PALETTERGB (0, 238, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
316 {"cyan3" , PALETTERGB (0, 205, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
317 {"cyan4" , PALETTERGB (0, 139, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
318 {"DarkSlateGray1" , PALETTERGB (151, 255, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
319 {"DarkSlateGray2" , PALETTERGB (141, 238, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
320 {"DarkSlateGray3" , PALETTERGB (121, 205, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
321 {"DarkSlateGray4" , PALETTERGB (82, 139, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
322 {"aquamarine1" , PALETTERGB (127, 255, 212) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
323 {"aquamarine2" , PALETTERGB (118, 238, 198) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
324 {"aquamarine3" , PALETTERGB (102, 205, 170) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
325 {"aquamarine4" , PALETTERGB (69, 139, 116) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
326 {"DarkSeaGreen1" , PALETTERGB (193, 255, 193) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
327 {"DarkSeaGreen2" , PALETTERGB (180, 238, 180) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
328 {"DarkSeaGreen3" , PALETTERGB (155, 205, 155) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
329 {"DarkSeaGreen4" , PALETTERGB (105, 139, 105) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
330 {"SeaGreen1" , PALETTERGB (84, 255, 159) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
331 {"SeaGreen2" , PALETTERGB (78, 238, 148) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
332 {"SeaGreen3" , PALETTERGB (67, 205, 128) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
333 {"SeaGreen4" , PALETTERGB (46, 139, 87) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
334 {"PaleGreen1" , PALETTERGB (154, 255, 154) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
335 {"PaleGreen2" , PALETTERGB (144, 238, 144) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
336 {"PaleGreen3" , PALETTERGB (124, 205, 124) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
337 {"PaleGreen4" , PALETTERGB (84, 139, 84) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
338 {"SpringGreen1" , PALETTERGB (0, 255, 127) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
339 {"SpringGreen2" , PALETTERGB (0, 238, 118) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
340 {"SpringGreen3" , PALETTERGB (0, 205, 102) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
341 {"SpringGreen4" , PALETTERGB (0, 139, 69) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
342 {"green1" , PALETTERGB (0, 255, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
343 {"green2" , PALETTERGB (0, 238, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
344 {"green3" , PALETTERGB (0, 205, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
345 {"green4" , PALETTERGB (0, 139, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
346 {"chartreuse1" , PALETTERGB (127, 255, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
347 {"chartreuse2" , PALETTERGB (118, 238, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
348 {"chartreuse3" , PALETTERGB (102, 205, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
349 {"chartreuse4" , PALETTERGB (69, 139, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
350 {"OliveDrab1" , PALETTERGB (192, 255, 62) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
351 {"OliveDrab2" , PALETTERGB (179, 238, 58) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
352 {"OliveDrab3" , PALETTERGB (154, 205, 50) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
353 {"OliveDrab4" , PALETTERGB (105, 139, 34) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
354 {"DarkOliveGreen1" , PALETTERGB (202, 255, 112) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
355 {"DarkOliveGreen2" , PALETTERGB (188, 238, 104) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
356 {"DarkOliveGreen3" , PALETTERGB (162, 205, 90) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
357 {"DarkOliveGreen4" , PALETTERGB (110, 139, 61) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
358 {"khaki1" , PALETTERGB (255, 246, 143) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
359 {"khaki2" , PALETTERGB (238, 230, 133) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
360 {"khaki3" , PALETTERGB (205, 198, 115) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
361 {"khaki4" , PALETTERGB (139, 134, 78) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
362 {"LightGoldenrod1" , PALETTERGB (255, 236, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
363 {"LightGoldenrod2" , PALETTERGB (238, 220, 130) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
364 {"LightGoldenrod3" , PALETTERGB (205, 190, 112) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
365 {"LightGoldenrod4" , PALETTERGB (139, 129, 76) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
366 {"LightYellow1" , PALETTERGB (255, 255, 224) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
367 {"LightYellow2" , PALETTERGB (238, 238, 209) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
368 {"LightYellow3" , PALETTERGB (205, 205, 180) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
369 {"LightYellow4" , PALETTERGB (139, 139, 122) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
370 {"yellow1" , PALETTERGB (255, 255, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
371 {"yellow2" , PALETTERGB (238, 238, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
372 {"yellow3" , PALETTERGB (205, 205, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
373 {"yellow4" , PALETTERGB (139, 139, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
374 {"gold1" , PALETTERGB (255, 215, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
375 {"gold2" , PALETTERGB (238, 201, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
376 {"gold3" , PALETTERGB (205, 173, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
377 {"gold4" , PALETTERGB (139, 117, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
378 {"goldenrod1" , PALETTERGB (255, 193, 37) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
379 {"goldenrod2" , PALETTERGB (238, 180, 34) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
380 {"goldenrod3" , PALETTERGB (205, 155, 29) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
381 {"goldenrod4" , PALETTERGB (139, 105, 20) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
382 {"DarkGoldenrod1" , PALETTERGB (255, 185, 15) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
383 {"DarkGoldenrod2" , PALETTERGB (238, 173, 14) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
384 {"DarkGoldenrod3" , PALETTERGB (205, 149, 12) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
385 {"DarkGoldenrod4" , PALETTERGB (139, 101, 8) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
386 {"RosyBrown1" , PALETTERGB (255, 193, 193) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
387 {"RosyBrown2" , PALETTERGB (238, 180, 180) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
388 {"RosyBrown3" , PALETTERGB (205, 155, 155) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
389 {"RosyBrown4" , PALETTERGB (139, 105, 105) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
390 {"IndianRed1" , PALETTERGB (255, 106, 106) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
391 {"IndianRed2" , PALETTERGB (238, 99, 99) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
392 {"IndianRed3" , PALETTERGB (205, 85, 85) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
393 {"IndianRed4" , PALETTERGB (139, 58, 58) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
394 {"sienna1" , PALETTERGB (255, 130, 71) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
395 {"sienna2" , PALETTERGB (238, 121, 66) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
396 {"sienna3" , PALETTERGB (205, 104, 57) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
397 {"sienna4" , PALETTERGB (139, 71, 38) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
398 {"burlywood1" , PALETTERGB (255, 211, 155) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
399 {"burlywood2" , PALETTERGB (238, 197, 145) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
400 {"burlywood3" , PALETTERGB (205, 170, 125) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
401 {"burlywood4" , PALETTERGB (139, 115, 85) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
402 {"wheat1" , PALETTERGB (255, 231, 186) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
403 {"wheat2" , PALETTERGB (238, 216, 174) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
404 {"wheat3" , PALETTERGB (205, 186, 150) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
405 {"wheat4" , PALETTERGB (139, 126, 102) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
406 {"tan1" , PALETTERGB (255, 165, 79) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
407 {"tan2" , PALETTERGB (238, 154, 73) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
408 {"tan3" , PALETTERGB (205, 133, 63) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
409 {"tan4" , PALETTERGB (139, 90, 43) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
410 {"chocolate1" , PALETTERGB (255, 127, 36) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
411 {"chocolate2" , PALETTERGB (238, 118, 33) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
412 {"chocolate3" , PALETTERGB (205, 102, 29) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
413 {"chocolate4" , PALETTERGB (139, 69, 19) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
414 {"firebrick1" , PALETTERGB (255, 48, 48) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
415 {"firebrick2" , PALETTERGB (238, 44, 44) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
416 {"firebrick3" , PALETTERGB (205, 38, 38) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
417 {"firebrick4" , PALETTERGB (139, 26, 26) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
418 {"brown1" , PALETTERGB (255, 64, 64) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
419 {"brown2" , PALETTERGB (238, 59, 59) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
420 {"brown3" , PALETTERGB (205, 51, 51) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
421 {"brown4" , PALETTERGB (139, 35, 35) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
422 {"salmon1" , PALETTERGB (255, 140, 105) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
423 {"salmon2" , PALETTERGB (238, 130, 98) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
424 {"salmon3" , PALETTERGB (205, 112, 84) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
425 {"salmon4" , PALETTERGB (139, 76, 57) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
426 {"LightSalmon1" , PALETTERGB (255, 160, 122) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
427 {"LightSalmon2" , PALETTERGB (238, 149, 114) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
428 {"LightSalmon3" , PALETTERGB (205, 129, 98) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
429 {"LightSalmon4" , PALETTERGB (139, 87, 66) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
430 {"orange1" , PALETTERGB (255, 165, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
431 {"orange2" , PALETTERGB (238, 154, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
432 {"orange3" , PALETTERGB (205, 133, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
433 {"orange4" , PALETTERGB (139, 90, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
434 {"DarkOrange1" , PALETTERGB (255, 127, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
435 {"DarkOrange2" , PALETTERGB (238, 118, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
436 {"DarkOrange3" , PALETTERGB (205, 102, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
437 {"DarkOrange4" , PALETTERGB (139, 69, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
438 {"coral1" , PALETTERGB (255, 114, 86) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
439 {"coral2" , PALETTERGB (238, 106, 80) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
440 {"coral3" , PALETTERGB (205, 91, 69) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
441 {"coral4" , PALETTERGB (139, 62, 47) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
442 {"tomato1" , PALETTERGB (255, 99, 71) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
443 {"tomato2" , PALETTERGB (238, 92, 66) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
444 {"tomato3" , PALETTERGB (205, 79, 57) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
445 {"tomato4" , PALETTERGB (139, 54, 38) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
446 {"OrangeRed1" , PALETTERGB (255, 69, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
447 {"OrangeRed2" , PALETTERGB (238, 64, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
448 {"OrangeRed3" , PALETTERGB (205, 55, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
449 {"OrangeRed4" , PALETTERGB (139, 37, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
450 {"red1" , PALETTERGB (255, 0, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
451 {"red2" , PALETTERGB (238, 0, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
452 {"red3" , PALETTERGB (205, 0, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
453 {"red4" , PALETTERGB (139, 0, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
454 {"DeepPink1" , PALETTERGB (255, 20, 147) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
455 {"DeepPink2" , PALETTERGB (238, 18, 137) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
456 {"DeepPink3" , PALETTERGB (205, 16, 118) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
457 {"DeepPink4" , PALETTERGB (139, 10, 80) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
458 {"HotPink1" , PALETTERGB (255, 110, 180) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
459 {"HotPink2" , PALETTERGB (238, 106, 167) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
460 {"HotPink3" , PALETTERGB (205, 96, 144) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
461 {"HotPink4" , PALETTERGB (139, 58, 98) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
462 {"pink1" , PALETTERGB (255, 181, 197) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
463 {"pink2" , PALETTERGB (238, 169, 184) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
464 {"pink3" , PALETTERGB (205, 145, 158) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
465 {"pink4" , PALETTERGB (139, 99, 108) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
466 {"LightPink1" , PALETTERGB (255, 174, 185) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
467 {"LightPink2" , PALETTERGB (238, 162, 173) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
468 {"LightPink3" , PALETTERGB (205, 140, 149) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
469 {"LightPink4" , PALETTERGB (139, 95, 101) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
470 {"PaleVioletRed1" , PALETTERGB (255, 130, 171) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
471 {"PaleVioletRed2" , PALETTERGB (238, 121, 159) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
472 {"PaleVioletRed3" , PALETTERGB (205, 104, 137) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
473 {"PaleVioletRed4" , PALETTERGB (139, 71, 93) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
474 {"maroon1" , PALETTERGB (255, 52, 179) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
475 {"maroon2" , PALETTERGB (238, 48, 167) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
476 {"maroon3" , PALETTERGB (205, 41, 144) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
477 {"maroon4" , PALETTERGB (139, 28, 98) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
478 {"VioletRed1" , PALETTERGB (255, 62, 150) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
479 {"VioletRed2" , PALETTERGB (238, 58, 140) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
480 {"VioletRed3" , PALETTERGB (205, 50, 120) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
481 {"VioletRed4" , PALETTERGB (139, 34, 82) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
482 {"magenta1" , PALETTERGB (255, 0, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
483 {"magenta2" , PALETTERGB (238, 0, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
484 {"magenta3" , PALETTERGB (205, 0, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
485 {"magenta4" , PALETTERGB (139, 0, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
486 {"orchid1" , PALETTERGB (255, 131, 250) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
487 {"orchid2" , PALETTERGB (238, 122, 233) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
488 {"orchid3" , PALETTERGB (205, 105, 201) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
489 {"orchid4" , PALETTERGB (139, 71, 137) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
490 {"plum1" , PALETTERGB (255, 187, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
491 {"plum2" , PALETTERGB (238, 174, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
492 {"plum3" , PALETTERGB (205, 150, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
493 {"plum4" , PALETTERGB (139, 102, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
494 {"MediumOrchid1" , PALETTERGB (224, 102, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
495 {"MediumOrchid2" , PALETTERGB (209, 95, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
496 {"MediumOrchid3" , PALETTERGB (180, 82, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
497 {"MediumOrchid4" , PALETTERGB (122, 55, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
498 {"DarkOrchid1" , PALETTERGB (191, 62, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
499 {"DarkOrchid2" , PALETTERGB (178, 58, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
500 {"DarkOrchid3" , PALETTERGB (154, 50, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
501 {"DarkOrchid4" , PALETTERGB (104, 34, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
502 {"purple1" , PALETTERGB (155, 48, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
503 {"purple2" , PALETTERGB (145, 44, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
504 {"purple3" , PALETTERGB (125, 38, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
505 {"purple4" , PALETTERGB (85, 26, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
506 {"MediumPurple1" , PALETTERGB (171, 130, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
507 {"MediumPurple2" , PALETTERGB (159, 121, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
508 {"MediumPurple3" , PALETTERGB (137, 104, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
509 {"MediumPurple4" , PALETTERGB (93, 71, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
510 {"thistle1" , PALETTERGB (255, 225, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
511 {"thistle2" , PALETTERGB (238, 210, 238) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
512 {"thistle3" , PALETTERGB (205, 181, 205) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
513 {"thistle4" , PALETTERGB (139, 123, 139) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
514 {"gray0" , PALETTERGB (0, 0, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
515 {"grey0" , PALETTERGB (0, 0, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
516 {"gray1" , PALETTERGB (3, 3, 3) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
517 {"grey1" , PALETTERGB (3, 3, 3) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
518 {"gray2" , PALETTERGB (5, 5, 5) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
519 {"grey2" , PALETTERGB (5, 5, 5) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
520 {"gray3" , PALETTERGB (8, 8, 8) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
521 {"grey3" , PALETTERGB (8, 8, 8) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
522 {"gray4" , PALETTERGB (10, 10, 10) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
523 {"grey4" , PALETTERGB (10, 10, 10) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
524 {"gray5" , PALETTERGB (13, 13, 13) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
525 {"grey5" , PALETTERGB (13, 13, 13) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
526 {"gray6" , PALETTERGB (15, 15, 15) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
527 {"grey6" , PALETTERGB (15, 15, 15) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
528 {"gray7" , PALETTERGB (18, 18, 18) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
529 {"grey7" , PALETTERGB (18, 18, 18) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
530 {"gray8" , PALETTERGB (20, 20, 20) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
531 {"grey8" , PALETTERGB (20, 20, 20) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
532 {"gray9" , PALETTERGB (23, 23, 23) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
533 {"grey9" , PALETTERGB (23, 23, 23) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
534 {"gray10" , PALETTERGB (26, 26, 26) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
535 {"grey10" , PALETTERGB (26, 26, 26) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
536 {"gray11" , PALETTERGB (28, 28, 28) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
537 {"grey11" , PALETTERGB (28, 28, 28) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
538 {"gray12" , PALETTERGB (31, 31, 31) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
539 {"grey12" , PALETTERGB (31, 31, 31) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
540 {"gray13" , PALETTERGB (33, 33, 33) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
541 {"grey13" , PALETTERGB (33, 33, 33) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
542 {"gray14" , PALETTERGB (36, 36, 36) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
543 {"grey14" , PALETTERGB (36, 36, 36) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
544 {"gray15" , PALETTERGB (38, 38, 38) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
545 {"grey15" , PALETTERGB (38, 38, 38) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
546 {"gray16" , PALETTERGB (41, 41, 41) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
547 {"grey16" , PALETTERGB (41, 41, 41) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
548 {"gray17" , PALETTERGB (43, 43, 43) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
549 {"grey17" , PALETTERGB (43, 43, 43) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
550 {"gray18" , PALETTERGB (46, 46, 46) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
551 {"grey18" , PALETTERGB (46, 46, 46) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
552 {"gray19" , PALETTERGB (48, 48, 48) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
553 {"grey19" , PALETTERGB (48, 48, 48) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
554 {"gray20" , PALETTERGB (51, 51, 51) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
555 {"grey20" , PALETTERGB (51, 51, 51) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
556 {"gray21" , PALETTERGB (54, 54, 54) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
557 {"grey21" , PALETTERGB (54, 54, 54) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
558 {"gray22" , PALETTERGB (56, 56, 56) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
559 {"grey22" , PALETTERGB (56, 56, 56) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
560 {"gray23" , PALETTERGB (59, 59, 59) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
561 {"grey23" , PALETTERGB (59, 59, 59) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
562 {"gray24" , PALETTERGB (61, 61, 61) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
563 {"grey24" , PALETTERGB (61, 61, 61) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
564 {"gray25" , PALETTERGB (64, 64, 64) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
565 {"grey25" , PALETTERGB (64, 64, 64) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
566 {"gray26" , PALETTERGB (66, 66, 66) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
567 {"grey26" , PALETTERGB (66, 66, 66) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
568 {"gray27" , PALETTERGB (69, 69, 69) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
569 {"grey27" , PALETTERGB (69, 69, 69) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
570 {"gray28" , PALETTERGB (71, 71, 71) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
571 {"grey28" , PALETTERGB (71, 71, 71) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
572 {"gray29" , PALETTERGB (74, 74, 74) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
573 {"grey29" , PALETTERGB (74, 74, 74) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
574 {"gray30" , PALETTERGB (77, 77, 77) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
575 {"grey30" , PALETTERGB (77, 77, 77) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
576 {"gray31" , PALETTERGB (79, 79, 79) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
577 {"grey31" , PALETTERGB (79, 79, 79) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
578 {"gray32" , PALETTERGB (82, 82, 82) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
579 {"grey32" , PALETTERGB (82, 82, 82) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
580 {"gray33" , PALETTERGB (84, 84, 84) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
581 {"grey33" , PALETTERGB (84, 84, 84) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
582 {"gray34" , PALETTERGB (87, 87, 87) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
583 {"grey34" , PALETTERGB (87, 87, 87) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
584 {"gray35" , PALETTERGB (89, 89, 89) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
585 {"grey35" , PALETTERGB (89, 89, 89) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
586 {"gray36" , PALETTERGB (92, 92, 92) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
587 {"grey36" , PALETTERGB (92, 92, 92) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
588 {"gray37" , PALETTERGB (94, 94, 94) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
589 {"grey37" , PALETTERGB (94, 94, 94) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
590 {"gray38" , PALETTERGB (97, 97, 97) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
591 {"grey38" , PALETTERGB (97, 97, 97) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
592 {"gray39" , PALETTERGB (99, 99, 99) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
593 {"grey39" , PALETTERGB (99, 99, 99) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
594 {"gray40" , PALETTERGB (102, 102, 102) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
595 {"grey40" , PALETTERGB (102, 102, 102) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
596 {"gray41" , PALETTERGB (105, 105, 105) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
597 {"grey41" , PALETTERGB (105, 105, 105) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
598 {"gray42" , PALETTERGB (107, 107, 107) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
599 {"grey42" , PALETTERGB (107, 107, 107) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
600 {"gray43" , PALETTERGB (110, 110, 110) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
601 {"grey43" , PALETTERGB (110, 110, 110) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
602 {"gray44" , PALETTERGB (112, 112, 112) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
603 {"grey44" , PALETTERGB (112, 112, 112) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
604 {"gray45" , PALETTERGB (115, 115, 115) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
605 {"grey45" , PALETTERGB (115, 115, 115) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
606 {"gray46" , PALETTERGB (117, 117, 117) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
607 {"grey46" , PALETTERGB (117, 117, 117) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
608 {"gray47" , PALETTERGB (120, 120, 120) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
609 {"grey47" , PALETTERGB (120, 120, 120) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
610 {"gray48" , PALETTERGB (122, 122, 122) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
611 {"grey48" , PALETTERGB (122, 122, 122) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
612 {"gray49" , PALETTERGB (125, 125, 125) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
613 {"grey49" , PALETTERGB (125, 125, 125) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
614 {"gray50" , PALETTERGB (128, 128, 128) }, /* Adjusted */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
615 {"grey50" , PALETTERGB (128, 128, 128) }, /* Adjusted */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
616 {"gray51" , PALETTERGB (130, 130, 130) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
617 {"grey51" , PALETTERGB (130, 130, 130) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
618 {"gray52" , PALETTERGB (133, 133, 133) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
619 {"grey52" , PALETTERGB (133, 133, 133) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
620 {"gray53" , PALETTERGB (135, 135, 135) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
621 {"grey53" , PALETTERGB (135, 135, 135) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
622 {"gray54" , PALETTERGB (138, 138, 138) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
623 {"grey54" , PALETTERGB (138, 138, 138) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
624 {"gray55" , PALETTERGB (140, 140, 140) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
625 {"grey55" , PALETTERGB (140, 140, 140) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
626 {"gray56" , PALETTERGB (143, 143, 143) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
627 {"grey56" , PALETTERGB (143, 143, 143) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
628 {"gray57" , PALETTERGB (145, 145, 145) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
629 {"grey57" , PALETTERGB (145, 145, 145) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
630 {"gray58" , PALETTERGB (148, 148, 148) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
631 {"grey58" , PALETTERGB (148, 148, 148) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
632 {"gray59" , PALETTERGB (150, 150, 150) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
633 {"grey59" , PALETTERGB (150, 150, 150) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
634 {"gray60" , PALETTERGB (153, 153, 153) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
635 {"grey60" , PALETTERGB (153, 153, 153) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
636 {"gray61" , PALETTERGB (156, 156, 156) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
637 {"grey61" , PALETTERGB (156, 156, 156) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
638 {"gray62" , PALETTERGB (158, 158, 158) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
639 {"grey62" , PALETTERGB (158, 158, 158) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
640 {"gray63" , PALETTERGB (161, 161, 161) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
641 {"grey63" , PALETTERGB (161, 161, 161) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
642 {"gray64" , PALETTERGB (163, 163, 163) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
643 {"grey64" , PALETTERGB (163, 163, 163) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
644 {"gray65" , PALETTERGB (166, 166, 166) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
645 {"grey65" , PALETTERGB (166, 166, 166) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
646 {"gray66" , PALETTERGB (168, 168, 168) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
647 {"grey66" , PALETTERGB (168, 168, 168) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
648 {"gray67" , PALETTERGB (171, 171, 171) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
649 {"grey67" , PALETTERGB (171, 171, 171) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
650 {"gray68" , PALETTERGB (173, 173, 173) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
651 {"grey68" , PALETTERGB (173, 173, 173) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
652 {"gray69" , PALETTERGB (176, 176, 176) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
653 {"grey69" , PALETTERGB (176, 176, 176) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
654 {"gray70" , PALETTERGB (179, 179, 179) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
655 {"grey70" , PALETTERGB (179, 179, 179) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
656 {"gray71" , PALETTERGB (181, 181, 181) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
657 {"grey71" , PALETTERGB (181, 181, 181) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
658 {"gray72" , PALETTERGB (184, 184, 184) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
659 {"grey72" , PALETTERGB (184, 184, 184) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
660 {"gray73" , PALETTERGB (186, 186, 186) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
661 {"grey73" , PALETTERGB (186, 186, 186) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
662 {"gray74" , PALETTERGB (189, 189, 189) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
663 {"grey74" , PALETTERGB (189, 189, 189) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
664 {"gray75" , PALETTERGB (192, 192, 192) }, /* Adjusted */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
665 {"grey75" , PALETTERGB (192, 192, 192) }, /* Adjusted */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
666 {"gray76" , PALETTERGB (194, 194, 194) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
667 {"grey76" , PALETTERGB (194, 194, 194) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
668 {"gray77" , PALETTERGB (196, 196, 196) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
669 {"grey77" , PALETTERGB (196, 196, 196) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
670 {"gray78" , PALETTERGB (199, 199, 199) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
671 {"grey78" , PALETTERGB (199, 199, 199) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
672 {"gray79" , PALETTERGB (201, 201, 201) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
673 {"grey79" , PALETTERGB (201, 201, 201) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
674 {"gray80" , PALETTERGB (204, 204, 204) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
675 {"grey80" , PALETTERGB (204, 204, 204) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
676 {"gray81" , PALETTERGB (207, 207, 207) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
677 {"grey81" , PALETTERGB (207, 207, 207) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
678 {"gray82" , PALETTERGB (209, 209, 209) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
679 {"grey82" , PALETTERGB (209, 209, 209) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
680 {"gray83" , PALETTERGB (212, 212, 212) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
681 {"grey83" , PALETTERGB (212, 212, 212) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
682 {"gray84" , PALETTERGB (214, 214, 214) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
683 {"grey84" , PALETTERGB (214, 214, 214) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
684 {"gray85" , PALETTERGB (217, 217, 217) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
685 {"grey85" , PALETTERGB (217, 217, 217) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
686 {"gray86" , PALETTERGB (219, 219, 219) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
687 {"grey86" , PALETTERGB (219, 219, 219) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
688 {"gray87" , PALETTERGB (222, 222, 222) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
689 {"grey87" , PALETTERGB (222, 222, 222) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
690 {"gray88" , PALETTERGB (224, 224, 224) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
691 {"grey88" , PALETTERGB (224, 224, 224) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
692 {"gray89" , PALETTERGB (227, 227, 227) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
693 {"grey89" , PALETTERGB (227, 227, 227) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
694 {"gray90" , PALETTERGB (229, 229, 229) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
695 {"grey90" , PALETTERGB (229, 229, 229) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
696 {"gray91" , PALETTERGB (232, 232, 232) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
697 {"grey91" , PALETTERGB (232, 232, 232) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
698 {"gray92" , PALETTERGB (235, 235, 235) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
699 {"grey92" , PALETTERGB (235, 235, 235) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
700 {"gray93" , PALETTERGB (237, 237, 237) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
701 {"grey93" , PALETTERGB (237, 237, 237) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
702 {"gray94" , PALETTERGB (240, 240, 240) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
703 {"grey94" , PALETTERGB (240, 240, 240) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
704 {"gray95" , PALETTERGB (242, 242, 242) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
705 {"grey95" , PALETTERGB (242, 242, 242) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
706 {"gray96" , PALETTERGB (245, 245, 245) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
707 {"grey96" , PALETTERGB (245, 245, 245) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
708 {"gray97" , PALETTERGB (247, 247, 247) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
709 {"grey97" , PALETTERGB (247, 247, 247) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
710 {"gray98" , PALETTERGB (250, 250, 250) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
711 {"grey98" , PALETTERGB (250, 250, 250) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
712 {"gray99" , PALETTERGB (252, 252, 252) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
713 {"grey99" , PALETTERGB (252, 252, 252) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
714 {"gray100" , PALETTERGB (255, 255, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
715 {"grey100" , PALETTERGB (255, 255, 255) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
716 {"DarkGrey" , PALETTERGB (169, 169, 169) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
717 {"DarkGray" , PALETTERGB (169, 169, 169) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
718 {"DarkBlue" , PALETTERGB (0, 0, 128) }, /* Adjusted == Navy */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
719 {"DarkCyan" , PALETTERGB (0, 128, 128) }, /* Adjusted */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
720 {"DarkMagenta" , PALETTERGB (128, 0, 128) }, /* Adjusted */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
721 {"DarkRed" , PALETTERGB (128, 0, 0) }, /* Adjusted */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
722 {"LightGreen" , PALETTERGB (144, 238, 144) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
723 /* Added to match values in the default Windows palette: */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
724 {"DarkYellow" , PALETTERGB (128, 128, 0) },
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
725 {"PaleYellow" , PALETTERGB (255, 255, 128) }
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
726 };
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
727
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
728
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
729 typedef struct fontmap_t
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
730 {
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
731 const Ascbyte *name;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
732 int value;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
733 } fontmap_t;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
734
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
735 /* Default weight first, preferred names listed before synonyms */
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
736 static const fontmap_t fontweight_map[] =
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
737 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
738 {"Regular" , FW_REGULAR}, /* The standard font weight */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
739 {"Thin" , FW_THIN},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
740 {"Extra Light" , FW_EXTRALIGHT},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
741 {"Ultra Light" , FW_ULTRALIGHT},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
742 {"Light" , FW_LIGHT},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
743 {"Normal" , FW_NORMAL},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
744 {"Medium" , FW_MEDIUM},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
745 {"Semi Bold" , FW_SEMIBOLD},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
746 {"Demi Bold" , FW_DEMIBOLD},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
747 {"Bold" , FW_BOLD}, /* The standard bold font weight */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
748 {"Extra Bold" , FW_EXTRABOLD},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
749 {"Ultra Bold" , FW_ULTRABOLD},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
750 {"Heavy" , FW_HEAVY},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
751 {"Black" , FW_BLACK}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
752 };
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
753
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
754 /* Default charset must be listed first, no synonyms allowed because these
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
755 * names are matched against the names reported by win32 by match_font() */
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
756 static const fontmap_t charset_map[] =
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
757 {
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
758 {"Western" , ANSI_CHARSET}, /* Latin 1 */
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
759 {"Central European" , EASTEUROPE_CHARSET},
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
760 {"Cyrillic" , RUSSIAN_CHARSET},
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
761 {"Greek" , GREEK_CHARSET},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
762 {"Turkish" , TURKISH_CHARSET},
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
763 {"Hebrew" , HEBREW_CHARSET},
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
764 {"Arabic" , ARABIC_CHARSET},
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
765 {"Baltic" , BALTIC_CHARSET},
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
766 {"Viet Nam" , VIETNAMESE_CHARSET},
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
767 {"Thai" , THAI_CHARSET},
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
768 {"Japanese" , SHIFTJIS_CHARSET},
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
769 {"Korean" , HANGEUL_CHARSET},
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
770 {"Simplified Chinese" , GB2312_CHARSET},
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
771 {"Traditional Chinese", CHINESEBIG5_CHARSET},
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
772
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
773 {"Symbol" , SYMBOL_CHARSET},
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
774 {"Mac" , MAC_CHARSET},
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
775 {"Korean Johab" , JOHAB_CHARSET},
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
776 {"OEM/DOS" , OEM_CHARSET}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
777 };
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
778
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
779 #ifdef MULE
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
780
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
781 typedef struct unicode_subrange_raw_t
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
782 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
783 int subrange_bit;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
784 int start; /* first Unicode codepoint */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
785 int end; /* last Unicode codepoint */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
786 } unicode_subrange_raw_t;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
787
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
788 /* This table comes from MSDN, Unicode Subset Bitfields [Platform SDK
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
789 Documentation, Base Services, International Features, Unicode and
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
790 Character Sets, Unicode and Character Set Reference, Unicode and
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
791 Character Set Constants]. We preprocess it at startup time into an
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
792 array of unicode_subrange_t.
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
793 */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
794
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
795 static const unicode_subrange_raw_t unicode_subrange_raw_map[] =
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
796 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
797 {0, 0x0020, 0x007e}, /* Basic Latin */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
798 {1, 0x00a0, 0x00ff}, /* Latin-1 Supplement */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
799 {2, 0x0100, 0x017f}, /* Latin Extended-A */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
800 {3, 0x0180, 0x024f}, /* Latin Extended-B */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
801 {4, 0x0250, 0x02af}, /* IPA Extensions */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
802 {5, 0x02b0, 0x02ff}, /* Spacing Modifier Letters */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
803 {6, 0x0300, 0x036f}, /* Combining Diacritical Marks */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
804 {7, 0x0370, 0x03ff}, /* Basic Greek */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
805 /* 8 Reserved */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
806 {9, 0x0400, 0x04ff}, /* Cyrillic */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
807 {10, 0x0530, 0x058f}, /* Armenian */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
808 {11, 0x0590, 0x05ff}, /* Basic Hebrew */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
809 /* 12 Reserved */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
810 {13, 0x0600, 0x06ff}, /* Basic Arabic */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
811 /* 14 Reserved */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
812 {15, 0x0900, 0x097f}, /* Devanagari */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
813 {16, 0x0980, 0x09ff}, /* Bengali */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
814 {17, 0x0a00, 0x0a7f}, /* Gurmukhi */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
815 {18, 0x0a80, 0x0aff}, /* Gujarati */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
816 {19, 0x0b00, 0x0b7f}, /* Oriya */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
817 {20, 0x0b80, 0x0bff}, /* Tamil */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
818 {21, 0x0c00, 0x0c7f}, /* Telugu */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
819 {22, 0x0c80, 0x0cff}, /* Kannada */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
820 {23, 0x0d00, 0x0d7f}, /* Malayalam */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
821 {24, 0x0e00, 0x0e7f}, /* Thai */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
822 {25, 0x0e80, 0x0eff}, /* Lao */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
823 {26, 0x10a0, 0x10ff}, /* Basic Georgian */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
824 /* 27 Reserved */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
825 {28, 0x1100, 0x11ff}, /* Hangul Jamo */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
826 {29, 0x1e00, 0x1eff}, /* Latin Extended Additional */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
827 {30, 0x1f00, 0x1fff}, /* Greek Extended */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
828 {31, 0x2000, 0x206f}, /* General Punctuation */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
829 {32, 0x2070, 0x209f}, /* Subscripts and Superscripts */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
830 {33, 0x20a0, 0x20cf}, /* Currency Symbols */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
831 {34, 0x20d0, 0x20ff}, /* Combining Diacritical Marks for Symbols */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
832 {35, 0x2100, 0x214f}, /* Letter-like Symbols */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
833 {36, 0x2150, 0x218f}, /* Number Forms */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
834 {37, 0x2190, 0x21ff}, /* Arrows */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
835 {38, 0x2200, 0x22ff}, /* Mathematical Operators */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
836 {39, 0x2300, 0x23ff}, /* Miscellaneous Technical */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
837 {40, 0x2400, 0x243f}, /* Control Pictures */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
838 {41, 0x2440, 0x245f}, /* Optical Character Recognition */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
839 {42, 0x2460, 0x24ff}, /* Enclosed Alphanumerics */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
840 {43, 0x2500, 0x257f}, /* Box Drawing */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
841 {44, 0x2580, 0x259f}, /* Block Elements */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
842 {45, 0x25a0, 0x25ff}, /* Geometric Shapes */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
843 {46, 0x2600, 0x26ff}, /* Miscellaneous Symbols */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
844 {47, 0x2700, 0x27bf}, /* Dingbats */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
845 {48, 0x3000, 0x303f}, /* Chinese, Japanese, and Korean (CJK) Symbols and Punctuation */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
846 {49, 0x3040, 0x309f}, /* Hiragana */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
847 {50, 0x30a0, 0x30ff}, /* Katakana */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
848 {51, 0x3100, 0x312f}, /* Bopomofo */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
849 {51, 0x31a0, 0x31bf}, /* Extended Bopomofo */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
850 {52, 0x3130, 0x318f}, /* Hangul Compatibility Jamo */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
851 {53, 0x3190, 0x319f}, /* CJK Miscellaneous */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
852 {54, 0x3200, 0x32ff}, /* Enclosed CJK Letters and Months */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
853 {55, 0x3300, 0x33ff}, /* CJK Compatibility */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
854 {56, 0xac00, 0xd7a3}, /* Hangul */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
855 {57, 0xd800, 0xdfff}, /* Surrogates. Note that setting this bit implies that there is at least one codepoint beyond the Basic Multilingual Plane that is supported by this font. */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
856 /* 58 Reserved */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
857 {59, 0x4e00, 0x9fff}, /* CJK Unified Ideographs */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
858 {59, 0x2e80, 0x2eff}, /* CJK Radicals Supplement */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
859 {59, 0x2f00, 0x2fdf}, /* Kangxi Radicals */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
860 {59, 0x2ff0, 0x2fff}, /* Ideographic Description */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
861 {59, 0x3400, 0x4dbf}, /* CJK Unified Ideograph Extension A */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
862 {60, 0xe000, 0xf8ff}, /* Private Use Area */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
863 {61, 0xf900, 0xfaff}, /* CJK Compatibility Ideographs */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
864 {62, 0xfb00, 0xfb4f}, /* Alphabetic Presentation Forms */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
865 {63, 0xfb50, 0xfdff}, /* Arabic Presentation Forms-A */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
866 {64, 0xfe20, 0xfe2f}, /* Combining Half Marks */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
867 {65, 0xfe30, 0xfe4f}, /* CJK Compatibility Forms */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
868 {66, 0xfe50, 0xfe6f}, /* Small Form Variants */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
869 {67, 0xfe70, 0xfefe}, /* Arabic Presentation Forms-B */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
870 {68, 0xff00, 0xffef}, /* Halfwidth and Fullwidth Forms */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
871 {69, 0xfff0, 0xfffd}, /* Specials */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
872 {70, 0x0f00, 0x0fcf}, /* Tibetan */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
873 {71, 0x0700, 0x074f}, /* Syriac */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
874 {72, 0x0780, 0x07bf}, /* Thaana */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
875 {73, 0x0d80, 0x0dff}, /* Sinhala */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
876 {74, 0x1000, 0x109f}, /* Myanmar */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
877 {75, 0x1200, 0x12bf}, /* Ethiopic */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
878 {76, 0x13a0, 0x13ff}, /* Cherokee */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
879 {77, 0x1400, 0x14df}, /* Canadian Aboriginal Syllabics */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
880 {78, 0x1680, 0x169f}, /* Ogham */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
881 {79, 0x16a0, 0x16ff}, /* Runic */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
882 {80, 0x1780, 0x17ff}, /* Khmer */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
883 {81, 0x1800, 0x18af}, /* Mongolian */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
884 {82, 0x2800, 0x28ff}, /* Braille */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
885 {83, 0xa000, 0xa48c}, /* Yi, Yi Radicals */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
886 /* 84-122 Reserved */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
887 /* 123 Windows 2000/XP: Layout progress: horizontal from right to left */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
888 /* 124 Windows 2000/XP: Layout progress: vertical before horizontal */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
889 /* 125 Windows 2000/XP: Layout progress: vertical bottom to top */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
890 /* 126 Reserved; must be 0 */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
891 /* 127 Reserved; must be 1 */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
892 };
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
893
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
894 typedef struct unicode_subrange_t
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
895 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
896 int no_subranges;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
897 const unicode_subrange_raw_t *subranges;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
898 } unicode_subrange_t;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
899
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
900 unicode_subrange_t *unicode_subrange_table;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
901
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
902 /* Hash table mapping font specs (strings) to font signature data
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
903 (FONTSIGNATURE structures stored in opaques), as determined by
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
904 GetTextCharsetInfo(). I presume this is somewhat expensive because it
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
905 involves creating a font object. At the very least, with no hashing, it
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
906 definitely took awhile (a few seconds) when encountering characters from
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
907 charsets needing stage 2 processing. */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
908 Lisp_Object Vfont_signature_data;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
909
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
910 #endif /* MULE */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
911
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
912
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
913 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
914 /* helpers */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
915 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
916
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
917 static int
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
918 hexval (Ibyte c)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
919 {
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
920 /* assumes ASCII and isxdigit (c) */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
921 if (c >= 'a')
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
922 return c - 'a' + 10;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
923 else if (c >= 'A')
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
924 return c - 'A' + 10;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
925 else
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
926 return c - '0';
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
927 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
928
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
929 COLORREF
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
930 mswindows_string_to_color (const Ibyte *name)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
931 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
932 int i;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
933
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
934 if (*name == '#')
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
935 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
936 /* numeric names look like "#RRGGBB", "#RRRGGGBBB" or "#RRRRGGGGBBBB"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
937 or "rgb:rrrr/gggg/bbbb" */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
938 unsigned int r, g, b;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
939
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
940 for (i = 1; i < qxestrlen (name); i++)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
941 {
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 800
diff changeset
942 if (!byte_ascii_p (name[i]) || !isxdigit ((int) name[i]))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
943 return (COLORREF) -1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
944 }
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
945 if (qxestrlen (name) == 7)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
946 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
947 r = hexval (name[1]) * 16 + hexval (name[2]);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
948 g = hexval (name[3]) * 16 + hexval (name[4]);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
949 b = hexval (name[5]) * 16 + hexval (name[6]);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
950 return (PALETTERGB (r, g, b));
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
951 }
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
952 else if (qxestrlen (name) == 10)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
953 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
954 r = hexval (name[1]) * 16 + hexval (name[2]);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
955 g = hexval (name[4]) * 16 + hexval (name[5]);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
956 b = hexval (name[7]) * 16 + hexval (name[8]);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
957 return (PALETTERGB (r, g, b));
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
958 }
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
959 else if (qxestrlen (name) == 13)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
960 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
961 r = hexval (name[1]) * 16 + hexval (name[2]);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
962 g = hexval (name[5]) * 16 + hexval (name[6]);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
963 b = hexval (name[9]) * 16 + hexval (name[10]);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
964 return (PALETTERGB (r, g, b));
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
965 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
966 }
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
967 else if (!qxestrncmp_ascii (name, "rgb:", 4))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
968 {
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
969 unsigned int r, g, b;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
970
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
971 if (sscanf ((CIbyte *) name, "rgb:%04x/%04x/%04x", &r, &g, &b) == 3)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
972 {
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
973 int len = qxestrlen (name);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
974 if (len == 18)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
975 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
976 r /= 257;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
977 g /= 257;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
978 b /= 257;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
979 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
980 else if (len == 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
981 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
982 r /= 17;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
983 g /= 17;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
984 b /= 17;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
985 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
986 return (PALETTERGB (r, g, b));
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
987 }
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
988 else
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
989 return (COLORREF) -1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
990 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
991 else if (*name) /* Can't be an empty string */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
992 {
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
993 Ibyte *nospaces = alloca_ibytes (qxestrlen (name) + 1);
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
994 Ibyte *c = nospaces;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
995 while (*name)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
996 if (*name != ' ')
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
997 *c++ = *name++;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
998 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
999 name++;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1000 *c = '\0';
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1001
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1002 for (i = 0; i < countof (mswindows_X_color_map); i++)
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1003 if (!qxestrcasecmp_ascii (nospaces, mswindows_X_color_map[i].name))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1004 return (mswindows_X_color_map[i].colorref);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1005 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1006 return (COLORREF) -1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1007 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1008
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1009 Lisp_Object
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1010 mswindows_color_to_string (COLORREF color)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1011 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1012 int i;
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1013 Ascbyte buf[8];
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1014 COLORREF pcolor = PALETTERGB (GetRValue (color), GetGValue (color),
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1015 GetBValue (color));
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1016
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1017 for (i = 0; i < countof (mswindows_X_color_map); i++)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1018 if (pcolor == (mswindows_X_color_map[i].colorref))
4952
19a72041c5ed Mule-izing, various fixes related to char * arguments
Ben Wing <ben@xemacs.org>
parents: 4932
diff changeset
1019 return build_ascstring (mswindows_X_color_map[i].name);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1020
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1021 sprintf (buf, "#%02X%02X%02X",
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1022 GetRValue (color), GetGValue (color), GetBValue (color));
4952
19a72041c5ed Mule-izing, various fixes related to char * arguments
Ben Wing <ben@xemacs.org>
parents: 4932
diff changeset
1023 return build_ascstring (buf);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1024 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1025
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1026 /*
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1027 * Returns non-zero if the two supplied font patterns match.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1028 * If they match and fontname is not NULL, copies the logical OR of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1029 * patterns to fontname (which is assumed to be at least MSW_FONTSIZE in size).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1030 *
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1031 * The patterns 'match' iff for each field that is not blank in either pattern,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1032 * the corresponding field in the other pattern is either identical or blank.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1033 */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1034 static int
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
1035 match_font (Ibyte *pattern1, Ibyte *pattern2,
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
1036 Ibyte *fontname)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1037 {
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
1038 Ibyte *c1 = pattern1, *c2 = pattern2, *e1 = 0, *e2 = 0;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1039 int i;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1040
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1041 if (fontname)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1042 fontname[0] = '\0';
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1043
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1044 for (i = 0; i < 5; i++)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1045 {
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1046 if (c1 && (e1 = qxestrchr (c1, ':')))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1047 *(e1) = '\0';
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1048 if (c2 && (e2 = qxestrchr (c2, ':')))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1049 *(e2) = '\0';
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1050
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1051 if (c1 && c1[0] != '\0')
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1052 {
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1053 if (c2 && c2[0] != '\0' && qxestrcasecmp (c1, c2))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1054 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1055 if (e1) *e1 = ':';
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1056 if (e2) *e2 = ':';
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1057 return 0;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1058 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1059 else if (fontname)
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1060 qxestrcat_ascii (qxestrcat (fontname, c1), ":");
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1061 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1062 else if (fontname)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1063 {
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1064 if (c2 && c2[0] != '\0')
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1065 qxestrcat_ascii (qxestrcat (fontname, c2), ":");
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1066 else
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1067 qxestrcat_ascii (fontname, ":");
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1068 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1069
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1070 if (e1) *(e1++) = ':';
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1071 if (e2) *(e2++) = ':';
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1072 c1 = e1;
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1073 c2 = e2;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1074 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1075
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1076 if (fontname)
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1077 fontname[qxestrlen (fontname) - 1] = '\0'; /* Trim trailing ':' */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1078 return 1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1079 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1080
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1081
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1082 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1083 /* exports */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1084 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1085
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1086 struct font_enum_t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1087 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1088 HDC hdc;
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1089 Lisp_Object list;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1090 };
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1091
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1092 static int CALLBACK
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1093 font_enum_callback_2 (ENUMLOGFONTEXW *lpelfe, NEWTEXTMETRICEXW *lpntme,
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1094 int FontType, struct font_enum_t *font_enum)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1095 {
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
1096 Ibyte fontname[MSW_FONTSIZE * 2 * MAX_ICHAR_LEN]; /* should be enough :)*/
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1097 Lisp_Object fontname_lispstr;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1098 int i;
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
1099 Ibyte *facename;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1100
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1101 /*
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1102 * The enumerated font weights are not to be trusted because:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1103 * a) lpelfe->elfStyle is only filled in for TrueType fonts.
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1104 * b) Not all Bold and Italic styles of all fonts (including some Vector,
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1105 * Truetype and Raster fonts) are enumerated.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1106 * I guess that fonts for which Bold and Italic styles are generated
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1107 * 'on-the-fly' are not enumerated. It would be overly restrictive to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1108 * disallow Bold And Italic weights for these fonts, so we just leave
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1109 * weights unspecified. This means that we have to weed out duplicates of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1110 * those fonts that do get enumerated with different weights.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1111 */
4981
4aebb0131297 Cleanups/renaming of EXTERNAL_TO_C_STRING and friends
Ben Wing <ben@xemacs.org>
parents: 4953
diff changeset
1112 facename = TSTR_TO_ITEXT (lpelfe->elfLogFont.lfFaceName);
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
1113 if (itext_ichar (facename) == '@')
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1114 /* This is a font for writing vertically. We ignore it. */
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1115 return 1;
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1116
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1117 if (FontType == 0 /*vector*/ || FontType & TRUETYPE_FONTTYPE)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1118 /* Scalable, so leave pointsize blank */
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1119 qxesprintf (fontname, "%s::::", facename);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1120 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1121 /* Formula for pointsize->height from LOGFONT docs in Platform SDK */
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1122 qxesprintf (fontname, "%s::%d::", facename,
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1123 MulDiv (lpntme->ntmTm.tmHeight -
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1124 lpntme->ntmTm.tmInternalLeading,
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1125 72, GetDeviceCaps (font_enum->hdc, LOGPIXELSY)));
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1126
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1127 /*
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1128 * The enumerated font character set strings are not to be trusted because
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1129 * lpelfe->elfScript is returned in the host language and not in English.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1130 * We can't know a priori the translations of "Western", "Central European"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1131 * etc into the host language, so we must use English. The same argument
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1132 * applies to the font weight string when matching fonts.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1133 */
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1134 for (i = 0; i < countof (charset_map); i++)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1135 if (lpelfe->elfLogFont.lfCharSet == charset_map[i].value)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1136 {
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1137 qxestrcat_ascii (fontname, charset_map[i].name);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1138 break;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1139 }
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1140 if (i == countof (charset_map))
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1141 return 1;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1142
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1143 /* Add the font name to the list if not already there */
4953
304aebb79cd3 function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents: 4952
diff changeset
1144 fontname_lispstr = build_istring (fontname);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1145 if (NILP (Fassoc (fontname_lispstr, font_enum->list)))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1146 font_enum->list =
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1147 Fcons (Fcons (fontname_lispstr,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1148 /* TMPF_FIXED_PITCH is backwards from what you expect!
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1149 If set, it means NOT fixed pitch. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1150 (lpntme->ntmTm.tmPitchAndFamily & TMPF_FIXED_PITCH) ?
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1151 Qnil : Qt),
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1152 font_enum->list);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1153
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1154 return 1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1155 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1156
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1157 static int CALLBACK
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
1158 font_enum_callback_1 (ENUMLOGFONTEXW *lpelfe,
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
1159 NEWTEXTMETRICEXW *UNUSED (lpntme),
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
1160 int UNUSED (FontType), struct font_enum_t *font_enum)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1161 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1162 /* This function gets called once per facename per character set.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1163 * We call a second callback to enumerate the fonts in each facename */
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1164 return qxeEnumFontFamiliesEx (font_enum->hdc, &lpelfe->elfLogFont,
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1165 (FONTENUMPROCW) font_enum_callback_2,
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1166 (LPARAM) font_enum, 0);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1167 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1168
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1169 /* Function for sorting lists of fonts as obtained from
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1170 mswindows_enumerate_fonts(). These come in a known format:
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1171 "family::::charset" for TrueType fonts, "family::size::charset"
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1172 otherwise. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1173
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1174 static int
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1175 sort_font_list_function (Lisp_Object obj1, Lisp_Object obj2,
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
1176 Lisp_Object UNUSED (pred))
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1177 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1178 Ibyte *font1, *font2;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1179 Ibyte *c1, *c2;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1180 int t1, t2;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1181
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1182 /*
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1183 1. fixed over proportional.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1184 2. Western over other charsets.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1185 3. TrueType over non-TrueType.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1186 4. Within non-TrueType, sizes closer to 10pt over sizes farther from 10pt.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1187 5. Courier New over other families.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1188 */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1189
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1190 /* The sort function should return > 0 if OBJ1 < OBJ2, < 0 otherwise.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1191 NOTE: This is backwards from the way qsort() works. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1192
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1193 t1 = !NILP (XCDR (obj1));
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1194 t2 = !NILP (XCDR (obj2));
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1195
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1196 if (t1 && !t2)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1197 return 1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1198 if (t2 && !t1)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1199 return -1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1200
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1201 font1 = XSTRING_DATA (XCAR (obj1));
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1202 font2 = XSTRING_DATA (XCAR (obj2));
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1203
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1204 c1 = qxestrrchr (font1, ':');
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1205 c2 = qxestrrchr (font2, ':');
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1206
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1207 t1 = !qxestrcasecmp_ascii (c1 + 1, "western");
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1208 t2 = !qxestrcasecmp_ascii (c2 + 1, "western");
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1209
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1210 if (t1 && !t2)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1211 return 1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1212 if (t2 && !t1)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1213 return -1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1214
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1215 c1 -= 2;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1216 c2 -= 2;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1217 t1 = *c1 == ':';
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1218 t2 = *c2 == ':';
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1219
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1220 if (t1 && !t2)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1221 return 1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1222 if (t2 && !t1)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1223 return -1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1224
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1225 if (!t1 && !t2)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1226 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1227 while (isdigit (*c1))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1228 c1--;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1229 while (isdigit (*c2))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1230 c2--;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1231
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1232 t1 = qxeatoi (c1 + 1) - 10;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1233 t2 = qxeatoi (c2 + 1) - 10;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1234
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1235 if (abs (t1) < abs (t2))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1236 return 1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1237 else if (abs (t2) < abs (t1))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1238 return -1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1239 else if (t1 < t2)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1240 /* Prefer a smaller font over a larger one just as far away
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1241 because the smaller one won't upset the total line height if it's
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1242 just a few chars. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1243 return 1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1244 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1245
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1246 t1 = !qxestrncasecmp_ascii (font1, "courier new:", 12);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1247 t2 = !qxestrncasecmp_ascii (font2, "courier new:", 12);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1248
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1249 if (t1 && !t2)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1250 return 1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1251 if (t2 && !t1)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1252 return -1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1253
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1254 return -1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1255 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1256
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1257 /*
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1258 * Enumerate the available on the HDC fonts and return a list of string
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1259 * font names.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1260 */
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1261 Lisp_Object
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1262 mswindows_enumerate_fonts (HDC hdc)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1263 {
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1264 /* This cannot GC */
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1265 LOGFONTW logfont;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1266 struct font_enum_t font_enum;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1267
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1268 assert (hdc != NULL);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1269 logfont.lfCharSet = DEFAULT_CHARSET;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1270 logfont.lfFaceName[0] = '\0';
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1271 logfont.lfPitchAndFamily = DEFAULT_PITCH;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1272 font_enum.hdc = hdc;
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1273 font_enum.list = Qnil;
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1274 /* EnumFontFamilies seems to enumerate only one charset per font, which
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1275 is not what we want. We aren't supporting NT 3.5x, so no need to
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1276 worry about this not existing. */
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1277 qxeEnumFontFamiliesEx (hdc, &logfont, (FONTENUMPROCW) font_enum_callback_1,
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1278 (LPARAM) (&font_enum), 0);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1279
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1280 return list_sort (font_enum.list, Qnil, sort_font_list_function);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1281 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1282
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1283 static HFONT
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1284 mswindows_create_font_variant (Lisp_Font_Instance *f,
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1285 int under, int strike)
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1286 {
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1287 /* Cannot GC */
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1288 LOGFONTW lf;
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1289 HFONT hfont;
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1290
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1291 assert (FONT_INSTANCE_MSWINDOWS_HFONT_VARIANT (f, under, strike) == NULL);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1292
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1293 if (qxeGetObject (FONT_INSTANCE_MSWINDOWS_HFONT_VARIANT (f, 0, 0),
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1294 sizeof (lf), (void *) &lf) == 0)
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1295 {
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1296 hfont = MSWINDOWS_BAD_HFONT;
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1297 }
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1298 else
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1299 {
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1300 lf.lfUnderline = under;
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1301 lf.lfStrikeOut = strike;
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1302
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1303 hfont = qxeCreateFontIndirect (&lf);
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1304 if (hfont == NULL)
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1305 hfont = MSWINDOWS_BAD_HFONT;
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1306 }
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1307
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1308 FONT_INSTANCE_MSWINDOWS_HFONT_VARIANT (f, under, strike) = hfont;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1309 return hfont;
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1310 }
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1311
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1312 HFONT
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1313 mswindows_get_hfont (Lisp_Font_Instance *f,
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1314 int under, int strike)
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1315 {
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1316 /* Cannot GC */
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1317 HFONT hfont = FONT_INSTANCE_MSWINDOWS_HFONT_VARIANT (f, under, strike);
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1318
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1319 if (hfont == NULL)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1320 hfont = mswindows_create_font_variant (f, under, strike);
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1321
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1322 /* If strikeout/underline variant of the font could not be
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1323 created, then use the base version of the font */
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1324 if (hfont == MSWINDOWS_BAD_HFONT)
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1325 hfont = FONT_INSTANCE_MSWINDOWS_HFONT_VARIANT (f, 0, 0);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1326
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1327 assert (hfont != NULL && hfont != MSWINDOWS_BAD_HFONT);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1328
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1329 return hfont;
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1330 }
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1331
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1332 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1333 /* methods */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1334 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1335
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1336 static int
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1337 mswindows_initialize_color_instance (Lisp_Color_Instance *c, Lisp_Object name,
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
1338 Lisp_Object UNUSED (device),
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
1339 Error_Behavior errb)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1340 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1341 COLORREF color;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1342
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1343 color = mswindows_string_to_color (XSTRING_DATA (name));
647
b39c14581166 [xemacs-hg @ 2001-08-13 04:45:47 by ben]
ben
parents: 593
diff changeset
1344 if (color != (COLORREF) -1)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1345 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1346 c->data = xnew (struct mswindows_color_instance_data);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1347 COLOR_INSTANCE_MSWINDOWS_COLOR (c) = color;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1348 return 1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1349 }
563
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
1350 maybe_signal_error (Qinvalid_constant,
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1351 "Unrecognized color", name, Qcolor, errb);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1352 return(0);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1353 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1354
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1355 #if 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1356 static void
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1357 mswindows_mark_color_instance (Lisp_Color_Instance *c)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1358 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1359 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1360 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1361
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1362 static void
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1363 mswindows_print_color_instance (Lisp_Color_Instance *c,
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1364 Lisp_Object printcharfun,
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
1365 int UNUSED (escapeflag))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1366 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1367 COLORREF color = COLOR_INSTANCE_MSWINDOWS_COLOR (c);
793
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 788
diff changeset
1368 write_fmt_string (printcharfun,
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 788
diff changeset
1369 " %06ld=(%04X,%04X,%04X)", color & 0xffffff,
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 788
diff changeset
1370 GetRValue (color) * 257, GetGValue (color) * 257,
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 788
diff changeset
1371 GetBValue (color) * 257);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1372 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1373
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1374 static void
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1375 mswindows_finalize_color_instance (Lisp_Color_Instance *c)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1376 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1377 if (c->data)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1378 {
1726
a8d8f419b459 [xemacs-hg @ 2003-09-30 15:26:34 by james]
james
parents: 1706
diff changeset
1379 xfree (c->data, void *);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1380 c->data = 0;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1381 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1382 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1383
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1384 static int
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1385 mswindows_color_instance_equal (Lisp_Color_Instance *c1,
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1386 Lisp_Color_Instance *c2,
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
1387 int UNUSED (depth))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1388 {
793
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 788
diff changeset
1389 return (COLOR_INSTANCE_MSWINDOWS_COLOR (c1) ==
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 788
diff changeset
1390 COLOR_INSTANCE_MSWINDOWS_COLOR (c2));
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1391 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1392
2515
de9952d2ed18 [xemacs-hg @ 2005-01-26 10:22:19 by ben]
ben
parents: 2500
diff changeset
1393 static Hashcode
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
1394 mswindows_color_instance_hash (Lisp_Color_Instance *c, int UNUSED (depth))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1395 {
793
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 788
diff changeset
1396 return (unsigned long) COLOR_INSTANCE_MSWINDOWS_COLOR (c);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1397 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1398
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1399 static Lisp_Object
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1400 mswindows_color_instance_rgb_components (Lisp_Color_Instance *c)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1401 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1402 COLORREF color = COLOR_INSTANCE_MSWINDOWS_COLOR (c);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1403 return list3 (make_int (GetRValue (color) * 257),
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1404 make_int (GetGValue (color) * 257),
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1405 make_int (GetBValue (color) * 257));
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1406 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1407
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1408 static int
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
1409 mswindows_valid_color_name_p (struct device *UNUSED (d), Lisp_Object color)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1410 {
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1411 return (mswindows_string_to_color (XSTRING_DATA (color)) != (COLORREF) -1);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1412 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1413
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1414
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1415
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1416 static void
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1417 mswindows_finalize_font_instance (Lisp_Font_Instance *f);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1418
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1419 /* Parse the font spec in NAMESTR. Maybe issue errors, according to ERRB;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1420 NAME_FOR_ERRORS is the Lisp string to use when issuing errors. Store
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1421 the five parts of the font spec into the given strings, which should be
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1422 declared as
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1423
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1424 Ibyte fontname[LF_FACESIZE], weight[LF_FACESIZE], points[8];
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1425 Ibyte effects[LF_FACESIZE], charset[LF_FACESIZE];
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1426
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1427 If LOGFONT is given, store the necessary information in LOGFONT to
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1428 create a font object. If LOGFONT is given, HDC must also be given;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1429 else, NULL can be given for both.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1430
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1431 Return 1 if ok, 0 if error.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1432 */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1433 static int
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1434 parse_font_spec (const Ibyte *namestr,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1435 HDC hdc,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1436 Lisp_Object name_for_errors,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1437 Error_Behavior errb,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1438 LOGFONTW *logfont,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1439 Ibyte *fontname,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1440 Ibyte *weight,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1441 Ibyte *points,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1442 Ibyte *effects,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1443 Ibyte *charset)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1444 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1445 int fields, i;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1446 int pt;
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1447 Ibyte *style;
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
1448 Ibyte *c;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1449
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1450 /*
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1451 * mswindows fonts look like:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1452 * fontname[:[weight ][style][:pointsize[:effects]]][:charset]
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1453 * The font name field shouldn't be empty.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1454 *
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1455 * ie:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1456 * Lucida Console:Regular:10
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1457 * minimal:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1458 * Courier New
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1459 * maximal:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1460 * Courier New:Bold Italic:10:underline strikeout:western
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1461 */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1462
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1463 fontname[0] = 0;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1464 weight[0] = 0;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1465 points[0] = 0;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1466 effects[0] = 0;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1467 charset[0] = 0;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1468
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1469 if (logfont)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1470 xzero (*logfont);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1471
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
1472 fields = sscanf ((CIbyte *) namestr, "%31[^:]:%31[^:]:%7[^:]:%31[^:]:%31s",
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1473 fontname, weight, points, effects, charset);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1474
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1475 /* This function is implemented in a fairly ad-hoc manner.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1476 * The general idea is to validate and canonicalize each of the above fields
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1477 * at the same time as we build up the win32 LOGFONT structure. This enables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1478 * us to use match_font() on a canonicalized font string to check the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1479 * availability of the requested font */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1480
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1481 if (fields < 0)
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1482 {
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1483 maybe_signal_error (Qinvalid_argument, "Invalid font", name_for_errors,
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1484 Qfont, errb);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1485 return 0;
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1486 }
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1487
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1488 if (fields > 0 && qxestrlen (fontname))
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1489 {
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1490 Extbyte *extfontname;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1491
4981
4aebb0131297 Cleanups/renaming of EXTERNAL_TO_C_STRING and friends
Ben Wing <ben@xemacs.org>
parents: 4953
diff changeset
1492 extfontname = ITEXT_TO_TSTR (fontname);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1493 if (logfont)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1494 {
2421
ab71ad6ff3dd [xemacs-hg @ 2004-12-06 03:50:53 by ben]
ben
parents: 2367
diff changeset
1495 qxetcsncpy ((Extbyte *) logfont->lfFaceName, extfontname,
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1496 LF_FACESIZE - 1);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1497 logfont->lfFaceName[LF_FACESIZE - 1] = 0;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1498 }
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1499 }
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1500
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1501 /* weight */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1502 if (fields < 2)
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1503 qxestrcpy_ascii (weight, fontweight_map[0].name);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1504
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1505 /* Maybe split weight into weight and style */
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1506 if ((c = qxestrchr (weight, ' ')))
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1507 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1508 *c = '\0';
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1509 style = c + 1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1510 }
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1511 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1512 style = NULL;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1513
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1514 for (i = 0; i < countof (fontweight_map); i++)
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1515 if (!qxestrcasecmp_ascii (weight, fontweight_map[i].name))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1516 {
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1517 if (logfont)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1518 logfont->lfWeight = fontweight_map[i].value;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1519 break;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1520 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1521 if (i == countof (fontweight_map)) /* No matching weight */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1522 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1523 if (!style)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1524 {
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1525 if (logfont)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1526 logfont->lfWeight = FW_REGULAR;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1527 style = weight; /* May have specified style without weight */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1528 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1529 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1530 {
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1531 maybe_signal_error (Qinvalid_constant, "Invalid font weight",
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1532 name_for_errors, Qfont, errb);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1533 return 0;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1534 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1535 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1536
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1537 if (style)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1538 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1539 /* #### what about oblique? */
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1540 if (qxestrcasecmp_ascii (style, "italic") == 0)
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1541 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1542 if (logfont)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1543 logfont->lfItalic = TRUE;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1544 }
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1545 else
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1546 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1547 maybe_signal_error (Qinvalid_constant,
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1548 "Invalid font weight or style",
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1549 name_for_errors, Qfont, errb);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1550 return 0;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1551 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1552
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1553 /* Glue weight and style together again */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1554 if (weight != style)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1555 *c = ' ';
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1556 }
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1557 else if (logfont)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1558 logfont->lfItalic = FALSE;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1559
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1560 if (fields < 3 || !qxestrcmp_ascii (points, ""))
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1561 ;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1562 else if (points[0] == '0' ||
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1563 qxestrspn (points, "0123456789") < qxestrlen (points))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1564 {
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1565 maybe_signal_error (Qinvalid_argument, "Invalid font pointsize",
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1566 name_for_errors, Qfont, errb);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1567 return 0;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1568 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1569 else
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1570 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1571 pt = qxeatoi (points);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1572
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1573 if (logfont)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1574 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1575 /* Formula for pointsize->height from LOGFONT docs in MSVC5 Platform
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1576 SDK */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1577 logfont->lfHeight = -MulDiv (pt, GetDeviceCaps (hdc, LOGPIXELSY),
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1578 72);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1579 logfont->lfWidth = 0;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1580 }
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1581 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1582
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1583 /* Effects */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1584 if (logfont)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1585 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1586 logfont->lfUnderline = FALSE;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1587 logfont->lfStrikeOut = FALSE;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1588 }
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1589
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1590 if (fields >= 4 && effects[0] != '\0')
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1591 {
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
1592 Ibyte *effects2;
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1593 int underline = FALSE, strikeout = FALSE;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1594
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1595 /* Maybe split effects into effects and effects2 */
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1596 if ((c = qxestrchr (effects, ' ')))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1597 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1598 *c = '\0';
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1599 effects2 = c + 1;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1600 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1601 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1602 effects2 = NULL;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1603
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1604 if (qxestrcasecmp_ascii (effects, "underline") == 0)
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1605 underline = TRUE;
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1606 else if (qxestrcasecmp_ascii (effects, "strikeout") == 0)
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1607 strikeout = TRUE;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1608 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1609 {
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1610 maybe_signal_error (Qinvalid_constant, "Invalid font effect",
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1611 name_for_errors, Qfont, errb);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1612 return 0;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1613 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1614
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1615 if (effects2 && effects2[0] != '\0')
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1616 {
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1617 if (qxestrcasecmp_ascii (effects2, "underline") == 0)
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1618 underline = TRUE;
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1619 else if (qxestrcasecmp_ascii (effects2, "strikeout") == 0)
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1620 strikeout = TRUE;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1621 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1622 {
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1623 maybe_signal_error (Qinvalid_constant, "Invalid font effect",
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1624 name_for_errors, Qfont, errb);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1625 return 0;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1626 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1627 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1628
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1629 /* Regenerate sanitized effects string */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1630 if (underline)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1631 {
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1632 if (strikeout)
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1633 qxestrcpy_ascii (effects, "underline strikeout");
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1634 else
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1635 qxestrcpy_ascii (effects, "underline");
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1636 }
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1637 else if (strikeout)
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1638 qxestrcpy_ascii (effects, "strikeout");
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1639
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1640 if (logfont)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1641 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1642 logfont->lfUnderline = underline;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1643 logfont->lfStrikeOut = strikeout;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1644 }
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1645 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1646
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1647 /* Charset */
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1648 /* charset can be specified even if earlier fields haven't been */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1649 if (fields < 5)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1650 {
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1651 if ((c = qxestrchr (namestr, ':')) && (c = qxestrchr (c + 1, ':')) &&
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1652 (c = qxestrchr (c + 1, ':')) && (c = qxestrchr (c + 1, ':')))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1653 {
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1654 qxestrncpy (charset, c + 1, LF_FACESIZE);
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1655 charset[LF_FACESIZE - 1] = '\0';
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1656 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1657 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1658
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1659 /* NOTE: If you give a blank charset spec, we will normally not get here
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1660 under Mule unless we explicitly call `make-font-instance'! This is
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1661 because the C code instantiates fonts using particular charsets, by
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1662 way of specifier_matching_instance(). Before instantiating the font,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1663 font_instantiate() calls the devmeth find_matching_font(), which gets
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1664 a truename font spec with the registry (i.e. the charset spec) filled
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1665 in appropriately to the charset. */
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1666 if (!qxestrcmp_ascii (charset, ""))
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1667 ;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1668 else
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1669 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1670 for (i = 0; i < countof (charset_map); i++)
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
1671 if (!qxestrcasecmp_ascii (charset, charset_map[i].name))
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1672 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1673 if (logfont)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1674 logfont->lfCharSet = charset_map[i].value;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1675 break;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1676 }
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1677
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1678 if (i == countof (charset_map)) /* No matching charset */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1679 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1680 maybe_signal_error (Qinvalid_argument, "Invalid charset",
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1681 name_for_errors, Qfont, errb);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1682 return 0;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1683 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1684 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1685
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1686 if (logfont)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1687 {
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1688 /* Misc crud */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1689 #if 1
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1690 logfont->lfOutPrecision = OUT_DEFAULT_PRECIS;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1691 logfont->lfClipPrecision = CLIP_DEFAULT_PRECIS;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1692 logfont->lfQuality = DEFAULT_QUALITY;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1693 #else
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1694 logfont->lfOutPrecision = OUT_STROKE_PRECIS;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1695 logfont->lfClipPrecision = CLIP_STROKE_PRECIS;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1696 logfont->lfQuality = PROOF_QUALITY;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1697 #endif
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1698 /* Default to monospaced if the specified fontname doesn't exist. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1699 logfont->lfPitchAndFamily = FF_MODERN;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1700 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1701
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1702 return 1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1703 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1704
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1705 /*
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1706 mswindows fonts look like:
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1707 [fontname[:style[:pointsize[:effects]]]][:charset]
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1708 A maximal mswindows font spec looks like:
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1709 Courier New:Bold Italic:10:underline strikeout:Western
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1710
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1711 A missing weight/style field is the same as Regular, and a missing
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1712 effects field is left alone, and means no effects; but a missing
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1713 fontname, pointsize or charset field means any will do. We prefer
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1714 Courier New, 10, Western. See sort function above. */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1715
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1716 static HFONT
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1717 create_hfont_from_font_spec (const Ibyte *namestr,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1718 HDC hdc,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1719 Lisp_Object name_for_errors,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1720 Lisp_Object device_font_list,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1721 Error_Behavior errb,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1722 Lisp_Object *truename_ret)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1723 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1724 LOGFONTW logfont;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1725 HFONT hfont;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1726 Ibyte fontname[LF_FACESIZE], weight[LF_FACESIZE], points[8];
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1727 Ibyte effects[LF_FACESIZE], charset[LF_FACESIZE];
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1728 Ibyte truename[MSW_FONTSIZE];
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1729 Ibyte truername[MSW_FONTSIZE];
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1730
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1731 /* Windows will silently substitute a default font if the fontname
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1732 specifies a non-existent font. This is bad for screen fonts because
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1733 it doesn't allow higher-level code to see the error and to act
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1734 appropriately. For instance complex_vars_of_faces() sets up a
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1735 fallback list of fonts for the default face. Instead, we look at all
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1736 the possibilities and pick one that works, handling missing pointsize
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1737 and charset fields appropriately.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1738
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1739 For printer fonts, we used to go ahead and let Windows choose the
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1740 font, and for those devices, then, DEVICE_FONT_LIST would be nil.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1741 However, this causes problems with the font-matching code below, which
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1742 needs a list of fonts so it can pick the right one for Mule.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1743
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1744 Thus, the code below to handle a nil DEVICE_FONT_LIST is not currently
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1745 used. */
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1746
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1747 if (!NILP (device_font_list))
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1748 {
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1749 Lisp_Object fonttail = Qnil;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1750
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1751 if (!parse_font_spec (namestr, 0, name_for_errors,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1752 errb, 0, fontname, weight, points,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1753 effects, charset))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1754 return 0;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1755
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1756 /* The fonts in the device font list always specify fontname and
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1757 charset, but often times not the size; so if we don't have the
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1758 size specified either, do a round with size 10 so we'll always end
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1759 up with a size in the truename (if we fail this one but succeed
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1760 the next one, we'll have chosen a non-TrueType font, and in those
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1761 cases the size is specified in the font list item. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1762
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1763 if (!points[0])
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1764 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1765 qxesprintf (truename, "%s:%s:10:%s:%s",
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1766 fontname, weight, effects, charset);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1767
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1768 LIST_LOOP (fonttail, device_font_list)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1769 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1770 if (match_font (XSTRING_DATA (XCAR (XCAR (fonttail))),
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1771 truename, truername))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1772 break;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1773 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1774 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1775
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1776 if (NILP (fonttail))
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1777 {
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1778 qxesprintf (truename, "%s:%s:%s:%s:%s",
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1779 fontname, weight, points, effects, charset);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1780
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1781 LIST_LOOP (fonttail, device_font_list)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1782 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1783 if (match_font (XSTRING_DATA (XCAR (XCAR (fonttail))),
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1784 truename, truername))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1785 break;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1786 }
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1787 }
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1788
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1789 if (NILP (fonttail))
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1790 {
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1791 maybe_signal_error (Qinvalid_argument, "No matching font",
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1792 name_for_errors, Qfont, errb);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1793 return 0;
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1794 }
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1795
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1796 if (!parse_font_spec (truername, hdc, name_for_errors,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1797 ERROR_ME_DEBUG_WARN, &logfont, fontname, weight,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1798 points, effects, charset))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1799 signal_error (Qinternal_error, "Bad value in device font list?",
4953
304aebb79cd3 function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents: 4952
diff changeset
1800 build_istring (truername));
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1801 }
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1802 else if (!parse_font_spec (namestr, hdc, name_for_errors,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1803 errb, &logfont, fontname, weight, points,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1804 effects, charset))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1805 return 0;
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1806
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1807 if ((hfont = qxeCreateFontIndirect (&logfont)) == NULL)
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1808 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1809 maybe_signal_error (Qgui_error, "Couldn't create font",
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1810 name_for_errors, Qfont, errb);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1811 return 0;
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1812 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1813
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1814 /* #### Truename will not have all its fields filled in when we have no
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1815 list of fonts. Doesn't really matter now, since we always have one.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1816 See above. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1817 qxesprintf (truename, "%s:%s:%s:%s:%s", fontname, weight,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1818 points, effects, charset);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1819
4953
304aebb79cd3 function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents: 4952
diff changeset
1820 *truename_ret = build_istring (truename);
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1821 return hfont;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1822 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1823
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1824 /*
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1825 * This is a work horse for both mswindows_initialize_font_instance and
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1826 * msprinter_initialize_font_instance.
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1827 */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1828 static int
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1829 initialize_font_instance (Lisp_Font_Instance *f, Lisp_Object name,
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1830 Lisp_Object device_font_list, HDC hdc,
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1831 Error_Behavior errb)
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1832 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1833 HFONT hfont, hfont2;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1834 TEXTMETRICW metrics;
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
1835 Ibyte *namestr = XSTRING_DATA (name);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1836 Lisp_Object truename;
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1837
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1838 hfont = create_hfont_from_font_spec (namestr, hdc, name, device_font_list,
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1839 errb, &truename);
4932
8b63e21b0436 fix compile issues with gcc 4
Ben Wing <ben@xemacs.org>
parents: 4579
diff changeset
1840 if (!hfont)
8b63e21b0436 fix compile issues with gcc 4
Ben Wing <ben@xemacs.org>
parents: 4579
diff changeset
1841 return 0;
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1842 f->truename = truename;
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1843 f->data = xnew_and_zero (struct mswindows_font_instance_data);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1844 FONT_INSTANCE_MSWINDOWS_HFONT_VARIANT (f, 0, 0) = hfont;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1845
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1846 /* Some underlined fonts have the descent of one pixel more than their
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1847 non-underlined counterparts. Font variants though are assumed to have
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1848 identical metrics. So get the font metrics from the underlined variant
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1849 of the font */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1850 hfont2 = mswindows_create_font_variant (f, 1, 0);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1851 if (hfont2 != MSWINDOWS_BAD_HFONT)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1852 hfont = hfont2;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1853
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1854 hfont2 = (HFONT) SelectObject (hdc, hfont);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1855 if (!hfont2)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1856 {
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1857 mswindows_finalize_font_instance (f);
563
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
1858 maybe_signal_error (Qgui_error, "Couldn't map font", name, Qfont, errb);
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1859 return 0;
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1860 }
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1861 qxeGetTextMetrics (hdc, &metrics);
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1862 SelectObject (hdc, hfont2);
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1863
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1864 f->width = (unsigned short) metrics.tmAveCharWidth;
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1865 f->height = (unsigned short) metrics.tmHeight;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1866 f->ascent = (unsigned short) metrics.tmAscent;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1867 f->descent = (unsigned short) metrics.tmDescent;
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1868 f->proportional_p = (metrics.tmPitchAndFamily & TMPF_FIXED_PITCH);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1869
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1870 return 1;
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1871 }
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1872
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1873 static int
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1874 mswindows_initialize_font_instance (Lisp_Font_Instance *f, Lisp_Object name,
578
190b164ddcac [xemacs-hg @ 2001-05-25 11:26:50 by ben]
ben
parents: 563
diff changeset
1875 Lisp_Object device, Error_Behavior errb)
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1876 {
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1877 HDC hdc = CreateCompatibleDC (NULL);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1878 Lisp_Object font_list = DEVICE_MSWINDOWS_FONTLIST (XDEVICE (device));
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1879 int res = initialize_font_instance (f, name, font_list, hdc, errb);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1880 DeleteDC (hdc);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1881 return res;
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1882 }
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1883
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1884 static int
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1885 msprinter_initialize_font_instance (Lisp_Font_Instance *f, Lisp_Object name,
578
190b164ddcac [xemacs-hg @ 2001-05-25 11:26:50 by ben]
ben
parents: 563
diff changeset
1886 Lisp_Object device, Error_Behavior errb)
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1887 {
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1888 HDC hdc = DEVICE_MSPRINTER_HDC (XDEVICE (device));
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1889 Lisp_Object font_list = DEVICE_MSPRINTER_FONTLIST (XDEVICE (device));
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1890 return initialize_font_instance (f, name, font_list, hdc, errb);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1891 }
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1892
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1893 static void
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1894 mswindows_finalize_font_instance (Lisp_Font_Instance *f)
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1895 {
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1896 int i;
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1897
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1898 if (f->data)
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1899 {
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1900 for (i = 0; i < MSWINDOWS_NUM_FONT_VARIANTS; i++)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1901 {
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1902 if (FONT_INSTANCE_MSWINDOWS_HFONT_I (f, i) != NULL
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1903 && FONT_INSTANCE_MSWINDOWS_HFONT_I (f, i) != MSWINDOWS_BAD_HFONT)
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1904 DeleteObject (FONT_INSTANCE_MSWINDOWS_HFONT_I (f, i));
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1905 }
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1906
1726
a8d8f419b459 [xemacs-hg @ 2003-09-30 15:26:34 by james]
james
parents: 1706
diff changeset
1907 xfree (f->data, void *);
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1908 f->data = 0;
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1909 }
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1910 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1911
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1912 #if 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1913 static void
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1914 mswindows_mark_font_instance (Lisp_Font_Instance *f)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1915 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1916 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1917 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1918
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1919 static void
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1920 mswindows_print_font_instance (Lisp_Font_Instance *f,
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1921 Lisp_Object printcharfun,
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
1922 int UNUSED (escapeflag))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1923 {
793
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 788
diff changeset
1924 write_fmt_string (printcharfun, " 0x%lx",
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 788
diff changeset
1925 (unsigned long)
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 788
diff changeset
1926 FONT_INSTANCE_MSWINDOWS_HFONT_VARIANT (f, 0, 0));
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 788
diff changeset
1927
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1928 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1929
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1930 static Lisp_Object
2527
491f8cf78a9c [xemacs-hg @ 2005-01-28 02:58:38 by ben]
ben
parents: 2515
diff changeset
1931 mswindows_font_list (Lisp_Object pattern, Lisp_Object device,
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
1932 Lisp_Object UNUSED (maxnumber))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1933 {
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1934 struct device *d = XDEVICE (device);
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1935 Lisp_Object font_list = Qnil, fonttail, result = Qnil;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1936
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1937 if (DEVICE_MSWINDOWS_P (d))
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1938 font_list = DEVICE_MSWINDOWS_FONTLIST (d);
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1939 else if (DEVICE_MSPRINTER_P (d))
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1940 font_list = DEVICE_MSPRINTER_FONTLIST (d);
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1941 else
2500
3d8143fc88e1 [xemacs-hg @ 2005-01-24 23:33:30 by ben]
ben
parents: 2421
diff changeset
1942 ABORT ();
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
1943
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1944 LIST_LOOP (fonttail, font_list)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1945 {
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
1946 Ibyte fontname[MSW_FONTSIZE];
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1947
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1948 if (match_font (XSTRING_DATA (XCAR (XCAR (fonttail))),
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1949 XSTRING_DATA (pattern),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
1950 fontname))
4953
304aebb79cd3 function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents: 4952
diff changeset
1951 result = Fcons (build_istring (fontname), result);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1952 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1953
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1954 return Fnreverse (result);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1955 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1956
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1957 static Lisp_Object
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
1958 mswindows_font_instance_truename (Lisp_Font_Instance *f,
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
1959 Error_Behavior UNUSED (errb))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1960 {
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1961 return f->truename;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1962 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1963
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1964 #ifdef MULE
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1965
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1966 static int
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
1967 mswindows_font_spec_matches_charset_stage_1 (struct device *UNUSED (d),
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1968 Lisp_Object charset,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1969 const Ibyte *nonreloc,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1970 Lisp_Object reloc,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1971 Bytecount offset,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1972 Bytecount length)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1973 {
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1974 int i;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1975 Lisp_Object charset_registry;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
1976 const Ibyte *font_charset;
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
1977 const Ibyte *the_nonreloc = nonreloc;
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
1978 const Ibyte *c;
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1979 Bytecount the_length = length;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1980
4353
4143b78d0df0 Merge an old patch of Ben's, involving font instantiation and charsets.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3662
diff changeset
1981 if (NILP (charset))
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1982 return 1;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1983
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1984 if (!the_nonreloc)
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1985 the_nonreloc = XSTRING_DATA (reloc);
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1986 fixup_internal_substring (nonreloc, reloc, offset, &the_length);
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1987 the_nonreloc += offset;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1988
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1989 c = the_nonreloc;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1990 for (i = 0; i < 4; i++)
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1991 {
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 851
diff changeset
1992 Ibyte *newc = (Ibyte *) memchr (c, ':', the_length);
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1993 if (!newc)
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1994 break;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1995 newc++;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1996 the_length -= (newc - c);
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1997 c = newc;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1998 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
1999
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2000 if (i < 4)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2001 return 0;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2002
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2003 font_charset = c;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2004
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2005 /* For border-glyph use */
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
2006 if (!qxestrcasecmp_ascii (font_charset, "symbol"))
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2007 font_charset = (const Ibyte *) "western";
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2008
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2009 /* Get code page for the charset */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2010 charset_registry = Fmswindows_charset_registry (charset);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2011 if (!STRINGP (charset_registry))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2012 return 0;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2013
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2014 return !qxestrcasecmp (XSTRING_DATA (charset_registry), font_charset);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2015 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2016
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2017 /*
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2018
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2019 1. handle standard mapping and inheritance vectors properly in Face-frob-property.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2020 2. finish impl of mswindows-charset-registry.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2021 3. see if everything works under fixup, now that i copied the stuff over.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2022 4. consider generalizing Face-frob-property to frob-specifier.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2023 5. maybe extract some of the flets out of Face-frob-property as useful specifier frobbing.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2024 6. eventually this stuff's got to be checked in!!!!
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2025 */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2026
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2027 static int
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2028 mswindows_font_spec_matches_charset_stage_2 (struct device *d,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2029 Lisp_Object charset,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2030 const Ibyte *nonreloc,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2031 Lisp_Object reloc,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2032 Bytecount offset,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2033 Bytecount length)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2034 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2035 const Ibyte *the_nonreloc = nonreloc;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2036 FONTSIGNATURE fs;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2037 FONTSIGNATURE *fsp = &fs;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2038 struct gcpro gcpro1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2039 Lisp_Object fontsig;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2040 Bytecount the_length = length;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2041 int i;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2042
4353
4143b78d0df0 Merge an old patch of Ben's, involving font instantiation and charsets.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3662
diff changeset
2043 if (NILP (charset))
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2044 return 1;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2045
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2046 if (!the_nonreloc)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2047 the_nonreloc = XSTRING_DATA (reloc);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2048 fixup_internal_substring (nonreloc, reloc, offset, &the_length);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2049 the_nonreloc += offset;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2050
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2051 /* Get the list of Unicode subranges corresponding to the font. This
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2052 is contained inside of FONTSIGNATURE data, obtained by calling
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2053 GetTextCharsetInfo on a font object, which we need to create from the
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2054 spec. See if the FONTSIGNATURE data is already cached. If not, get
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2055 it and cache it. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2056 if (!STRINGP (reloc) || the_nonreloc != XSTRING_DATA (reloc))
4953
304aebb79cd3 function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents: 4952
diff changeset
2057 reloc = build_istring (the_nonreloc);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2058 GCPRO1 (reloc);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2059 fontsig = Fgethash (reloc, Vfont_signature_data, Qunbound);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2060
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2061 if (!UNBOUNDP (fontsig))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2062 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2063 fsp = (FONTSIGNATURE *) XOPAQUE_DATA (fontsig);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2064 UNGCPRO;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2065 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2066 else
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2067 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2068 HDC hdc = CreateCompatibleDC (NULL);
4579
68f74b080e94 Accept msprinter and mswindows, mswindows_font_spec_matches_charset_stage_2
Aidan Kehoe <kehoea@parhasard.net>
parents: 4353
diff changeset
2069 Lisp_Object font_list = Qnil, truename;
68f74b080e94 Accept msprinter and mswindows, mswindows_font_spec_matches_charset_stage_2
Aidan Kehoe <kehoea@parhasard.net>
parents: 4353
diff changeset
2070
68f74b080e94 Accept msprinter and mswindows, mswindows_font_spec_matches_charset_stage_2
Aidan Kehoe <kehoea@parhasard.net>
parents: 4353
diff changeset
2071 if (DEVICE_TYPE_P (d, mswindows))
68f74b080e94 Accept msprinter and mswindows, mswindows_font_spec_matches_charset_stage_2
Aidan Kehoe <kehoea@parhasard.net>
parents: 4353
diff changeset
2072 {
68f74b080e94 Accept msprinter and mswindows, mswindows_font_spec_matches_charset_stage_2
Aidan Kehoe <kehoea@parhasard.net>
parents: 4353
diff changeset
2073 font_list = DEVICE_MSWINDOWS_FONTLIST (d);
68f74b080e94 Accept msprinter and mswindows, mswindows_font_spec_matches_charset_stage_2
Aidan Kehoe <kehoea@parhasard.net>
parents: 4353
diff changeset
2074 }
68f74b080e94 Accept msprinter and mswindows, mswindows_font_spec_matches_charset_stage_2
Aidan Kehoe <kehoea@parhasard.net>
parents: 4353
diff changeset
2075 else if (DEVICE_TYPE_P (d, msprinter))
68f74b080e94 Accept msprinter and mswindows, mswindows_font_spec_matches_charset_stage_2
Aidan Kehoe <kehoea@parhasard.net>
parents: 4353
diff changeset
2076 {
68f74b080e94 Accept msprinter and mswindows, mswindows_font_spec_matches_charset_stage_2
Aidan Kehoe <kehoea@parhasard.net>
parents: 4353
diff changeset
2077 font_list = DEVICE_MSPRINTER_FONTLIST (d);
68f74b080e94 Accept msprinter and mswindows, mswindows_font_spec_matches_charset_stage_2
Aidan Kehoe <kehoea@parhasard.net>
parents: 4353
diff changeset
2078 }
68f74b080e94 Accept msprinter and mswindows, mswindows_font_spec_matches_charset_stage_2
Aidan Kehoe <kehoea@parhasard.net>
parents: 4353
diff changeset
2079 else
68f74b080e94 Accept msprinter and mswindows, mswindows_font_spec_matches_charset_stage_2
Aidan Kehoe <kehoea@parhasard.net>
parents: 4353
diff changeset
2080 {
68f74b080e94 Accept msprinter and mswindows, mswindows_font_spec_matches_charset_stage_2
Aidan Kehoe <kehoea@parhasard.net>
parents: 4353
diff changeset
2081 assert(0);
68f74b080e94 Accept msprinter and mswindows, mswindows_font_spec_matches_charset_stage_2
Aidan Kehoe <kehoea@parhasard.net>
parents: 4353
diff changeset
2082 }
68f74b080e94 Accept msprinter and mswindows, mswindows_font_spec_matches_charset_stage_2
Aidan Kehoe <kehoea@parhasard.net>
parents: 4353
diff changeset
2083
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2084 HFONT hfont = create_hfont_from_font_spec (the_nonreloc, hdc, Qnil,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2085 font_list,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2086 ERROR_ME_DEBUG_WARN,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2087 &truename);
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2088
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2089 if (!hfont || !(hfont = (HFONT) SelectObject (hdc, hfont)))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2090 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2091 nope:
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2092 DeleteDC (hdc);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2093 UNGCPRO;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2094 return 0;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2095 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2096
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2097 if (GetTextCharsetInfo (hdc, &fs, 0) == DEFAULT_CHARSET)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2098 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2099 SelectObject (hdc, hfont);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2100 goto nope;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2101 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2102 SelectObject (hdc, hfont);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2103 DeleteDC (hdc);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2104 Fputhash (reloc, make_opaque (&fs, sizeof (fs)), Vfont_signature_data);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2105 UNGCPRO;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2106 }
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2107
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2108 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2109 int lowlim, highlim;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2110 int dim, j, cp = -1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2111
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2112 /* Try to find a Unicode char in the charset. #### This is somewhat
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2113 bogus. See below.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2114
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2115 #### Cache me baby!!!!!!!!!!!!!
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2116 */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2117 get_charset_limits (charset, &lowlim, &highlim);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2118 dim = XCHARSET_DIMENSION (charset);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2119
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2120 if (dim == 1)
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2121 {
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2122 for (i = lowlim; i <= highlim; i++)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2123 if ((cp = ichar_to_unicode (make_ichar (charset, i, 0))) >= 0)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2124 break;
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2125 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2126 else
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2127 {
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2128 for (i = lowlim; i <= highlim; i++)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2129 for (j = lowlim; j <= highlim; j++)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2130 if ((cp = ichar_to_unicode (make_ichar (charset, i, j))) >= 0)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2131 break;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2132 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2133
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2134 if (cp < 0)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2135 return 0;
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2136
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2137 /* Check to see, for each subrange supported by the font,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2138 whether the Unicode char is within that subrange. If any match,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2139 the font supports the char (whereby, the charset, bogusly). */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2140
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2141 for (i = 0; i < 128; i++)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2142 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2143 if (fsp->fsUsb[i >> 5] & (1 << (i & 32)))
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2144 {
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2145 for (j = 0; j < unicode_subrange_table[i].no_subranges; j++)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2146 if (cp >= unicode_subrange_table[i].subranges[j].start &&
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2147 cp <= unicode_subrange_table[i].subranges[j].end)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2148 return 1;
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2149 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2150 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2151
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2152 return 0;
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2153 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2154 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2155
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2156 /*
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2157 Given a truename font spec, does it match CHARSET?
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2158
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2159 We try two stages:
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2160
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2161 -- First see if the charset corresponds to one of the predefined Windows
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2162 charsets; if so, we see if the registry (that's the last element of the
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2163 font spec) is that same charset. If so, this means that the font is
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2164 specifically designed for the charset, and we prefer it.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2165
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2166 -- However, there are only a limited number of defined Windows charsets,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2167 and new ones aren't being defined; so if we fail the first stage, we find
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2168 a character from the charset with a Unicode equivalent, and see if the
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2169 font can display this character. we do that by retrieving the Unicode
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2170 ranges that the font supports, to see if the character comes from that
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2171 subrange.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2172
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2173 #### Note: We really want to be doing all these checks at the character
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2174 level, not the charset level. There's no guarantee that a charset covers
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2175 a single Unicode range. Furthermore, this is extremely wasteful. We
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2176 should be doing this when we're about to redisplay and already have the
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2177 Unicode codepoints in hand.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2178 */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2179
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2180 static int
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2181 mswindows_font_spec_matches_charset (struct device *d, Lisp_Object charset,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2182 const Ibyte *nonreloc,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2183 Lisp_Object reloc,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2184 Bytecount offset, Bytecount length,
3662
b880e45ea63b [xemacs-hg @ 2006-11-06 19:35:43 by aidan]
aidan
parents: 3659
diff changeset
2185 enum font_specifier_matchspec_stages stage)
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2186 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2187 return stage ?
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2188 mswindows_font_spec_matches_charset_stage_2 (d, charset, nonreloc,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2189 reloc, offset, length)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2190 : mswindows_font_spec_matches_charset_stage_1 (d, charset, nonreloc,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2191 reloc, offset, length);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2192 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2193
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2194
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2195 /* Find a font spec that matches font spec FONT and also matches
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2196 (the registry of) CHARSET. */
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2197
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2198 static Lisp_Object
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2199 mswindows_find_charset_font (Lisp_Object device, Lisp_Object font,
3659
98af8a976fc3 [xemacs-hg @ 2006-11-05 22:31:31 by aidan]
aidan
parents: 2527
diff changeset
2200 Lisp_Object charset,
98af8a976fc3 [xemacs-hg @ 2006-11-05 22:31:31 by aidan]
aidan
parents: 2527
diff changeset
2201 enum font_specifier_matchspec_stages stage)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2202 {
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
2203 Lisp_Object fontlist, fonttail;
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
2204
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2205 /* If FONT specifies a particular charset, this will only list fonts with
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2206 that charset; otherwise, it will list fonts with all charsets. */
2527
491f8cf78a9c [xemacs-hg @ 2005-01-28 02:58:38 by ben]
ben
parents: 2515
diff changeset
2207 fontlist = mswindows_font_list (font, device, Qnil);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2208
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2209 if (!stage)
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
2210 {
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2211 LIST_LOOP (fonttail, fontlist)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2212 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2213 if (mswindows_font_spec_matches_charset_stage_1
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2214 (XDEVICE (device), charset, 0, XCAR (fonttail), 0, -1))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2215 return XCAR (fonttail);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2216 }
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
2217 }
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2218 else
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2219 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2220 LIST_LOOP (fonttail, fontlist)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2221 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2222 if (mswindows_font_spec_matches_charset_stage_2
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2223 (XDEVICE (device), charset, 0, XCAR (fonttail), 0, -1))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2224 return XCAR (fonttail);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2225 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2226 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
2227
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
2228 return Qnil;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2229 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2230
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2231 #endif /* MULE */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2232
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2233
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2234 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2235 /* non-methods */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2236 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2237
2527
491f8cf78a9c [xemacs-hg @ 2005-01-28 02:58:38 by ben]
ben
parents: 2515
diff changeset
2238 static Lisp_Object
491f8cf78a9c [xemacs-hg @ 2005-01-28 02:58:38 by ben]
ben
parents: 2515
diff changeset
2239 mswindows_color_list (void)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2240 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2241 Lisp_Object result = Qnil;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2242 int i;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2243
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
2244 for (i = 0; i < countof (mswindows_X_color_map); i++)
4952
19a72041c5ed Mule-izing, various fixes related to char * arguments
Ben Wing <ben@xemacs.org>
parents: 4932
diff changeset
2245 result = Fcons (build_ascstring (mswindows_X_color_map[i].name), result);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2246
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2247 return Fnreverse (result);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2248 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2249
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2250
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2251 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2252 /* initialization */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2253 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2254
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2255 void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2256 syms_of_objects_mswindows (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2257 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2258 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2259
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2260 void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2261 console_type_create_objects_mswindows (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2262 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2263 /* object methods */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2264 CONSOLE_HAS_METHOD (mswindows, initialize_color_instance);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2265 /* CONSOLE_HAS_METHOD (mswindows, mark_color_instance); */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2266 CONSOLE_HAS_METHOD (mswindows, print_color_instance);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2267 CONSOLE_HAS_METHOD (mswindows, finalize_color_instance);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2268 CONSOLE_HAS_METHOD (mswindows, color_instance_equal);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2269 CONSOLE_HAS_METHOD (mswindows, color_instance_hash);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2270 CONSOLE_HAS_METHOD (mswindows, color_instance_rgb_components);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2271 CONSOLE_HAS_METHOD (mswindows, valid_color_name_p);
2527
491f8cf78a9c [xemacs-hg @ 2005-01-28 02:58:38 by ben]
ben
parents: 2515
diff changeset
2272 CONSOLE_HAS_METHOD (mswindows, color_list);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2273
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2274 CONSOLE_HAS_METHOD (mswindows, initialize_font_instance);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2275 /* CONSOLE_HAS_METHOD (mswindows, mark_font_instance); */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2276 CONSOLE_HAS_METHOD (mswindows, print_font_instance);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2277 CONSOLE_HAS_METHOD (mswindows, finalize_font_instance);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2278 CONSOLE_HAS_METHOD (mswindows, font_instance_truename);
2527
491f8cf78a9c [xemacs-hg @ 2005-01-28 02:58:38 by ben]
ben
parents: 2515
diff changeset
2279 CONSOLE_HAS_METHOD (mswindows, font_list);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2280 #ifdef MULE
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2281 CONSOLE_HAS_METHOD (mswindows, font_spec_matches_charset);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2282 CONSOLE_HAS_METHOD (mswindows, find_charset_font);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2283 #endif
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2284
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2285 /* Printer methods - delegate most to windows methods,
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2286 since graphical objects behave the same way. */
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2287
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2288 CONSOLE_INHERITS_METHOD (msprinter, mswindows, initialize_color_instance);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2289 /* CONSOLE_INHERITS_METHOD (msprinter, mswindows, mark_color_instance); */
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2290 CONSOLE_INHERITS_METHOD (msprinter, mswindows, print_color_instance);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2291 CONSOLE_INHERITS_METHOD (msprinter, mswindows, finalize_color_instance);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2292 CONSOLE_INHERITS_METHOD (msprinter, mswindows, color_instance_equal);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2293 CONSOLE_INHERITS_METHOD (msprinter, mswindows, color_instance_hash);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2294 CONSOLE_INHERITS_METHOD (msprinter, mswindows, color_instance_rgb_components);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2295 CONSOLE_INHERITS_METHOD (msprinter, mswindows, valid_color_name_p);
2527
491f8cf78a9c [xemacs-hg @ 2005-01-28 02:58:38 by ben]
ben
parents: 2515
diff changeset
2296 CONSOLE_INHERITS_METHOD (msprinter, mswindows, color_list);
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2297
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2298 CONSOLE_HAS_METHOD (msprinter, initialize_font_instance);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2299 /* CONSOLE_INHERITS_METHOD (msprinter, mswindows, mark_font_instance); */
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2300 CONSOLE_INHERITS_METHOD (msprinter, mswindows, print_font_instance);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2301 CONSOLE_INHERITS_METHOD (msprinter, mswindows, finalize_font_instance);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
2302 CONSOLE_INHERITS_METHOD (msprinter, mswindows, font_instance_truename);
2527
491f8cf78a9c [xemacs-hg @ 2005-01-28 02:58:38 by ben]
ben
parents: 2515
diff changeset
2303 CONSOLE_INHERITS_METHOD (msprinter, mswindows, font_list);
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2304 #ifdef MULE
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2305 CONSOLE_INHERITS_METHOD (msprinter, mswindows, font_spec_matches_charset);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2306 CONSOLE_INHERITS_METHOD (msprinter, mswindows, find_charset_font);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 430
diff changeset
2307 #endif
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2308 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2309
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2310 void
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2311 reinit_vars_of_object_mswindows (void)
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2312 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2313 #ifdef MULE
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2314 int i;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2315
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2316 unicode_subrange_table = xnew_array_and_zero (unicode_subrange_t, 128);
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2317 for (i = 0; i < countof (unicode_subrange_raw_map); i++)
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2318 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2319 const unicode_subrange_raw_t *el = &unicode_subrange_raw_map[i];
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2320 if (unicode_subrange_table[el->subrange_bit].subranges == 0)
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2321 unicode_subrange_table[el->subrange_bit].subranges = el;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2322 unicode_subrange_table[el->subrange_bit].no_subranges++;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2323 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2324
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2325 Fclrhash (Vfont_signature_data);
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2326 #endif /* MULE */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2327 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2328
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2329 void
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2330 vars_of_objects_mswindows (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2331 {
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2332 #ifdef MULE
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2333 Vfont_signature_data =
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2334 make_lisp_hash_table (100, HASH_TABLE_NON_WEAK, HASH_TABLE_EQUAL);
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2335 staticpro (&Vfont_signature_data);
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
2336 #endif /* MULE */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2337 }