annotate src/font-mgr.h @ 4921:17362f371cc2

add more byte-code assertions and better failure output -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-02-03 Ben Wing <ben@xemacs.org> * alloc.c (Fmake_byte_code): * bytecode.h: * lisp.h: * lread.c: * lread.c (readevalloop): * lread.c (Fread): * lread.c (Fread_from_string): * lread.c (read_list_conser): * lread.c (read_list): * lread.c (vars_of_lread): * symbols.c: * symbols.c (Fdefine_function): Turn on the "compiled-function annotation hack". Implement it properly by hooking into Fdefalias(). Note in the docstring to `defalias' that we do this. Remove some old broken code and change code that implemented the old kludgy way of hooking into the Lisp reader into bracketed by `#ifdef COMPILED_FUNCTION_ANNOTATION_HACK_OLD_WAY', which is not enabled. Also enable byte-code metering when DEBUG_XEMACS -- this is a form of profiling for computing histograms of which sequences of two bytecodes are used most often. * bytecode-ops.h: * bytecode-ops.h (OPCODE): New file. Extract out all the opcodes and declare them using OPCODE(), a bit like frame slots and such. This way the file can be included multiple times if necessary to iterate multiple times over the byte opcodes. * bytecode.c: * bytecode.c (NUM_REMEMBERED_BYTE_OPS): * bytecode.c (OPCODE): * bytecode.c (assert_failed_with_remembered_ops): * bytecode.c (READ_UINT_2): * bytecode.c (READ_INT_1): * bytecode.c (READ_INT_2): * bytecode.c (PEEK_INT_1): * bytecode.c (PEEK_INT_2): * bytecode.c (JUMP_RELATIVE): * bytecode.c (JUMP_NEXT): * bytecode.c (PUSH): * bytecode.c (POP_WITH_MULTIPLE_VALUES): * bytecode.c (DISCARD): * bytecode.c (UNUSED): * bytecode.c (optimize_byte_code): * bytecode.c (optimize_compiled_function): * bytecode.c (Fbyte_code): * bytecode.c (vars_of_bytecode): * bytecode.c (init_opcode_table_multi_op): * bytecode.c (reinit_vars_of_bytecode): * emacs.c (main_1): * eval.c (funcall_compiled_function): * symsinit.h: Any time we change either the instruction pointer or the stack pointer, assert that we're going to move it to a valid location. This should catch failures right when they occur rather than sometime later. This requires that we pass in another couple of parameters into some functions (only with error-checking enabled, see below). Also keep track, using a circular queue, of the last 100 byte opcodes seen, and when we hit an assert failure during byte-code execution, output the contents of the queue in a nice readable fashion. This requires that bytecode-ops.h be included a second time so that a table mapping opcodes to the name of their operation can be constructed. This table is constructed in new function reinit_vars_of_bytecode(). Everything in the last two paras happens only when ERROR_CHECK_BYTE_CODE. Add some longish comments describing how the arrays that hold the stack and instructions, and the pointers used to access them, work. * gc.c: Import some code from my `latest-fix' workspace to mark the staticpro's in order from lowest to highest, rather than highest to lowest, so it's easier to debug when something goes wrong. * lisp.h (abort_with_message): Renamed from abort_with_msg(). * symbols.c (defsymbol_massage_name_1): * symbols.c (defsymbol_nodump): * symbols.c (defsymbol): * symbols.c (defkeyword): * symeval.h (DEFVAR_SYMVAL_FWD_OBJECT): Make the various calls to staticpro() instead call staticpro_1(), passing in the name of the C var being staticpro'ed, so that it shows up in staticpro_names. Otherwise staticpro_names just has 1000+ copies of the word `location'.
author Ben Wing <ben@xemacs.org>
date Wed, 03 Feb 2010 08:01:55 -0600
parents 75975fd0b7fc
children a6c778975d7d e0db3c197671
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3354
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
1 /* Lisp font data structures for X and Xft.
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
2
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
3 Copyright (C) 2003 Eric Knauel and Matthias Neubauer
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
4 Copyright (C) 2005 Eric Knauel
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
5 Copyright (C) 2004, 2005 Free Software Foundation, Inc.
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
6
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
7 Authors: Eric Knauel <knauel@informatik.uni-tuebingen.de>
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
8 Matthias Neubauer <neubauer@informatik.uni-freiburg.de>
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
9 Stephen J. Turnbull <stephen@xemacs.org>
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
10 Created: 27 Oct 2003
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
11 Updated: 05 Mar 2005 by Stephen J. Turnbull
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
12
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
13 This file is part of XEmacs.
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
14
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
15 XEmacs is free software; you can redistribute it and/or modify it
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
16 under the terms of the GNU General Public License as published by the
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
17 Free Software Foundation; either version 2, or (at your option) any
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
18 later version.
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
19
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
20 XEmacs is distributed in the hope that it will be useful, but WITHOUT
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
21 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
22 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
23 for more details.
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
24
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
25 You should have received a copy of the GNU General Public License
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
26 along with XEmacs; see the file COPYING. If not, write to
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
27 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
28 Boston, MA 02111-1307, USA. */
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
29
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
30 /* Synched up with: Not in GNU Emacs. */
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
31
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
32 /* This module provides the Lisp interface to fonts in X11, including Xft,
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
33 but (at least at first) not GTK+ or Qt.
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
34
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
35 It should be renamed to fonts-x.h.
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
36
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
37 Sealevel code should be in ../lwlib/lwlib-fonts.h or
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
38 ../lwlib/lwlib-colors.h.
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
39 */
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
40
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
41
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
42 #ifndef INCLUDED_font_mgr_h_
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
43 #define INCLUDED_font_mgr_h_
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
44
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
45 #include "../lwlib/lwlib-fonts.h"
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
46 #include "../lwlib/lwlib-colors.h"
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
47
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
48 extern Fixnum debug_xft;
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
49
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
50 /* Standard for fontconfig. Use a macro to show we're not guessing. */
3360
316fddbf58e2 [xemacs-hg @ 2006-04-25 14:01:52 by stephent]
stephent
parents: 3354
diff changeset
51 #define Qfc_font_name_encoding Qutf_8
3354
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
52
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
53 #define XE_XLFD_MAKE_LISP_STRING(s) (make_string(s, strlen(s)))
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
54
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
55 struct fc_pattern
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
56 {
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
57 struct LCRECORD_HEADER header;
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
58 FcPattern *fcpatPtr;
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
59 };
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
60
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
61 typedef struct fc_pattern fc_pattern;
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
62
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
63 DECLARE_LRECORD(fc_pattern, struct fc_pattern);
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
64 #define XFCPATTERN(x) XRECORD (x, fc_pattern, struct fc_pattern)
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
65 #define wrap_fcpattern(p) wrap_record (p, fc_pattern)
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
66 #define FCPATTERNP(x) RECORDP (x, fc_pattern)
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
67 #define CHECK_FCPATTERN(x) CHECK_RECORD (x, fc_pattern)
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
68 #define CONCHECK_FCPATTERN(x) CONCHECK_RECORD (x, fc_pattern)
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
69 #define XFCPATTERN_PTR(x) (XFCPATTERN(x)->fcpatPtr)
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
70
3931
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
71 #define FONTCONFIG_EXPOSE_CONFIG
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
72 #ifdef FONTCONFIG_EXPOSE_CONFIG
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
73
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
74 struct fc_config
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
75 {
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
76 struct LCRECORD_HEADER header;
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
77 FcConfig *fccfgPtr;
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
78 };
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
79
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
80 typedef struct fc_config fc_config;
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
81
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
82 DECLARE_LRECORD(fc_config, struct fc_config);
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
83 #define XFCCONFIG(x) XRECORD (x, fc_config, struct fc_config)
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
84 #define wrap_fcconfig(p) wrap_record (p, fc_config)
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
85 #define FCCONFIGP(x) RECORDP (x, fc_config)
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
86 #define CHECK_FCCONFIG(x) CHECK_RECORD (x, fc_config)
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
87 #define CONCHECK_FCCONFIG(x) CONCHECK_RECORD (x, fc_config)
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
88 #define XFCCONFIG_PTR(x) (XFCCONFIG(x)->fccfgPtr)
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
89
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
90 #endif /* FONTCONFIG_EXPOSE_CONFIG */
fd1f0c73d4df [xemacs-hg @ 2007-04-30 16:46:29 by stephent]
stephent
parents: 3666
diff changeset
91
3666
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
92 #ifdef USE_XFT
4328
dfd878799ef0 Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3931
diff changeset
93
dfd878799ef0 Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3931
diff changeset
94 #ifndef HAVE_FCCONFIGGETRESCANINTERVAL
dfd878799ef0 Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3931
diff changeset
95 /* Older fontconfig versions misspell this function name. */
dfd878799ef0 Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3931
diff changeset
96 #define FcConfigGetRescanInterval FcConfigGetRescanInverval
dfd878799ef0 Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3931
diff changeset
97 #endif /* */
dfd878799ef0 Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3931
diff changeset
98
dfd878799ef0 Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3931
diff changeset
99 #ifndef HAVE_FCCONFIGSETRESCANINTERVAL
dfd878799ef0 Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3931
diff changeset
100 /* Older fontconfig versions misspell this function name. */
dfd878799ef0 Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3931
diff changeset
101 #define FcConfigSetRescanInterval FcConfigSetRescanInverval
dfd878799ef0 Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3931
diff changeset
102 #endif /* */
dfd878799ef0 Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3931
diff changeset
103
3666
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
104 /*
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
105 The format of a fontname (as returned by fontconfig) is not well-documented,
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
106 But the character repertoire is represented in an ASCII-compatible way. See
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
107 fccharset.c (FcCharSetUnparse). So we can use UTF-8 for long names.
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
108
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
109 Currently we have a hack where different versions of the unparsed name are
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
110 used in different contexts fairly arbitrarily. I don't think this is close
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
111 to coherency; even without the charset and lang properties fontconfig names
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
112 are too unwieldy to use. We need to rethink the approach here. I think
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
113 probably Lisp_Font_Instance.name should contain the font name as specified
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
114 to Lisp (almost surely much shorter than shortname, even, and most likely
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
115 wildcarded), while Lisp_Font_Instance.truename should contain the longname.
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
116 For now, I'm going to #ifdef the return values defaulting to short. -- sjt
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
117 */
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
118
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
119 /* DEBUGGING STUFF */
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
120
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
121 /* print message to stderr: one internal-format string argument */
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
122 #define DEBUG_XFT0(level,s) \
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
123 if (debug_xft > level) stderr_out (s)
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
124
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
125 /* print message to stderr: one formatted argument */
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
126 #define DEBUG_XFT1(level,format,x1) \
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
127 if (debug_xft > level) stderr_out (format, x1)
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
128
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
129 /* print message to stderr: two formatted arguments */
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
130 #define DEBUG_XFT2(level,format,x1,x2) \
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
131 if (debug_xft > level) stderr_out (format, x1, x2)
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
132
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
133 /* print message to stderr: three formatted arguments */
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
134 #define DEBUG_XFT3(level,format,x1,x2,x3) \
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
135 if (debug_xft > level) stderr_out (format, x1, x2, x3)
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
136
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
137 /* print message to stderr: four formatted arguments */
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
138 #define DEBUG_XFT4(level,format,x1,x2,x3,x4) \
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
139 if (debug_xft > level) stderr_out (format, x1, x2, x3, x4)
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
140
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
141 /* print an Xft pattern to stderr
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
142 LEVEL is the debug level (to compare to debug_xft)
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
143 FORMAT is a newline-terminated printf format with one %s for the pattern
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
144 and must be internal format (eg, pure ASCII)
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
145 PATTERN is an FcPattern *. */
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
146 #define PRINT_XFT_PATTERN(level,format,pattern) \
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
147 do { \
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
148 DECLARE_EISTRING (eistrpxft_name); \
4757
a23ac8f90a49 Improve warning and error messages from Xft.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4328
diff changeset
149 Extbyte *name = (Extbyte *) FcNameUnparse (pattern); \
3666
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
150 \
4757
a23ac8f90a49 Improve warning and error messages from Xft.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4328
diff changeset
151 eicpy_ext(eistrpxft_name, \
a23ac8f90a49 Improve warning and error messages from Xft.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4328
diff changeset
152 name ? name : "FONT WITH NULL NAME", \
a23ac8f90a49 Improve warning and error messages from Xft.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4328
diff changeset
153 Qfc_font_name_encoding); \
3666
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
154 DEBUG_XFT1 (level, format, eidata(eistrpxft_name)); \
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
155 free (name); \
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
156 } while (0)
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
157
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
158 /* print a progress message
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
159 LEVEL is the debug level (to compare to debug_xft)
4758
75975fd0b7fc Implement more of the fontconfig API.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4757
diff changeset
160 FONT is the Xft font name in Mule internal encoding (from an eistring).
3666
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
161 LANG is the language being checked for support (must be ASCII). */
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
162 #define CHECKING_LANG(level,font,lang) \
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
163 do { \
4758
75975fd0b7fc Implement more of the fontconfig API.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4757
diff changeset
164 DEBUG_XFT2 (level, "checking if %s handles %s\n", font, lang); \
3666
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
165 } while (0)
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
166
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
167 #else /* USE_XFT */
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
168
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
169 #endif /* USE_XFT */
3214dca89755 [xemacs-hg @ 2006-11-07 15:58:21 by stephent]
stephent
parents: 3665
diff changeset
170
3354
15fb91e3a115 [xemacs-hg @ 2006-04-23 16:11:16 by stephent]
stephent
parents:
diff changeset
171 #endif /* INCLUDED_font_mgr_h_ */