annotate lisp/gtk-faces.el @ 5602:c9e5612f5424

Support the MP library on recent FreeBSD, have it pass relevant tests. src/ChangeLog addition: 2011-11-26 Aidan Kehoe <kehoea@parhasard.net> * number-mp.c (bignum_to_string): Don't overwrite the accumulator we've just set up for this function. * number-mp.c (BIGNUM_TO_TYPE): mp_itom() doesn't necessarily do what this code used to think with negative numbers, it can treat them as unsigned ints. Subtract numbers from bignum_zero instead of multiplying them by -1 to convert them to their negative equivalents. * number-mp.c (bignum_to_int): * number-mp.c (bignum_to_uint): * number-mp.c (bignum_to_long): * number-mp.c (bignum_to_ulong): * number-mp.c (bignum_to_double): Use the changed BIGNUM_TO_TYPE() in these functions. * number-mp.c (bignum_ceil): * number-mp.c (bignum_floor): In these functions, be more careful about rounding to positive and negative infinity, respectively. Don't use the sign of QUOTIENT when working out out whether to add or subtract one, rather use the sign QUOTIENT would have if arbitrary-precision division were done. * number-mp.h: * number-mp.h (MP_GCD): Wrap #include <mp.h> in BEGIN_C_DECLS/END_C_DECLS. * number.c (Fbigfloat_get_precision): * number.c (Fbigfloat_set_precision): Don't attempt to call XBIGFLOAT_GET_PREC if this build doesn't support big floats.
author Aidan Kehoe <kehoea@parhasard.net>
date Sat, 26 Nov 2011 17:59:14 +0000
parents 308d34e9f07d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1 ;;; gtk-faces.el --- GTK-specific face frobnication, aka black magic.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
2
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
3 ;; Copyright (C) 1992-4, 1997 Free Software Foundation, Inc.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
4 ;; Copyright (C) 1995, 1996 Ben Wing.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
5 ;; Copyright (c) 2000 William Perry
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
6
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
7 ;; Author: William M. Perry <wmperry@gnu.org>
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
8 ;; Maintainer: XEmacs Development Team
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
9 ;; Keywords: extensions, internal, dumped
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
10
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
11 ;; This file is part of XEmacs.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
12
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5229
diff changeset
13 ;; XEmacs is free software: you can redistribute it and/or modify it
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5229
diff changeset
14 ;; under the terms of the GNU General Public License as published by the
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5229
diff changeset
15 ;; Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5229
diff changeset
16 ;; option) any later version.
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
17
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5229
diff changeset
18 ;; XEmacs is distributed in the hope that it will be useful, but WITHOUT
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5229
diff changeset
19 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5229
diff changeset
20 ;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5229
diff changeset
21 ;; for more details.
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
22
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5229
diff changeset
24 ;; along with XEmacs. If not, see <http://www.gnu.org/licenses/>.
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
25
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
26 ;;; Synched up with: Not synched.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
27
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
28 ;;; Commentary:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
29
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
30 ;; This file is dumped with XEmacs (when GTK support is compiled in).
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
31
502
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 462
diff changeset
32 (globally-declare-fboundp
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 462
diff changeset
33 '(gtk-init-pointers
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 462
diff changeset
34 gtk-font-selection-dialog-new
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 462
diff changeset
35 gtk-widget-set-sensitive gtk-font-selection-dialog-apply-button
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 462
diff changeset
36 gtk-signal-connect gtk-main-quit
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 462
diff changeset
37 gtk-font-selection-dialog-ok-button
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 462
diff changeset
38 gtk-font-selection-dialog-get-font-name gtk-widget-destroy
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 462
diff changeset
39 font-menu-set-font font-family font-size
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 462
diff changeset
40 gtk-font-selection-dialog-cancel-button gtk-widget-show-all
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 711
diff changeset
41 gtk-main gtk-style-info))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
42
711
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
43 (eval-when-compile
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
44 (defmacro gtk-style-munge-face (face attribute value)
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
45 (let ((func (intern (format "face-%s" (eval attribute)))))
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
46 `(add-spec-to-specifier (,func ,face) ,value nil '(gtk default) 'prepend))))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
47
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
48 ;;; gtk-init-device-faces is responsible for initializing default
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
49 ;;; values for faces on a newly created device.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
50 ;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
51 (defun gtk-init-device-faces (device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
52 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
53 ;; If the "default" face didn't have a font specified, try to pick one.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
54 ;;
711
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
55 (when (eq (device-type device) 'gtk)
707
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 706
diff changeset
56 (let* ((style (gtk-style-info device))
711
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
57 (normal 0) ; GTK_STATE_NORMAL
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
58 ;;(active 1) ; GTK_STATE_ACTIVE
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
59 (prelight 2) ; GTK_STATE_PRELIGHT
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
60 (selected 3) ; GTK_STATE_SELECTED
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
61 ;;(insensitive 4) ; GTK_STATE_INSENSITIVE
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
62 )
711
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
63 (gtk-style-munge-face 'highlight 'foreground
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
64 (nth prelight (plist-get style 'text)))
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
65 (gtk-style-munge-face 'highlight 'background
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
66 (nth prelight (plist-get style 'background)))
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
67 (gtk-style-munge-face 'zmacs-region 'foreground
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
68 (nth selected (plist-get style 'text)))
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
69 (gtk-style-munge-face 'zmacs-region 'background
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
70 (nth selected (plist-get style 'background)))
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
71 (gtk-style-munge-face 'toolbar 'background
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
72 (nth normal (plist-get style 'base)))
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
73 (gtk-style-munge-face 'toolbar 'foreground
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
74 (nth normal (plist-get style 'text)))
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
75 (set-face-background 'modeline [toolbar background] '(gtk default))
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
76 (set-face-foreground 'modeline [toolbar foreground] '(gtk default))
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
77 )
5be46355cc42 [xemacs-hg @ 2001-12-23 01:01:45 by wmperry]
wmperry
parents: 707
diff changeset
78 (gtk-init-pointers)))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
79
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
80 ;;; This is called from `init-frame-faces', which is called from
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
81 ;;; init_frame_faces() which is called from Fmake_frame(), to perform
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
82 ;;; any device-specific initialization.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
83 ;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
84 (defun gtk-init-frame-faces (frame)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
85 )
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
86
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
87 (defun gtk-init-global-faces ()
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 776
diff changeset
88 )
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
89
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
90
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
91 ;;; Lots of this stolen from x-faces.el - I'm not sure if this will
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
92 ;;; require a rewrite for win32 or not?
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
93 (defconst gtk-font-regexp nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
94 (defconst gtk-font-regexp-head nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
95 (defconst gtk-font-regexp-head-2 nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
96 (defconst gtk-font-regexp-weight nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
97 (defconst gtk-font-regexp-slant nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
98 (defconst gtk-font-regexp-pixel nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
99 (defconst gtk-font-regexp-point nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
100 (defconst gtk-font-regexp-foundry-and-family nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
101 (defconst gtk-font-regexp-registry-and-encoding nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
102 (defconst gtk-font-regexp-spacing nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
103
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
104 ;;; Regexps matching font names in "Host Portable Character Representation."
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
105 ;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
106 (let ((- "[-?]")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
107 (foundry "[^-]*")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
108 (family "[^-]*")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
109 (weight "\\(bold\\|demibold\\|medium\\|black\\)") ; 1
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
110 ; (weight\? "\\(\\*\\|bold\\|demibold\\|medium\\|\\)") ; 1
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
111 (weight\? "\\([^-]*\\)") ; 1
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
112 (slant "\\([ior]\\)") ; 2
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
113 ; (slant\? "\\([ior?*]?\\)") ; 2
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
114 (slant\? "\\([^-]?\\)") ; 2
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
115 ; (swidth "\\(\\*\\|normal\\|semicondensed\\|\\)") ; 3
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
116 (swidth "\\([^-]*\\)") ; 3
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
117 ; (adstyle "\\(\\*\\|sans\\|\\)") ; 4
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
118 (adstyle "\\([^-]*\\)") ; 4
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
119 (pixelsize "\\(\\*\\|[0-9]+\\)") ; 5
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
120 (pointsize "\\(\\*\\|0\\|[0-9][0-9]+\\)") ; 6
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
121 ; (resx "\\(\\*\\|[0-9][0-9]+\\)") ; 7
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
122 ; (resy "\\(\\*\\|[0-9][0-9]+\\)") ; 8
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
123 (resx "\\([*0]\\|[0-9][0-9]+\\)") ; 7
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
124 (resy "\\([*0]\\|[0-9][0-9]+\\)") ; 8
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
125 (spacing "[cmp?*]")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
126 (avgwidth "\\(\\*\\|[0-9]+\\)") ; 9
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
127 (registry "[^-]*") ; some fonts have omitted registries
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
128 ; (encoding ".+") ; note that encoding may contain "-"...
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
129 (encoding "[^-]+") ; false!
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
130 )
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
131 (setq gtk-font-regexp
5229
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
132 (concat "\\`\\*?[-?*]"
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
133 foundry - family - weight\? - slant\? - swidth - adstyle -
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
134 pixelsize - pointsize - resx - resy - spacing - avgwidth -
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
135 registry - encoding "\\'"
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
136 ))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
137 (setq gtk-font-regexp-head
5229
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
138 (concat "\\`[-?*]" foundry - family - weight\? - slant\?
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
139 "\\([-*?]\\|\\'\\)"))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
140 (setq gtk-font-regexp-head-2
5229
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
141 (concat "\\`[-?*]" foundry - family - weight\? - slant\?
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
142 - swidth - adstyle - pixelsize - pointsize
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
143 "\\([-*?]\\|\\'\\)"))
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
144 (setq gtk-font-regexp-slant (concat - slant -))
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
145 (setq gtk-font-regexp-weight (concat - weight -))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
146 ;; if we can't match any of the more specific regexps (unfortunate) then
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
147 ;; look for digits; assume 2+ digits is 10ths of points, and 1-2 digits
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
148 ;; is pixels. Bogus as hell.
5229
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
149 (setq gtk-font-regexp-pixel "[-?*]\\([0-9][0-9]?\\)[-?*]")
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
150 (setq gtk-font-regexp-point "[-?*]\\([0-9][0-9]+\\)[-?*]")
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
151 ;; the following two are used by x-font-menu.el.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
152 (setq gtk-font-regexp-foundry-and-family
5229
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
153 (concat "\\`[-?*]" foundry - "\\(" family "\\)" -))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
154 (setq gtk-font-regexp-registry-and-encoding
5229
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
155 (concat - "\\(" registry "\\)" - "\\(" encoding "\\)\\'"))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
156 (setq gtk-font-regexp-spacing
5229
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
157 (concat - "\\(" spacing "\\)" - avgwidth
7d06a8bf47d2 Move #'purecopy from alloc.c to being an obsolete alias for #'identity
Aidan Kehoe <kehoea@parhasard.net>
parents: 872
diff changeset
158 - registry - encoding "\\'"))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
159 )
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
160
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
161 (defvaralias 'x-font-regexp 'gtk-font-regexp)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
162 (defvaralias 'x-font-regexp-head 'gtk-font-regexp-head)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
163 (defvaralias 'x-font-regexp-head-2 'gtk-font-regexp-head-2)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
164 (defvaralias 'x-font-regexp-weight 'gtk-font-regexp-weight)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
165 (defvaralias 'x-font-regexp-slant 'gtk-font-regexp-slant)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
166 (defvaralias 'x-font-regexp-pixel 'gtk-font-regexp-pixel)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
167 (defvaralias 'x-font-regexp-point 'gtk-font-regexp-point)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
168 (defvaralias 'x-font-regexp-foundry-and-family 'gtk-font-regexp-foundry-and-family)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
169 (defvaralias 'x-font-regexp-registry-and-encoding 'gtk-font-regexp-registry-and-encoding)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
170 (defvaralias 'x-font-regexp-spacing 'gtk-font-regexp-spacing)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
171
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
172 (defun gtk-frob-font-weight (font which)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
173 (if (font-instance-p font) (setq font (font-instance-name font)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
174 (cond ((null font) nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
175 ((or (string-match gtk-font-regexp font)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
176 (string-match gtk-font-regexp-head font)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
177 (string-match gtk-font-regexp-weight font))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
178 (concat (substring font 0 (match-beginning 1)) which
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
179 (substring font (match-end 1))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
180 (t nil)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
181
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
182 (defun gtk-frob-font-slant (font which)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
183 (if (font-instance-p font) (setq font (font-instance-name font)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
184 (cond ((null font) nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
185 ((or (string-match gtk-font-regexp font)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
186 (string-match gtk-font-regexp-head font))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
187 (concat (substring font 0 (match-beginning 2)) which
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
188 (substring font (match-end 2))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
189 ((string-match gtk-font-regexp-slant font)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
190 (concat (substring font 0 (match-beginning 1)) which
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
191 (substring font (match-end 1))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
192 (t nil)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
193
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
194 (defun gtk-make-font-bold (font &optional device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
195 (or (try-font-name (gtk-frob-font-weight font "bold") device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
196 (try-font-name (gtk-frob-font-weight font "black") device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
197 (try-font-name (gtk-frob-font-weight font "demibold") device)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
198
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
199 (defun gtk-make-font-unbold (font &optional device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
200 (try-font-name (gtk-frob-font-weight font "medium") device))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
201
776
79940b592197 [xemacs-hg @ 2002-03-15 07:43:14 by ben]
ben
parents: 771
diff changeset
202 (defcustom try-oblique-before-italic-fonts t
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
203 "*If nil, italic fonts are searched before oblique fonts.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
204 If non-nil, oblique fonts are tried before italic fonts. This is mostly
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
205 applicable to adobe-courier fonts"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
206 :type 'boolean
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
207 :tag "Try Oblique Before Italic Fonts"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
208 :group 'x)
776
79940b592197 [xemacs-hg @ 2002-03-15 07:43:14 by ben]
ben
parents: 771
diff changeset
209 (define-obsolete-variable-alias '*try-oblique-before-italic-fonts*
79940b592197 [xemacs-hg @ 2002-03-15 07:43:14 by ben]
ben
parents: 771
diff changeset
210 'try-oblique-before-italic-fonts)
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
211
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
212 (defun gtk-make-font-italic (font &optional device)
776
79940b592197 [xemacs-hg @ 2002-03-15 07:43:14 by ben]
ben
parents: 771
diff changeset
213 (if try-oblique-before-italic-fonts
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
214 (or (try-font-name (gtk-frob-font-slant font "o") device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
215 (try-font-name (gtk-frob-font-slant font "i") device))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
216 (or (try-font-name (gtk-frob-font-slant font "i") device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
217 (try-font-name (gtk-frob-font-slant font "o") device))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
218
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
219 (defun gtk-make-font-unitalic (font &optional device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
220 (try-font-name (gtk-frob-font-slant font "r") device))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
221
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
222 (defun gtk-make-font-bold-italic (font &optional device)
776
79940b592197 [xemacs-hg @ 2002-03-15 07:43:14 by ben]
ben
parents: 771
diff changeset
223 (if try-oblique-before-italic-fonts
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
224 (or (try-font-name
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
225 (gtk-frob-font-slant (gtk-frob-font-weight font "bold") "o") device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
226 (try-font-name
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
227 (gtk-frob-font-slant (gtk-frob-font-weight font "bold") "i") device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
228 (try-font-name
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
229 (gtk-frob-font-slant (gtk-frob-font-weight font "black") "o") device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
230 (try-font-name
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
231 (gtk-frob-font-slant (gtk-frob-font-weight font "black") "i") device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
232 (try-font-name
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
233 (gtk-frob-font-slant (gtk-frob-font-weight font "demibold") "o") device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
234 (try-font-name
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
235 (gtk-frob-font-slant (gtk-frob-font-weight font "demibold") "i") device))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
236 (or (try-font-name
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
237 (gtk-frob-font-slant (gtk-frob-font-weight font "bold") "i") device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
238 (try-font-name
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
239 (gtk-frob-font-slant (gtk-frob-font-weight font "bold") "o") device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
240 (try-font-name
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
241 (gtk-frob-font-slant (gtk-frob-font-weight font "black") "i") device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
242 (try-font-name
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
243 (gtk-frob-font-slant (gtk-frob-font-weight font "black") "o") device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
244 (try-font-name
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
245 (gtk-frob-font-slant (gtk-frob-font-weight font "demibold") "i") device)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
246 (try-font-name
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
247 (gtk-frob-font-slant (gtk-frob-font-weight font "demibold") "o") device))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
248
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
249 (defun gtk-choose-font ()
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
250 (interactive)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
251 (require 'x-font-menu)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
252 (require 'font)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
253 (let ((locale (if font-menu-this-frame-only-p
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
254 (selected-frame)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
255 nil))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
256 (dialog nil))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
257 (setq dialog (gtk-font-selection-dialog-new "Choose default font..."))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
258 (put dialog 'modal t)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
259 (put dialog 'type 'dialog)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
260
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
261 (gtk-widget-set-sensitive (gtk-font-selection-dialog-apply-button dialog) nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
262 (gtk-signal-connect dialog 'destroy (lambda (&rest ignored) (gtk-main-quit)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
263 (gtk-signal-connect (gtk-font-selection-dialog-ok-button dialog)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
264 'clicked
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
265 (lambda (button data)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
266 (let* ((dialog (car data))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
267 (font (font-create-object
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
268 (gtk-font-selection-dialog-get-font-name dialog))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
269 (gtk-widget-destroy dialog)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
270 (font-menu-set-font (car (font-family font)) nil (* 10 (font-size font)))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
271 (cons dialog locale))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
272 (gtk-signal-connect (gtk-font-selection-dialog-cancel-button dialog)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
273 'clicked
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
274 (lambda (button dialog)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
275 (gtk-widget-destroy dialog)) dialog)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
276
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
277 (gtk-widget-show-all dialog)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
278 (gtk-main)))