annotate man/lispref/glyphs.texi @ 2182:c91543697b09

[xemacs-hg @ 2004-07-19 08:24:24 by stephent] manual improvements <87n01w9zi9.fsf@tleepslib.sk.tsukuba.ac.jp>
author stephent
date Mon, 19 Jul 2004 08:24:28 +0000
parents 4657b5a54253
children 13a418960a88
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 @c -*-texinfo-*-
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 @c This is part of the XEmacs Lisp Reference Manual.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 @c Copyright (C) 1995, 1996 Ben Wing.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 @c See the file lispref.texi for copying conditions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 @setfilename ../../info/glyphs.info
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 @node Glyphs, Annotations, Faces and Window-System Objects, top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 @chapter Glyphs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 @cindex glyphs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
10 A @dfn{glyph} is an object that is used for pixmaps, widgets, and
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
11 images of all sorts, as well as for things that ``act'' like pixmaps,
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
12 such as non-textual strings (@dfn{annotations}) displayed in a buffer or
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
13 in the margins. It is used in begin-glyphs and end-glyphs attached to
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
14 extents, marginal and textual annotations, overlay arrows
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
15 (@code{overlay-arrow-*} variables), toolbar buttons, mouse pointers,
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
16 frame icons, truncation and continuation markers, and the
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
17 like. Basically, any place there is an image or something that acts
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
18 like an image, there will be a glyph object representing it.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 @defun glyphp object
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 This function returns @code{t} if @var{object} is a glyph.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 @menu
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
25 * Glyph Intro:: Glyphs are abstract image specifications.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
26 * Images:: Specifying the appearance of glyphs.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
27 * Using Glyphs:: Creating and displaying glyphs.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
28 * Manipulating Glyphs:: Getting and setting glyph properties.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
29 * Glyph Examples:: Examples of how to work with glyphs.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
30 @end menu
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
31
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
32
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
33 @node Glyph Intro
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
34 @section Glyph Introduction
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
35
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
36 In XEmacs, ``glyph'' does @strong{not} refer to a single unit of textual
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
37 display (the XEmacs term for that is @dfn{rune}, and runes are confined
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
38 to the internal implementation of redisplay), but rather is an
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
39 object encapsulating a graphical element, such as an image or widget (an
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
40 active GUI element such as a button or text entry field; X11 calls this a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
41 @dfn{widget}, while MS Windows uses the term @dfn{control}).
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
42 This graphical element could appear in a buffer, a margin, a gutter, or
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
43 a toolbar, or even externally to XEmacs as a mouse pointer or an icon,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
44 for example.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
45
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
46 On the other hand, by contrast with GNU Emacs 21, an XEmacs glyph is
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
47 not ``just'' an image. The actual image that is displayed (as opposed
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
48 to its position or clipping) is defined by an ``image specifier'' object
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
49 contained within the glyph. The separation between an image specifier
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
50 object and a glyph object is made because the glyph includes other
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
51 properties than just the actual image: e.g. the face it is displayed in,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
52 the alignment of the image, @emph{etc}. Also, an image specifier is
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
53 used in at least one place in XEmacs in lieu of a glyphs, namely the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
54 backing pixmap of a face.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
55
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
56 An image specifier is used because glyphs often have locale-specific
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
57 semantics. The most important example is semantics determined by the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
58 display device: you can't usefully display a JPEG on stdout, or a color
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
59 image on a monochrome display. But because the image property is a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
60 specifier in XEmacs, you can specify that a given glyph appear as a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
61 monochrome image on monochrome displays, a color image on color
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
62 displays, and as a string on TTYs. (Specifying a string for the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
63 @code{tty} device locale would give behavior like the @code{ALT}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
64 attribute of an @code{IMG} element in HTML.) Another is semantics
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
65 determined by the buffer or mode. (Unfortunately, currently there are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
66 no compelling examples of this for glyphs.)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
67
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
68 All this means that only one global glyph needs to exist for a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
69 particular purpose (e.g. the icon used to represent an iconified frame,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
70 the mouse pointer used over particular areas of a frame, etc.). Often
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
71 you need not (and should not!) create your own glyph, but rather modify
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
72 an existing one.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
73
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
74 In working with glyphs it is important to keep in mind the distinction
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
75 between a locale and a domain. A @dfn{locale} is specified by the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
76 programmer, and is an abstract link between a specification (for a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
77 glyph, its visual appearance) and a displayable object. The displayable
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
78 object may be a buffer or a window, or an object containing buffers or
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
79 windows such as frame, device, or console. A @dfn{domain} is an actual
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
80 display context, which must be concrete enough to enable XEmacs to
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
81 identify the device type. (Buffers may be displayed in windows on
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
82 different devices, even simultaneously, so a buffer cannot be a domain.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
83 Similarly, the global locale cannot be a domain.) @ref{Specifiers}, for
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
84 more information about specifier locales and domains.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
85
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
86
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
87 @node Images
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
88 @section Images
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
89
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
90 @menu
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
91 * Image Specifiers:: Specifying an image's appearance.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
92 * Image Instantiator Conversion:: Lazy realization of graphics.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
93 * Image Instantiator Formats:: A catalog of image descriptors.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
94 * Image Instances:: Classes of graphical objects.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
97
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
98 @node Image Specifiers
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
99 @subsection Image Specifiers
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
100 @cindex image specifiers
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
101
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
102 An image specifier is a description of the actual graphical
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
103 realization of a glyph. For example, a typical image description is
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
104 @emph{the file system path to a PNG file}. Since redisplay doesn't know
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
105 about files, and in any case the image may need to be manipulated
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
106 (@emph{e.g.}, a face's background pixmap must be clipped and tiled), the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
107 PNG file must be converted internally to a window system bitmap or
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
108 pixmap object. We describe this process by writing that when XEmacs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
109 displays the image, it @dfn{instantiates} the @dfn{image instantiator}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
110 into an @dfn{image instance}. Image instances are an internal object
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
111 type (similar to font instances and color instances), describing how the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
112 image appears in a particular domain. On the other hand, image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
113 instantiators, which are just descriptions of how the image should
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
114 appear, are represented using Lisp strings or vectors.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
115
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
116 Furthermore the graphical realization will vary, and for some devices
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
117 may not even be a bitmapped graphic. These variations may be controlled
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
118 by the program by specifying different @dfn{image instantiators} in
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
119 different locales. This is implemented with an @dfn{image specifier},
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
120 a specifier whose specifications are image instantiators.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
121
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
122 Image specifiers are rarely if ever found by themselves. However, an
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
123 image specifier results from calling @code{glyph-image} on a glyph, or
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
124 retrieving the @code{background-pixmap} property of a face, and you can
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
125 check if some random object is an image specifier.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
126
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
127 @defun image-specifier-p object
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
128 This function returns non-@code{nil} if @var{object} is an image specifier.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
129 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
130
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
131 @defun make-image-specifier spec-list
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
132 This function creates a new image specifier object and initializes it
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
133 according to @var{spec-list}. @xref{Specifiers}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
134 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
135
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
136 This function exists mainly for completeness. In practice, you rarely,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
137 if ever, need to actually create an image specifier. Instead, they are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
138 implicitly created by the initialization of glyphs and faces, and the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
139 specifier member of these objects cannot be changed after
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
140 initialization; you may only set the specifications it contains.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
141
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
142 Image instantiators come in many formats: @code{xbm}, @code{xpm},
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
143 @code{gif}, @code{jpeg}, etc. These denote the format of the data
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
144 describing the image. The resulting image instances also come in many
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
145 types---@code{mono-pixmap}, @code{color-pixmap}, @code{text},
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
146 @code{pointer}, etc. This refers to the behavior of the image and the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
147 sorts of places it can appear. (For example, a color-pixmap image has
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
148 fixed colors specified for it, while a mono-pixmap image comes in two
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
149 unspecified shades ``foreground'' and ``background'' that are determined
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
150 from the face of the glyph or surrounding text; a text image appears as
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
151 a string of text and has an unspecified foreground, background, and
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
152 font; a pointer image behaves like a mono-pixmap image but can only be
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
153 used as a mouse pointer [mono-pixmap images cannot be used as mouse
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
154 pointers]; etc.)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
155
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
156 It is important to keep the distinction between image instantiator
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
157 format and image instance type in mind. Typically, a given image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
158 instantiator format can result in many different image instance types.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
159 For example, @code{xpm} can be instanced as @code{color-pixmap},
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
160 @code{mono-pixmap}, or @code{pointer}; whereas @code{cursor-font} can be
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
161 instanced only as @code{pointer}. On the other hand, a particular image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
162 instance type can be generated by many different image instantiator
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
163 formats (e.g. @code{color-pixmap} can be generated by @code{xpm},
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
164 @code{gif}, @code{jpeg}, etc.).
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
165
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
166 @xref{Image Instances}, for a more detailed discussion of image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
167 instance types.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
168
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
169 An image instantiator should be a string or a vector of the form
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
170
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
171 @example
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
172 @code{[@var{format} @var{:keyword} @var{value} ...]}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
173 @end example
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
174
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
175 i.e. a format symbol followed by zero or more alternating keyword-value
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
176 pairs.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
177
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
178 The form of an instantiator can be checked with
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
179 @code{valid-instantiator-p} with a @var{TYPE} of @code{image},
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
180 @ref{Specifier Validation Functions}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
181
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
182 For a complete list of the format symbols and their usage,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
183 @ref{Image Instantiator Formats}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
184
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
185 If the instantiator is a string, it will be converted into a vector by
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
186 looking it up according to the specs in the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
187 @code{console-type-image-conversion-list} for the console type of the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
188 domain (usually a window; sometimes a frame or device) over which the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
189 image is being instantiated.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
190
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
191 If the instantiator specifies data from a file, the data will be read in
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
192 at the time that the instantiator is added to the image specifier (which
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
193 may be well before the image is actually displayed), and the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
194 instantiator will be converted into one of the inline-data forms, with
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
195 the filename retained using a @code{:file} keyword. This implies that
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
196 the file must exist when the instantiator is added to the image, but
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
197 does not need to exist at any other time (e.g. it may safely be a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
198 temporary file).
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
199
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
200 The available keywords are given below. Note that some keywords are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
201 generally available (for example, the @code{:data} keyword may be used
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
202 with any format except @code{nothing}), while others are only available
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
203 for one format (@code{resource-id} is unique to the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
204 @code{mswindows-resource} format).
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
205
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
206 @table @code
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
207 @item :data
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
208 Inline image data. If available for a given format, it may be specified
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
209 directly by the program, or it may be a cache of file data previously
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
210 read. When present, it is used to instantiate the image in preference
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
211 to the file named by the @code{:file} property.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
212
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
213 The format of inline data is image-format-specific. For example, in
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
214 pixmap formats, the value should be a string, which is interpreted as an
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
215 octet-stream representing a bitmap or pixmap. But for text formats,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
216 it's string containing the text to be displayed, and for resource
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
217 formats, it's a string containing the name of the resource.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
218
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
219 @item :file
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
220 Data contained in a file. The value is the name of this file. If both
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
221 @code{:data} and @code{:file} are specified, the image is created from
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
222 what is specified in @code{:data} and the string in @code{:file} becomes
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
223 the value of the @code{image-instance-file-name} function when applied
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
224 to the resulting image-instance. Note that there is nothing to stop a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
225 program from changing either the @code{:file} or the @code{:data}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
226 property, and there is no way to detect such mischief. This means that
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
227 the data will @emph{not} be automatically reread if you change the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
228 @code{file} property; you must force it by removing the @code{:data}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
229 property.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
230 @c #### If there are ways to do this in-place, describe them.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
231 (One way to do this is replacing the whole specification with a new
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
232 vector.) This keyword is not valid for instantiator formats
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
233 @code{nothing}, @code{string}, @code{formatted-string},
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
234 @code{cursor-font}, @code{font}, and @code{autodetect}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
235
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
236 @item :mask-data
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
237 Inline data for @code{xbm} and @code{xface}. This specifies a mask to
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
238 be used with the bitmap. Pixels which are not set in the mask will not
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
239 be written to the imaging device. The format is a list of width,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
240 height, and bits, as for @code{:data}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
241
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
242 @item :mask-file
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
243 For @code{xbm} and @code{xface}. This specifies a file containing the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
244 mask data. If neither a mask file nor inline mask data is given for an
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
245 XBM image, and the XBM image comes from a file, XEmacs will look for a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
246 mask file with the same name as the image file but with @samp{Mask} or
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
247 @samp{msk} appended. For example, if you specify the XBM file
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
248 @file{left_ptr} [usually located in @file{/usr/include/X11/bitmaps}],
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
249 the associated mask file @file{left_ptrmsk} will automatically be picked
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
250 up.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
251
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
252 @item :resource-id
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
253 Only for @code{mswindows-resource}. This must be either an integer
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
254 (which directly specifies a resource number) or a string. See the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
255 description of @code{mswindows-resource} for valid strings. @xref{Image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
256 Instantiator Formats}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
257
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
258 @item :foreground
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
259 @itemx :background
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
260 For @code{xbm}, @code{xface}, @code{cursor-font}, and @code{font}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
261 These keywords allow you to explicitly specify foreground and background
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
262 colors. The value should be anything acceptable to
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
263 @code{make-color-instance}. This will cause an external format that
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
264 would by default be instantiated as a @code{mono-pixmap} to instead be
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
265 instantiated as a two-color color-pixmap. This can be used to override
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
266 the colors specified by a glyph's face, for example. If the image is
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
267 instantiated as a pointer, they specify its foreground and/or
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
268 background, instead of the defaults of black and white.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
269
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
270 @item :hotspot-x
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
271 @itemx :hotspot-y
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
272 For @code{xbm} and @code{xface}. These keywords specify a hotspot if
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
273 the image is instantiated as a @code{pointer}. Note that if the XBM
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
274 image file specifies a hotspot, it will automatically be picked up if no
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
275 explicit hotspot is given.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
276
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
277 @item :color-symbols
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
278 Only for @code{xpm}. This specifies an alist that maps strings that
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
279 specify symbolic color names to the actual color to be used for that
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
280 symbolic color (in the form of a string or a color-specifier object).
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
281 If this is not specified, the contents of @code{xpm-color-symbols} are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
282 used to generate the alist.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
283
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
284 @item :resource-type
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
285 Only for @code{mswindows-resource}. This must be a symbol, either
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
286 @code{cursor}, @code{icon}, or @code{bitmap}, specifying the type of
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
287 resource to be retrieved.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
288
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
289 @item :face
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
290 For @code{inherit} and the widget formats. This specifies the face to
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
291 inherit from. For widgets this specifies the face to use for display.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
292 It defaults to gui-element-face.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
293
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
294 @item :selected
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
295 @itemx :active
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
296 @itemx :suffix
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
297 @itemx :keys
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
298 @itemx :style
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
299 @itemx :filter
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
300 @itemx :config
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
301 @itemx :included
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
302 @itemx :key-sequence
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
303 @itemx :accelerator
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
304 @itemx :label
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
305 @itemx :callback
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
306 These keywords, accepted as menu item specs, are also accepted by images
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
307 instantiated as @code{widget}. For their semantics, @ref{Menu Format}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
308 @end table
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
309
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
310
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
311 @node Image Instantiator Conversion
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
312 @subsection Image Instantiator Conversion
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
313 @cindex image instantiator conversion
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
314 @cindex conversion of image instantiators
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
315
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
316 Conversion is applied to image instantiators at the time they are added
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
317 to an image specifier or at the time they are passed to
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
318 @code{make-image-instance}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
319
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
320 @defun set-console-type-image-conversion-list console-type list
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
321 This function sets the image-conversion-list for consoles of the given
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
322 @var{console-type}. The image-conversion-list specifies how image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
323 instantiators that are strings should be interpreted. Each element of
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
324 the list should be a list of two elements (a regular expression string
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
325 and a vector) or a list of three elements (the preceding two plus an
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
326 integer index into the vector). The string is converted to the vector
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
327 associated with the first matching regular expression. If a vector
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
328 index is specified, the string itself is substituted into that position
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
329 in the vector.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
330
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
331 Note: The conversion above is applied when the image instantiator is
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
332 added to an image specifier, not when the specifier is actually
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
333 instantiated. Therefore, changing the image-conversion-list only affects
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
334 newly-added instantiators. Existing instantiators in glyphs and image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
335 specifiers will not be affected.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
336 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
337
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
338 @defun console-type-image-conversion-list console-type
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
339 This function returns the image-conversion-list for consoles of the given
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
340 @var{console-type}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
341 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
342
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
343
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
344 @node Image Instantiator Formats
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
345 @subsection Image Instantiator Formats
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
346 @cindex image instantiator formats
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
347
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
348 The @dfn{format} field of an image instantiator should be a symbol
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
349 denoting a valid format. Which formats are valid will depend on the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
350 features (such as image decoding libraries) available, on platform
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
351 support (MS Windows resource IDs make no sense on other platforms), and
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
352 on the locale.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
353
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
354 @defun valid-image-instantiator-format-p format &optional locale
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
355 This function returns non-@code{nil} if @var{format} is a valid image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
356 instantiator format.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
357
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
358 If @var{locale} is non-@code{nil} then the format is checked in that locale.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
359 If @var{locale} is @code{nil} the current console is used.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
360
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
361 Note that the return value for many formats listed above depends on
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
362 whether XEmacs was compiled with support for that format.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
363 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
364
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
365 @defun image-instantiator-format-list
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
366 This function returns a list of valid image-instantiator formats.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
367 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
368
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
369 Here is a table of image-instantiator formats, giving the keywords that
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
370 are usable with each, and the kinds of instances that may result.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
371
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
372 @table @code
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
373 @item nothing
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
374 Don't display anything; no keywords are valid for this format. Can only be
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
375 instanced as @code{nothing}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
376
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
377 @item string
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
378 Display this image as a text string. Can only be instanced
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
379 as @code{text}, although support for instancing as @code{mono-pixmap}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
380 should be added. The valid keyword is @code{:data}. The value should
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
381 be a string, and it is interpreted as a string of characters.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
382
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
383 @item formatted-string
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
384 Display this image as a text string with replaceable fields,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
385 similar to a modeline format string. The valid keyword is @code{:data}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
386 The value should be a string, and it is interpreted as a string of
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
387 characters containing format sequences.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
388
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
389 Not currently implemented.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
390
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
391 @item xbm
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
392 An X bitmap; available only if X support was compiled into this XEmacs.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
393
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
394 If used in a buffer glyph, icon glyph, or face background pixmap, it
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
395 will be instantiated as @code{mono-pixmap} unless the @code{:foreground}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
396 or @code{:background} keywords are present. In the latter case it will
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
397 be instantiated as @code{color-pixmap} with the two specified colors.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
398 @c #### Check this.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
399 (Probably if @code{:foreground} or @code{:background} is omitted, it
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
400 defaults to black or white respectively.) If used in a pointer glyph,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
401 it will be instantiated as an @code{pointer}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
402
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
403 The valid keywords and their values are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
404 @table @code
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
405 @item :data
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
406 A list containing the height and width of the bitmap as integers, and
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
407 a string interpreted as a bit vector according to the X11 standard XBM
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
408 bitmap format, in that order.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
409 @item :file
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
410 The name of a file containing standard XBM-format data. If it contains
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
411 a hotspot specification, it will be parsed and used if the hotspot is
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
412 not explicitly specified.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
413 @item :mask-data
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
414 A list containing the height and width of the bitmap as integers, and
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
415 a string interpreted as a bit vector according to the X11 standard XBM
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
416 bitmap format, in that order. This bitmap is interpreted as the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
417 clipping region for the bitmap contained in the @code{:data} property.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
418 @item :mask-file
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
419 The name of a file containing standard XBM-format data. Interpreted as
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
420 the clipping region for the bitmap contained in the @code{:data} property.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
421 @item :foreground
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
422 @itemx :background
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
423 These keywords allow you to explicitly specify foreground and background
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
424 colors. The values should be acceptable to @code{make-color-instance}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
425 @item :hotspot-x
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
426 @itemx :hotspot-y
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
427 Integers denoting the hotspot (mouse pointer position), with (0,0) at
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
428 the top left corner. If given, these override any specification in the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
429 XBM file.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
430 @end table
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
431
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
432 @item xpm
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
433 An XPM pixmap; only available if XPM support was compiled into this XEmacs.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
434
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
435 Can be instanced as @code{color-pixmap}, @code{mono-pixmap}, or
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
436 @code{pointer}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
437
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
438 XPM is an add-on library for X that was designed to rectify the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
439 shortcomings of the XBM format. Many icons and labels used in the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
440 XEmacs GUI are still distributed in XPM format (although we are moving
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
441 to standardize on the PNG format). It is therefore highly desirable
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
442 that XPM be available in your XEmacs.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
443
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
444 Most implementations of X include the XPM library as a standard part.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
445 If your vendor does not, it is highly recommended that you download it
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
446 and install it. You can get it from the XEmacs FTP site and mirrors, as
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
447 well as from most sites that distribute X11.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
448
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
449 The valid keywords and their values are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
450 @table @code
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
451 @item :data
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
452 A string interpreted as the contents of a standard XPM file.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
453 @item :file
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
454 The name of a file containing standard XPM-format data. If it contains
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
455 a hotspot specification, it will be parsed and used if the hotspot is
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
456 not explicitly specified.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
457 @c #### Does XPM provide for a hotspot?
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
458 @item :hotspot-x
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
459 @itemx :hotspot-y
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
460 Integers denoting the hotspot (mouse pointer position), with (0,0) at
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
461 the top left corner. If given, these override any specification in the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
462 XBM file.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
463 @c #### Check this.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
464 (This may not be true. The original documentation doesn't mention them
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
465 in connection with XPM, but a pointer needs a hotspot.)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
466 @item :color-symbols
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
467 An alist that maps the one- or two-character strings that specify
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
468 symbolic color names in the XPM file to the actual color to be used for
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
469 that symbolic color (in the form of a string acceptable as a color
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
470 instantiator, @ref{Color Specifiers}, or a color-specifier object).
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
471 If this is not specified, the contents of @code{xpm-color-symbols} are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
472 used to generate the alist.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
473 @end table
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
474
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
475 @item xface
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
476 An X-Face bitmap, used to encode people's faces in e-mail messages;
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
477 only available if X-Face support was compiled into this XEmacs.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
478
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
479 Will be instanced as @code{mono-pixmap}, @code{color-pixmap}, or
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
480 @code{pointer}, depending on the target instance type and the presence
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
481 of color keywords.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
482
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
483 The valid keywords and their values are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
484 @table @code
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
485 @item :data
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
486 A list containing the height and width of the bitmap as integers, and
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
487 a string interpreted as a bit vector according to the X11 standard XBM
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
488 bitmap format, in that order.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
489 @item :file
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
490 The name of a file containing standard XBM-format data. If it contains
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
491 a hotspot specification, it will be parsed and used if the hotspot is
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
492 not explicitly specified.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
493 @item :mask-data
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
494 A list containing the height and width of the bitmap as integers, and
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
495 a string interpreted as a bit vector according to the X11 standard XBM
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
496 bitmap format, in that order. This bitmap is interpreted as the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
497 clipping region for the bitmap contained in the @code{:data} property.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
498 @item :mask-file
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
499 The name of a file containing standard XBM-format data. Interpreted as
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
500 the clipping region for the bitmap contained in the @code{:data} property.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
501 @item :foreground
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
502 @itemx :background
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
503 These keywords allow you to explicitly specify foreground and background
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
504 colors. The values should be acceptable to @code{make-color-instance}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
505 @item :hotspot-x
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
506 @itemx :hotspot-y
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
507 Integers denoting the hotspot (mouse pointer position), with (0,0) at
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
508 the top left corner. If given, these override any specification in the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
509 XBM file.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
510 @end table
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
511
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
512 @item gif
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
513 @itemx jpeg
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
514 @itemx png
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
515 @itemx tiff
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
516 These are GIF87- or GIF89-format, JPEG-format, PNG/GIF24-format, and
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
517 TIFF-format images, respectively. They are available only if
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
518 appropriate decoding support was built into XEmacs. XEmacs includes GIF
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
519 decoding functions as a standard part of it, so if you have X support,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
520 you will normally have GIF support, unless you explicitly disable it at
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
521 configure time. If you have development support (both the libraries and
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
522 the relevant C header files) available when XEmacs is built, the JPEG,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
523 PNG, and TIFF libraries will automatically be detected (in the ``usual
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
524 places'') and linked into the build.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
525
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
526 Note that PNG is the standard format for images distributed with XEmacs,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
527 so it is highly recommended that PNG support be built in.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
528
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
529 All of these instantiators will be instanced as @code{color-pixmap}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
530
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
531 The valid keywords and their values are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
532 @table @code
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
533 @item :data
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
534 A string interpreted as the contents of a file containing data in the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
535 appropriate standard format.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
536 @item :file
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
537 The name of a file containing standard-format data.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
538 @end table
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
539
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
540 @item cursor-font
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
541 Most window systems provide a set of standard cursors, which in X11 is
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
542 called a cursor font. Can only be instanced as @code{pointer}. This
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
543 should probably be fixed.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
544
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
545 The valid keyword is @code{:data}. Its value should be a string
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
546 containing one of the standard cursor-font names, such as @samp{watch}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
547 or @samp{right_ptr} under X. More specifically, in the X Window System
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
548 it may be any of the standard cursor names from appendix B of the Xlib
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
549 manual, provided in the file @file{<X11/cursorfont.h>} by most
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
550 distributions, minus the @samp{XC_} prefix. For MS Windows, use
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
551 @code{mswindows-resource} instantiator format, not @code{cursor-font}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
552 Other window systems may have different lists.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
553
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
554 @item font
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
555 A glyph from a font; i.e. the name of a font, and glyph index into it
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
556 of the form @samp{@var{font} fontname index [[mask-font] mask-index]}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
557 Only if X support was compiled into this XEmacs. Currently can only be
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
558 instanced as @code{pointer}. This should probably be fixed.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
559 @c #### The above description is not very helpful, so it's not obvious
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
560 @c how to instantiate a font image.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
561
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
562 @item mswindows-resource
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
563 An MS Windows pointer resource. Specifies a resource to retrieve
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
564 directly from the system (an OEM resource) or from a file, particularly
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
565 an executable file. Can be instanced as @code{pointer} or
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
566 @code{color-pixmap}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
567
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
568 The valid keywords and their values are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
569
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
570 @table @code
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
571 @item :resource-type
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
572 A string naming the type (@code{cursor}, @code{bitmap}, or @code{icon})
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
573 of the resource. Required.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
574 @item :file
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
575 A string containing the name of the file containing the resource (often
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
576 an executable). If a system resource, @code{:file} should be omitted.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
577 @item :resource-id
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
578 A string containing the name of a resource. Required if @code{:file}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
579 is not specified.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
580
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
581 This must be either an integer (which directly specifies a resource
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
582 number) or a string. Valid strings are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
583
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
584 For bitmaps:
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
585
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
586 "close", "uparrow", "dnarrow", "rgarrow", "lfarrow",
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
587 "reduce", "zoom", "restore", "reduced", "zoomd",
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
588 "restored", "uparrowd", "dnarrowd", "rgarrowd", "lfarrowd",
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
589 "mnarrow", "combo", "uparrowi", "dnarrowi", "rgarrowi",
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
590 "lfarrowi", "size", "btsize", "check", "checkboxes", and
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
591 "btncorners".
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
592
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
593 For cursors:
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
594
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
595 "normal", "ibeam", "wait", "cross", "up", "sizenwse",
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
596 "sizenesw", "sizewe", "sizens", "sizeall", and "no".
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
597
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
598 For icons:
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
599
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
600 "sample", "hand", "ques", "bang", "note", and "winlogo".
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
601 @end table
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
602
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
603 @item subwindow
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
604 An embedded windowing system window. Can only be instanced as
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
605 @code{subwindow}. Not implemented.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
606 @c #### Check status of subwindows ... I thought Andy implemented them.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
607
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
608 @item button
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
609 A button widget; either a push button, radio button or toggle button.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
610 Can only be instanced as @code{widget}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
611
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
612 @item combo-box
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
613 A drop list of selectable items in a widget, for editing text.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
614 Can only be instanced as @code{widget}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
615
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
616 @item edit-field
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
617 A text editing widget. Can only be instanced as @code{widget}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
618
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
619 @item label
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
620 A static, text-only, widget; for displaying text. Can only be instanced
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
621 as @code{widget}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
622
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
623 @item layout
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
624 A widget for controlling the positioning of children underneath it.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
625 Through the use of nested layouts, a widget hierarchy can be created
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
626 which can have the appearance of any standard dialog box or similar
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
627 arrangement; all of this is counted as one @dfn{glyph} and could appear
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
628 in many of the places that expect a single glyph. Can only be instanced
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
629 as @code{widget}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
630
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
631 @item native-layout
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
632 The native version of a layout widget.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
633 Can only be instanced as @code{widget}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
634
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
635 @item progress-gauge
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
636 A sliding widget, for showing progress. Can only be instanced as
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
637 @code{widget}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
638
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
639 @item tab-control
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
640 A tab widget; a series of user selectable tabs. Can only be instanced
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
641 as @code{widget}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
642
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
643 @item tree-view
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
644 A folding widget. Can only be instanced as @code{widget}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
645
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
646 @item scrollbar
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
647 A scrollbar widget. Can only be instanced as @code{widget}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
648
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
649 @item autodetect
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
650 XEmacs tries to guess what format the data is in. If X support exists,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
651 the data string will be checked to see if it names a filename. If so,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
652 and this filename contains XBM or XPM data, the appropriate sort of
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
653 pixmap or pointer will be created. [This includes picking up any
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
654 specified hotspot or associated mask file.] Otherwise, if @code{pointer}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
655 is one of the allowable image-instance types and the string names a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
656 valid cursor-font name, the image will be created as a pointer.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
657 Otherwise, the image will be displayed as text. If no X support exists,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
658 the image will always be displayed as text.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
659
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
660 @item inherit
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
661 Inherit from the background-pixmap property of a face. Can only be
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
662 instanced as @code{mono-pixmap}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
663 @end table
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
664
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
665 There are two convenience variables for use with the XBM and XPM image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
666 formats.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
667
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
668 @defvar xpm-color-symbols
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
669 This variable holds definitions of logical color-names used when reading
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
670 XPM files. Elements of this list should be of the form
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
671 @code{(@var{color-name} @var{form-to-evaluate})}. The @var{color-name}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
672 should be a string, which is the name of the color to define; the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
673 @var{form-to-evaluate} should evaluate to a color specifier object, or a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
674 string to be passed to @code{make-color-instance} (@pxref{Colors}). If
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
675 a loaded XPM file references a symbolic color called @var{color-name},
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
676 it will display as the computed color instead.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
677
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
678 The default value of this variable defines the logical color names
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
679 @samp{"foreground"} and @samp{"background"} to be the colors of the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
680 @code{default} face.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
681 @end defvar
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
682
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
683 @defvar x-bitmap-file-path
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
684 A list of the directories in which X bitmap files may be found. If @code{nil},
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
685 this is initialized from the @samp{"*bitmapFilePath"} resource. This is
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
686 used by the @code{make-image-instance} function (however, note that if
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
687 the environment variable @samp{XBMLANGPATH} is set, it is consulted
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
688 first).
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
689 @end defvar
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
690
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
691
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
692 @node Image Instances
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
693 @subsection Image Instances
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
694 @cindex image instances
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
695
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
696 Image-instance objects encapsulate the way a particular image (pixmap,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
697 etc.) is displayed on a particular device.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
698
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
699 In most circumstances, you do not need to directly create image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
700 instances; use a glyph instead. However, it may occasionally be useful
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
701 to explicitly create image instances, if you want more control over the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
702 instantiation process.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
703
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
704 @defun image-instance-p object
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
705 This function returns non-@code{nil} if @var{object} is an image instance.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
706 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
707
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
708 @menu
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
709 * Image Instance Types:: Each image instances has a particular type.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
710 * Image Instance Functions:: Functions for working with image instances.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
711 @end menu
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
712
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
713
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
714 @node Image Instance Types
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
715 @subsubsection Image Instance Types
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
716 @cindex image instance types
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
717
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
718 Image instances come in a number of different types. The type
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
719 of an image instance specifies the nature of the image: Whether
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
720 it is a text string, a mono pixmap, a color pixmap, etc.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
721
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
722 The valid image instance types are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
723
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
724 @table @code
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
725 @item nothing
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
726 Nothing is displayed.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
727
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
728 @item text
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
729 Displayed as text. The foreground and background colors and the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
730 font of the text are specified independent of the pixmap. Typically
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
731 these attributes will come from the face of the surrounding text,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
732 unless a face is specified for the glyph in which the image appears.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
733
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
734 @item mono-pixmap
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
735 Displayed as a mono pixmap (a pixmap with only two colors where the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
736 foreground and background can be specified independent of the pixmap;
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
737 typically the pixmap assumes the foreground and background colors of
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
738 the text around it, unless a face is specified for the glyph in which
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
739 the image appears).
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
740 @item color-pixmap
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
741
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
742 Displayed as a color pixmap.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
743
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
744 @item pointer
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
745 Used as the mouse pointer for a window.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
746
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
747 @item subwindow
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
748 A child window that is treated as an image. This allows (e.g.)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
749 another program to be responsible for drawing into the window.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
750 Not currently implemented.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
751 @c #### Check status of subwindows ... I thought Andy implemented them.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
752
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
753 @item widget
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
754 An active GUI element implemented as a ``widget'' or ``control'' of the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
755 underlying window system.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
756 @end table
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
757
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
758 The following functions are used to check whether an image instance type
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
759 is valid in the running XEmacs.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
760
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
761 @defun valid-image-instance-type-p type
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
762 This function returns non-@code{nil} if @var{type} is a valid image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
763 instance type.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
764 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
765
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
766 @defun image-instance-type-list
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
767 This function returns a list of the valid image instance types.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
768 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
769
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
770 The following functions are used to determine the type of an image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
771 instance.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
772
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
773 @defun image-instance-type image-instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
774 Return the type of the given image instance. The return
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
775 value will be one of @code{nothing}, @code{text}, @code{mono-pixmap},
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
776 @code{color-pixmap}, @code{pointer}, @code{subwindow}, or @code{widget}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
777 @c #### Check status of subwindows ... I thought Andy implemented them.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
778 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
779
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
780 @defun text-image-instance-p object
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
781 Return non-@code{nil} if @var{object} is an image instance of type
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
782 @code{text}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
783 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
784
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
785 @defun mono-pixmap-image-instance-p object
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
786 Return non-@code{nil} if @var{object} is an image instance of type
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
787 @code{mono-pixmap}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
788 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
789
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
790 @defun color-pixmap-image-instance-p object
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
791 Return non-@code{nil} if @var{object} is an image instance of type
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
792 @code{color-pixmap}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
793 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
794
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
795 @defun pointer-image-instance-p object
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
796 Return non-@code{nil} if @var{object} is an image instance of type
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
797 @code{pointer}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
798 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
799
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
800 @defun subwindow-image-instance-p object
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
801 Return non-@code{nil} if @var{object} is an image instance of type
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
802 @code{subwindow}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
803 @c #### Check status of subwindows ... I thought Andy implemented them.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
804 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
805
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
806 @defun nothing-image-instance-p object
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
807 Return non-@code{nil} if @var{object} is an image instance of type
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
808 @code{nothing}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
809 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
810
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
811 @defun widget-image-instance-p object
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
812 Return non-@code{nil} if @var{object} is an image instance of type
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
813 @code{widget}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
814 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
815
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
816
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
817 @node Image Instance Functions
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
818 @subsubsection Image Instance Functions
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
819
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
820 @defun make-image-instance data &optional domain dest-types noerror
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
821 This function creates a new image-instance object.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
822
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
823 @var{data} is an image instantiator, which describes the image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
824 (@pxref{Image Specifiers}).
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
825
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
826 @var{dest-types} should be a list of allowed image instance types that
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
827 can be generated. The @var{dest-types} list is unordered. If multiple
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
828 destination types are possible for a given instantiator, the ``most
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
829 natural'' type for the instantiator's format is chosen. These are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
830
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
831 @table @code
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
832 @item XBM
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
833 @c #### check xface
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
834 @itemx xface
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
835 @code{mono-pixmap}, then @code{color-pixmap}, then @code{pointer}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
836
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
837 @item XPM
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
838 @itemx GIF
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
839 @itemx JPEG
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
840 @itemx PNG
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
841 @itemx TIFF
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
842 @code{color-pixmap}, then @code{mono-pixmap}, then @code{pointer}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
843
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
844 @item string
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
845 @itemx formatted-string formats
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
846 @code{text}, then @code{mono-pixmap} (not currently implemented), then
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
847 @code{color-pixmap} (not currently implemented).
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
848
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
849 @item mswindows-resource
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
850 For pointer resources, @code{pointer}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
851
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
852 For the others, @code{color-pixmap}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
853 @end table
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
854
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
855 @c #### So what? This is a reference manual, list them, you lazy bastard!
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
856 The other formats can only be instantiated as one type.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
857
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
858 If you want to control more specifically the order of the types into
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
859 which an image is instantiated, call @code{make-image-instance}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
860 repeatedly until it succeeds, passing less and less preferred
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
861 destination types each time.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
862
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
863 If @var{dest-types} is omitted, all possible types are allowed.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
864
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
865 @var{domain} specifies the domain to which the image instance will be
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
866 attached. This domain is termed the @dfn{governing domain}. The type
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
867 of the governing domain depends on the image instantiator format.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
868 (Although, more correctly, it should probably depend on the image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
869 instance type.) For example, pixmap image instances are specific to a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
870 device, but widget image instances are specific to a particular XEmacs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
871 window because in order to display such a widget when two windows onto
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
872 the same buffer want to display the widget, two separate underlying
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
873 widgets must be created. (That's because a widget is actually a child
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
874 window-system window, and all window-system windows have a unique
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
875 existence on the screen.) This means that the governing domain for a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
876 pixmap image instance will be some device (most likely, the only
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
877 existing device), whereas the governing domain for a widget image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
878 instance will be some XEmacs window.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
879
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
880 If you specify an overly general @var{domain} (e.g. a frame when a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
881 window was wanted), an error is signaled. If you specify an overly
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
882 specific @var{domain} (e.g. a window when a device was wanted), the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
883 corresponding general domain is fetched and used instead. For
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
884 @code{make-image-instance}, it makes no difference whether you specify
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
885 an overly specific domain or the properly general domain derived from
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
886 it. However, it does matter when creating an image instance by
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
887 instantiating a specifier or glyph (e.g. with
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
888 @code{glyph-image-instance}), because the more specific domain causes
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
889 spec lookup to start there and proceed to more general domains. (It
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
890 would also matter when creating an image instance with an instantiator
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
891 format of @code{inherit}, but we currently disallow this.)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
892 @c #### We should fix that.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
893
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
894 If omitted, @var{domain} defaults to the selected window.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
895
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
896 @var{noerror} controls what happens when the image cannot be generated.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
897 If @code{nil}, an error message is generated. If @code{t}, no messages
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
898 are generated and this function returns @code{nil}. If anything else, a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
899 warning message is generated and this function returns @code{nil}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
900 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
901
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
902 @defun colorize-image-instance image-instance foreground background
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
903 This function makes the image instance be displayed in the given
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
904 colors. Image instances come in two varieties: bitmaps, which are 1
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
905 bit deep which are rendered in the prevailing foreground and background
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
906 colors; and pixmaps, which are of arbitrary depth (including 1) and
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
907 which have the colors explicitly specified. This function converts a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
908 bitmap to a pixmap. If the image instance was a pixmap already,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
909 nothing is done (and @code{nil} is returned). Otherwise @code{t} is
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
910 returned.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
911 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
912
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
913 The following functions are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
914
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
915 @defun image-instance-name image-instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
916 This function returns the name of the given image instance. The name is
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
917 typically taken from the @code{:file} property of the instantiator if
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
918 present, otherwise from the @code{:data} property.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
919 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
920
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
921 @defun image-instance-domain image-instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
922 Return the governing domain of the given @var{image-instance}. The
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
923 governing domain of an image instance is the domain that the image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
924 instance is specific to. It is @emph{NOT} necessarily the domain that
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
925 was given to the call to @code{specifier-instance} that resulted in the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
926 creation of this image instance. See @code{make-image-instance} for
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
927 more information on governing domains.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
928 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
929
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
930 @defun image-instance-string image-instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
931 This function returns the string of the given image instance. This will
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
932 only be non-@code{nil} for text image instances.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
933 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
934
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
935 @defun image-instance-file-name image-instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
936 This function returns the file name from which @var{image-instance} was
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
937 read, if known.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
938 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
939
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
940 @defun image-instance-mask-file-name image-instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
941 This function returns the file name from which @var{image-instance}'s
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
942 mask was read, if known.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
943 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
944
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
945 Pixmaps are considered to be three-dimensional. The height and width of
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
946 the pixel array that is displayed, and the color depth of its pixels,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
947 are accessed with these functions.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
948
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
949 @defun image-instance-depth image-instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
950 This function returns the depth of the image instance. This is 0 for a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
951 mono pixmap, or a positive integer for a color pixmap.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
952 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
953
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
954 @defun image-instance-height image-instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
955 This function returns the height of the image instance, in pixels.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
956 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
957
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
958 @defun image-instance-width image-instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
959 This function returns the width of the image instance, in pixels.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
960 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
961
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
962 The hotspot is a point relative to the origin of the pixmap. When
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
963 an image is used as a mouse pointer, the hotspot is the point on the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
964 image that sits over the location that the pointer points to. This is,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
965 for example, the tip of the arrow or the center of the crosshairs.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
966
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
967 These functions access the coordinates of the hotspot. They simply
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
968 return @code{nil} for a non-pointer image instance.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
969
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
970 @defun image-instance-hotspot-x image-instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
971 This function returns the X coordinate of the image instance's hotspot,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
972 if known.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
973 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
974
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
975 @defun image-instance-hotspot-y image-instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
976 This function returns the Y coordinate of the image instance's hotspot,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
977 if known.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
978 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
979
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
980 Mono pixmaps and pointers may have their foreground and background
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
981 colors set when instanced. Use these functions to access color
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
982 information.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
983
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
984 @defun image-instance-foreground image-instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
985 This function returns the foreground color of @var{image-instance}, if
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
986 applicable. This will be a color instance or @code{nil}. (It will only
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
987 be non-@code{nil} for colorized mono pixmaps and for pointers.)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
988 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
989
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
990 @defun image-instance-background image-instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
991 This function returns the background color of @var{image-instance}, if
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
992 applicable. This will be a color instance or @code{nil}. (It will only
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
993 be non-@code{nil} for colorized mono pixmaps and for pointers.)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
994 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
995
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
996
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
997 @node Using Glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
998 @section Using Glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
999
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1000 Glyph usage is unfortunately somewhat arcane. (For discussion of
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1001 rationale, @ref{Glyphs,,,Internals}.) Because they are not ``text,''
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1002 they cannot be inserted directly into a buffer. Instead, they are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1003 values of properties of extents attached to buffers or strings, values
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1004 of global variables such as mouse pointers, or as a component of a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1005 complex data structure such as a toolbar initializer. Although these
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1006 uses could probably streamlined, each structure has its own
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1007 requirements. Since glyphs are very flexible, it is possible to create
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1008 applications like the @file{edit-toolbar} and @file{xpm-mode} libraries
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1009 which display glyphs in a buffer (for reference while editing) that are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1010 normally used in a different context.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1011
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1012 Usage of glyphs can roughly be categorized as follows:
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1013
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1014 @table @strong
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1015 @item Buffer glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1016 Glyphs that are inserted in a buffer may be used for their own sake (for
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1017 example, image display in @file{w3}), as an accurate representation of
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1018 text that can't be displayed in usual fonts (equation display in
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1019 @file{preview-latex}), or as annotations (such as a marginal indication
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1020 of a bookmark). Glyphs are attached to buffers via extents.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1021
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1022 @item Redisplay glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1023 Glyphs can be used to create XEmacs-specific ``fonts''. For example,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1024 the character that indicates truncation of lines is implemented as the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1025 @code{truncation-glyph}. It is also possible to have XEmacs display a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1026 certain character using a custom glyph, via display tables.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1027
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1028 @item Frame glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1029 Glyphs are used to control the appearance of various other components of
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1030 the frame. They can be inserted in the modeline, the favicons are used
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1031 in Web browsers. They are used to specify the labels on toolbar
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1032 buttons. Finally, they can be inserted in the gutters. (The difference
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1033 between a glyph inserted in a gutter and a marginal annotation is that
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1034 the marginal annotation is tied to the text in the buffer. If the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1035 buffer line scrolls out of view, the marginal annotation will, as well.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1036 A gutter glyph does not move with the text.)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1037
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1038 Unfortunately, all these uses are special cases, and have their own
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1039 APIs, in contrast to glyphs in a buffer.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1040
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1041 @item External glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1042 External glyphs simply allow a consistent API for images. The images
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1043 are then passed to external software such as the window system itself
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1044 (mouse cursor shapes) and the window manager (icons to represent
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1045 minimized windows). XEmacs has no role in managing their use.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1046
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1047 @item Subwindow and widget glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1048 These do not constitute a context of use, but rather an important class of
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1049 glyph types. The difference between these and other glyphs is that
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1050 while their geometry is determined by XEmacs, their behavior is managed
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1051 separately, by internal mechanisms in the case of widgets, and
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1052 (possibly) by another process in the case of subwindows.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1053 @c #### Check status of subwindows ... I thought Andy implemented them.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1054 @end table
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1055
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1056 Some simple concrete examples showing how to insert a glyph in a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1057 buffer are presented later. @ref{Glyph Examples}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1058
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1059 ``Creating Glyphs'' explains how to create glyphs. Creating a glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1060 using @code{make-glyph} does not specify @emph{where} the glyph will be
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1061 used, it only specifies @emph{what} the glyph will look like. The next
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1062 four sections explain how to embed glyphs in different display
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1063 contexts. Finally, the last two sections explain the special
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1064 considerations of using glyphs whose behavior is not determined by the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1065 code creating them, but by the glyph itself (a ``widget'' in X11 or
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1066 ``control'' in MS Windows or Aqua), or even by a separate process.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1067
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1068 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1069 * Creating Glyphs:: Creating new glyphs.
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1070 * Buffer Glyphs:: Annotations are glyphs that appear in a buffer.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1071 * Redisplay Glyphs:: Glyphs controlling various redisplay functions.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1072 * Frame Glyphs:: Displaying glyphs in GUI components of the frame.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1073 * External Glyphs:: Icons and mouse pointers for the window system.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1074 * Native GUI Widgets:: Complex active elements treated as a single glyph.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1075 * Subwindows:: Externally-controlled subwindows in buffers.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1076 @c #### Check status of subwindows ... I thought Andy implemented them.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1077 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1078
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1079 @node Creating Glyphs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1080 @subsection Creating Glyphs
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 @defun make-glyph &optional spec-list type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1083 This function creates a new glyph object of type @var{type}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1084
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1085 The optional @var{spec-list} is used to initialize the glyph's image.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1086 It can be any spec-list of @dfn{image instantiator} accepted by
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1087 @code{canonicalize-spec-list}, @ref{Adding Specifications}. An
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1088 individual image instantiator may be a string, which is converted to a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1089 vector according to @code{console-type-image-conversion-list}, or a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1090 vector. The vector's first element specifies the @emph{external} format
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1091 of the data, such as a string, a PNG file, or an MS Windows resource.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1092 This is followed by properties (keyword-value pairs) specifying such
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1093 information as the name of a file containing an image, or pixmap data
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1094 directly. @xref{Image Specifiers}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1095
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1096 The optional @var{type} specifies the type of the glyph. @var{type}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1097 should be one of @code{buffer} (used for glyphs in an extent, the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1098 modeline, the toolbar, or elsewhere in a frame), @code{pointer} (used
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1099 for the mouse-pointer), or @code{icon} (used for a frame's icon), and
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1100 defaults to @code{buffer}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1101 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1102
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1103 @var{spec-list} is the initializer for the glyph's @code{image}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1104 property, which is an image specifier. (Note that @dfn{image} as used
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1105 in the context of a glyph's @code{image} property or in the terms
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1106 @dfn{image specifier}, @dfn{image instantiator}, or @dfn{image instance}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1107 does not refer to what people normally think of as an image (which in
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1108 XEmacs is called a @dfn{pixmap}), but to any graphical element---a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1109 pixmap, a widget, or even a block of text, when used in the places that
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1110 call for a glyph.)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1111
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1112 The most common form of @var{spec-list} is a single image instantiator.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1113 (@strong{Compatibility note:} in GNU Emacs 21, a string used to
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1114 instantiate an image is interpreted as the name of an image file, which
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1115 is searched for and instantiated.) The conversion controlled by
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1116 @code{console-type-image-conversion-list} typically attempts to look up
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1117 the string as a file name in XEmacs's data directory path, and if this
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1118 fails, defaults to displaying the string as a text image instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1119 (@emph{i.e.}. the string itself.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1120
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1121 Fine control of a particular specification is provided by using a vector
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1122 as the image instantiator. More complicated instantiators allow lists
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1123 of instantiators to be specified (which are tried in order), or mappings
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1124 from locales to lists of instantiators, @emph{etc}. @xref{Specifiers},
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1125 for more information about specification formats.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1126
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1127 As well as using @var{spec-list} to initialize the glyph, you can set
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1128 specifications using @code{set-glyph-image}. The glyph itself is not
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1129 actually a specifier, but rather is an object containing an image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1130 specifier (as well as other properties seldom set by user code).
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1131 Therefore, you cannot set or access specifications for the glyph's image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1132 by directly using @code{set-specifier}, @code{specifier-instance} or the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1133 like on the glyph; instead use them on @code{(glyph-image @var{glyph})}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1134 or use the convenience functions @code{set-glyph-image},
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1135 @code{glyph-image-instance}, and @code{glyph-image}.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1136
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1137 Glyph types reflect the fact that glyphs are used in contexts like
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1138 pointers and window manager icons, which are defined by external
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1139 programs such as the window system or window manager. These require
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1140 somewhat different @emph{internal} format, which is opaque to the user.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1141
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1142 It is extremely rare that you will ever have to specify a value for
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1143 @var{type}, which should be one of @code{buffer} (used for glyphs in an
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1144 extent, the modeline, the toolbar, or elsewhere in a buffer),
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1145 @code{pointer} (used for the mouse-pointer), or @code{icon} (used for a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1146 frame's icon), and defaults to @code{buffer}. The only cases where it
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1147 needs to be specified is when creating icon or pointer glyphs, and in
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1148 both cases the necessary glyphs have already been created at startup and
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1149 are accessed through the appropriate variables,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1150 e.g. @code{text-pointer-glyph} (or in general, any
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1151 @samp{*-pointer-glyph}) and @code{frame-icon-glyph}. User code should
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1152 never need to create @code{pointer} or @code{icon} glyphs. @xref{Glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1153 Types}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1154
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1155 There are a few other glyph creation functions, normally used only
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1156 internally or at XEmacs initialization.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1157
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1158 @defun make-glyph-internal &optional type
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1159 This function creates a new, uninitialized glyph of type @var{type}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1160 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1161
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1162 @defun make-pointer-glyph &optional spec-list
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1163
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1164 Return a new @code{pointer-glyph} object with the specification list
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1165 @var{spec-list}. This function is equivalent to calling
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1166 @code{make-glyph} with a @var{type} of @code{pointer}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1167 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1168
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1169 @code{make-pointer-glyph} is normally used only by XEmacs initialization
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1170 code. It is extremely unlikely that you will ever need to create a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1171 pointer glyph. Instead, you probably want to be calling
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1172 @code{set-glyph-image} on an existing glyph,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1173 e.g. @code{text-pointer-glyph}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1174
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1175 @defun make-icon-glyph &optional spec-list
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1176
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1177 Return a new @code{icon-glyph} object with the specification list
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1178 @var{spec-list}. This function is equivalent to calling
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1179 @code{make-glyph} with a @var{type} of @code{icon}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1180 @end defun
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1181
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1182 @code{make-icon-glyph} is normally used only by XEmacs initialization
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1183 code. It is extremely unlikely that you will ever need to create a icon
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1184 glyph. Instead, you probably want to be calling @code{set-glyph-image}
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1185 on the existing glyph, @code{frame-icon-glyph}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1186
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1187
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1188 @node Buffer Glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1189 @subsection Buffer Glyphs
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1190
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1191 Creating a glyph using @code{make-glyph} does not specify @emph{where}
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1192 the glyph will be used, it only specifies @emph{what} the glyph will
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1193 look like. Once you have created a glyph, you specify where it will be
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1194 used by attaching it to an extent as a @emph{begin-glyph} or
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1195 @emph{end-glyph}.
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1196
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1197 @table @code
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1198 @item buffer text
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1199 To insert a glyph into a buffer, create an extent in the buffer and then
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1200 use @code{set-extent-begin-glyph} or @code{set-extent-end-glyph} to set
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1201 a glyph to be displayed at the corresponding edge of the extent. (It is
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1202 common to create zero-width extents for this purpose.)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1203
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1204 @item margins
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1205 To insert a glyph into the left or right margin of a buffer, first
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1206 make sure the margin is visible by setting a value for the specifiers
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1207 @code{left-margin-width} or @code{right-margin-width}. (Not strictly necessary
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1208 when using margin glyphs with layout policy @code{whitespace}.) Follow
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1209 the same procedure above for inserting a glyph in a buffer, then
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1210 set a non-default layout policy for the glyph using
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1211 @code{set-extent-begin-glyph-layout} or @code{set-extent-end-glyph-layout}.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1212 Alternatively, use the high-level annotations API (see
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1213 @code{make-annotation}). (In fact, you can also use the annotations
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1214 API for glyphs in a buffer, by setting a layout policy of @code{text}.)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1215
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1216 @end table
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1217
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1218
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1219 @node Redisplay Glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1220 @subsection Redisplay Glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1221
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1222 To use a glyph to control the shape of miscellaneous redisplay effects
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1223 such as the truncation and continuation markers, set the appropriate
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1224 existing glyph variables with @code{set-glyph-image}. See
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1225 @code{continuation-glyph}, @code{control-arrow-glyph},
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1226 @code{hscroll-glyph}, @code{invisible-text-glyph},
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1227 @code{octal-escape-glyph}, and @code{truncation-glyph}. See also
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1228 @code{overlay-arrow-string}, an odd redisplay leftover which can be set
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1229 to a glyph you created, and will cause the glyph to be displayed on top
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1230 of the text position specified in the marker stored in
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1231 @code{overlay-arrow-position}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1232
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1233 To use a glyph in a display table (i.e. to control the appearance of any
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1234 individual character), create the appropriate character glyphs and then
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1235 set a specification for the specifier @code{current-display-table},
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1236 which controls the appearance of characters. You can also set an
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1237 overriding display table for use with text displayed in a particular
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1238 face; see @code{set-face-display-table} and @code{make-display-table}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1239 #### Note: Display tables do not currently support general Mule
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1240 characters. They will be overhauled at some point to support this
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1241 and to provide other features required under Mule. @ref{Display Tables}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1242
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1243 Glyphs are not actually used as the background pixmaps of faces, but the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1244 API is similar. The
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1245 background pixmap of a face is actually an image specifier -- probably
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1246 the only place in XEmacs where an image specifier occurs outside of a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1247 glyph. If you would like to use a glyph's image as a background pixmap,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1248 you can extract it with @code{glyph-image}, and then add it to a face.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1249 @xref{Face Convenience Functions}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1250
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1251 @defvr Glyph truncation-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1252 This variable specifies what is displayed at the end of truncated lines.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1253 @end defvr
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1254
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1255 @defvr Glyph continuation-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1256 This variable specifies what is displayed at the end of wrapped lines.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1257 @end defvr
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1258
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1259 @defvr Glyph octal-escape-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1260 This variable specifies what to prefix character codes displayed in octal
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1261 with.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1262 @end defvr
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1263
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1264 @defvr Glyph hscroll-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1265 This variable specifies what to display at the beginning of horizontally
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1266 scrolled lines.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1267 @end defvr
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1268
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1269 @defvr Glyph invisible-text-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1270 This variable specifies what to use to indicate the presence of
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1271 invisible text. This is the glyph that is displayed when an ellipsis is
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1272 called for, according to @code{selective-display-ellipses} or
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1273 @code{buffer-invisibility-spec}). Normally this is three dots (``...'').
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1274 @end defvr
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1275
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1276 @defvr Glyph control-arrow-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1277 This variable specifies what to use as an arrow for control characters.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1278 @end defvr
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1279
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1280
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1281 @node Frame Glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1282 @subsection Frame Glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1283
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1284 There are also a number of special objects whose appearance is specified
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1285 by a glyph. Most of these a global objects that you update with
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1286 @code{set-glyph-image}, such as mouse pointers. Frame icons, toolbar
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1287 button icons, and the modeline are the main non-text objects which
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1288 accept glyphs as elements.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1289
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1290 @table @code
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1291 @item modeline
2127
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1292 A glyph may be displayed in the modeline by inserting the glyph as one
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1293 of the elements of the modeline format. (Unfortunately you can't
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1294 currently put a begin glyph or end glyph on one of the modeline
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1295 extents---they're ignored.)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1296
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1297 @item toolbar
2127
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1298 To insert a glyph into a toolbar, specify it as the icon part of a toolbar
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1299 button, which in turn must be part of a toolbar instantiator (typically
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1300 set on the specifier @code{default-toolbar}).
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1301 See @code{default-toolbar} for more information. (As a convenience, you
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1302 may use a symbol in place of the glyph list in the toolbar button
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1303 instantiator; the symbol is evalled to get the glyph list. This
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1304 facilitates both creating the toolbar instantiator and modifying
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1305 individual glyphs in a toolbar later on. For example, you can change
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1306 the way that the Mail toolbar button looks by modifying the value of the
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1307 variable @code{toolbar-mail-icon} (in general, @code{toolbar-*-icon})
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1308 and then calling @code{(set-specifier-dirty-flag default-toolbar)}.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1309 (#### Unfortunately this doesn't quite work the way it should; the
2127
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1310 change will appear in new frames, but not existing ones, because once an
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1311 image has been displayed the pixmap replaces the symbol for those domains.)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1312
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1313 @item gutter
2127
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1314 To insert a glyph into a gutter, use
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1315 @code{set-extent-begin-glyph} or @code{set-extent-end-glyph} to set a
2127
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1316 glyph to be displayed at the corresponding edge of extent in a string,
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1317 similar to the way you insert glyphs in a buffer. Then insert the
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1318 string into the gutter @ref{Specifying a Gutter}. Glyphs that are
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1319 frequently used in this way are @code{tab control} and @code{progress
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1320 bar} glyphs.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1321
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1322 @end table
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1323
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1324
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1325 @node External Glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1326 @subsection External Glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1327 @cindex frame icon
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1328 @cindex icon, frame
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1329 @cindex mouse cursor
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1330 @cindex cursor (mouse)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1331 @cindex pointer (mouse)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1332 @cindex mouse pointer
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1333
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1334 There are two special kinds of glyph that are not displayed by XEmacs.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1335 Instead, they are used to set the appearance of iconified frames and the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1336 mouse pointer. Because these uses are constrained by the window system,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1337 icons and pointers have their own special types @xref{Glyph Types}.
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1338
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1339 You may use a glyph as the icon for a frame. Do not create a new glyph;
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1340 instead, change the specifications for the existing glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1341 @code{frame-icon-glyph} with @code{set-glyph-image}. This is a unique,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1342 predefined object. Although the natural usage is to set specifications
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1343 for the global locale or a frame locale, you can also arrange for a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1344 special icon when a frame's selected window displays a particular buffer
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1345 by using a buffer locale.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1346
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1347 The shape of the mouse pointer when over a particular section of a frame
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1348 is controlled using various glyph variables. Since the image of a glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1349 is a specifier, it can be controlled on a per-buffer, per-frame, per-window,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1350 or per-device basis.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1351
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1352 To use a glyph as the mouse pointer, in general you do not create a new
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1353 glyph, but rather you change the specifications of various existing
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1354 glyphs, such as @code{text-pointer-glyph} for the pointer used over
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1355 text, @code{modeline-pointer-glyph} for the pointer used over the
2127
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1356 modeline, etc. Do an apropos over @samp{pointer-glyph} to find all of
4657b5a54253 [xemacs-hg @ 2004-06-14 10:24:44 by stephent]
stephent
parents: 2028
diff changeset
1357 them. (Note also that you can temporarily set the mouse pointer to some
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1358 specific shape by using @code{set-frame-pointer}, which takes an image
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1359 instance, as obtained from calling @code{glyph-image-instance} on a glyph
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1360 of type @code{pointer} -- either one of the above-mentioned variables or
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1361 one you created yourself. (See below for what it means to create a
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1362 glyph of type @code{pointer}.) This pointer will last only until the
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1363 next mouse motion event is processed or certain other things happen,
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1364 such as creating or deleting a window. (In fact, the above-mentioned
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1365 pointer glyph variables are implemented as part of the default handler
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1366 for mouse motion events. If you want to customize this behavior, take a
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1367 look at @code{mode-motion-hook}, or @code{mouse-motion-handler} if you
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1368 really want to get low-level.)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1369
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1370 You should use @code{set-glyph-image} to set the following variables,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1371 @emph{not} @code{setq}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1372
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1373 @defvr Glyph text-pointer-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1374 This variable specifies the shape of the mouse pointer when over text.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1375 @end defvr
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1376
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1377 @defvr Glyph nontext-pointer-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1378 This variable specifies the shape of the mouse pointer when over a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1379 buffer, but not over text. If unspecified in a particular domain,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1380 @code{text-pointer-glyph} is used.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1381 @end defvr
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1382
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1383 @defvr Glyph modeline-pointer-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1384 This variable specifies the shape of the mouse pointer when over the modeline.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1385 If unspecified in a particular domain, @code{nontext-pointer-glyph} is used.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1386 @end defvr
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1387
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1388 @defvr Glyph selection-pointer-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1389 This variable specifies the shape of the mouse pointer when over a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1390 selectable text region. If unspecified in a particular domain,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1391 @code{text-pointer-glyph} is used.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1392 @end defvr
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1393
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1394 @defvr Glyph gc-pointer-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1395 This variable specifies the shape of the mouse pointer when a garbage
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1396 collection is in progress. If the selected window is on a window system
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1397 and this glyph specifies a value (i.e. a pointer image instance) in the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1398 domain of the selected window, the pointer will be changed as specified
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1399 during garbage collection. Otherwise, a message will be printed in the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1400 echo area, as controlled by @code{gc-message}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1401 @end defvr
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1402
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1403 @defvr Glyph busy-pointer-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1404 This variable specifies the shape of the mouse pointer when XEmacs is busy.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1405 If unspecified in a particular domain, the pointer is not changed
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1406 when XEmacs is busy.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1407 @end defvr
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1408
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1409 @defvr Glyph menubar-pointer-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1410 This variable specifies the shape of the mouse pointer when over the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1411 menubar. If unspecified in a particular domain, the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1412 window-system-provided default pointer is used.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1413 @end defvr
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1414
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1415 @defvr Glyph scrollbar-pointer-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1416 This variable specifies the shape of the mouse pointer when over a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1417 scrollbar. If unspecified in a particular domain, the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1418 window-system-provided default pointer is used.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1419 @end defvr
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1420
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1421 @defvr Glyph toolbar-pointer-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1422 This variable specifies the shape of the mouse pointer when over a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1423 toolbar. If unspecified in a particular domain,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1424 @code{nontext-pointer-glyph} is used.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1425 @end defvr
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1426
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1427 Internally, these variables are implemented in
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1428 @code{default-mouse-motion-handler}, and thus only take effect when the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1429 mouse moves. That function calls @code{set-frame-pointer}, which sets
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1430 the current mouse pointer for a frame.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1431
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1432 @defun set-frame-pointer frame image-instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1433 This function sets the mouse pointer of @var{frame} to the given pointer
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1434 image instance. You should not call this function directly.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1435 (If you do, the pointer will change again the next time the mouse moves.)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1436 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1437
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1438
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1439 @node Native GUI Widgets
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1440 @subsection Native GUI Widgets
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1441 @cindex native widget
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1442
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1443 A ``native widget'' is a primitive GUI object defined either by the host
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1444 GUI platform or an external toolkit, and accessed from Lisp as a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1445 ``glyph.''
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1446
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1447 @menu
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1448 * Introduction to Widgets:: Native widgets provide tight integration of
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1449 GUI features with the platform GUI.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1450 * Lisp API to Native Widgets:: Native widgets are glyphs.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1451 * Layouts:: Specifying composite widgets from Lisp.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1452 * Primitive Widgets:: Catalogue of available native widgets.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1453 @end menu
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1454
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1455 @node Introduction to Widgets
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1456 @subsubsection Introduction to Native Widgets and Subwindow Glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1457
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1458 Traditionally Emacsen have hidden the GUI apparatus from the Lisp
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1459 programmer, but in XEmacs 21.4 the ability to embed autonomous GUI
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1460 objects, called @dfn{native widgets}, in text was added to Lisp. They
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1461 are handled as @emph{glyphs}. Unlike traditional XEmacs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1462 glyphs such images and strings, native widgets are opaque to XEmacs, and
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1463 must be able to redraw themselves because they are implemented as
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1464 subwindows, not as graphics drawn by XEmacs into the text window.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1465
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1466 Primitive widgets are coded in C using the underlying GUI toolkit, and
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1467 thus are beyond the scope of the @emph{XEmacs Lisp Reference Manual}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1468 However, composite widgets can be created in Lisp using ``layouts,''
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1469 which are horizontal or vertical arrays of subwidgets. For example, the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1470 search dialog is formatted using layouts.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1471
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1472 @node Lisp API to Native Widgets
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1473 @subsubsection Lisp API to Native Widgets
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1474
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1475 Native widgets are manipulated as @emph{glyphs} (@pxref{Glyphs}). Thus
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1476 they are created using @code{make-glyph}, with a format of one of the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1477 widget types and a @code{:data} property specific to the widget being
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1478 instanced.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1479
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1480 However, there is a technical difference between widgets and other kinds
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1481 of glyphs that is theoretically important. Because widgets
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1482 are active (that is, they can respond to user input events themselves),
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1483 it is possible for the user to become aware that two appearances of the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1484 ``same'' glyph are actually separate instances. For example, if a user
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1485 changes an image glyph from red to blue, and the buffer containing the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1486 glyph appears in more than one window, the user will perceive all the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1487 appearances to change from red to blue simultaneously. However, suppose
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1488 the glyph is a button glyph (@emph{e.g.}, as used in the Customize
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1489 buffer for the Set, Save, and Done buttons). Then if the Customize
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1490 buffer appears in several windows at the same time, and the user clicks
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1491 on the button, she will only perceive the button to be depressed in the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1492 window where she clicked the button.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1493
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1494 It seems from this example that it is unlikely to be a problem in
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1495 practice. When the user is faced with an active widget, it seems likely
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1496 that attention will focus on the widget being manipulated, and having
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1497 other instances of the widget respond simultaneously might be more
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1498 disconcerting than the actual case.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1499
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1500 @node Layouts
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1501 @subsubsection Layouts
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1502
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1503 An XEmacs @dfn{layout} is a one-dimensional array of glyphs. It is a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1504 widget for controlling the positioning of children underneath it.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1505 Through the use of nested layouts, a widget hierarchy can be created
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1506 which can have the appearance of any standard dialog box or similar
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1507 arrangement; all of this is counted as one "glyph" and could appear in
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1508 many of the places that expect a single glyph.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1509
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1510 (There are also @dfn{native layouts}, but I don't know what these are or
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1511 how they are used.)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1512
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1513 A layout descriptor is an image instantiator, @emph{i.e.}, a vector of
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1514 the form @samp{[FORMAT KEY-1 VALUE-1 KEY-2 VALUE-2 ...]} with format
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1515 @code{layout}, and properties
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1516
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1517 @c #### need defaults for these
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1518 @table @code
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1519 @item :orientation
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1520 Specifies the orientation of the contained array of glyphs. The value
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1521 must be one of the symbols @code{horizontal} or @code{vertical}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1522
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1523 @item :horizontally-justify
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1524 Specifies the horizontal justification of the items in the array. The
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1525 value must be one of the symbols @code{:right}, @code{:center}, or
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1526 @code{:left}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1527
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1528 @item :vertically-justify
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1529 Specifies the vertical justification of the items in the array. The
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1530 value must be one of the symbols @code{:top}, @code{:center}, or
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1531 @code{:bottom}.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1532
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1533 @item :justify
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1534 Specifies justification. #### not understood.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1535
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1536 @item :border
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1537 A glyph to place in the border. The value must be an image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1538 instantiator.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1539
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1540 @item :items
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1541 The glyphs controlled by the layout. The value must be a list of image
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1542 instantiators.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1543 @end table
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1544
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1545 Here is the specification of the search dialog widget created by
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1546 @code{make-search-dialog} in the @file{dialog-items} library, which
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1547 makes use of recursive layouts.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1548
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1549 @example
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1550 (make-glyph
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1551 `[layout
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1552 :orientation horizontal
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1553 :vertically-justify top
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1554 :horizontally-justify center
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1555 :border [string :data "Search"]
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1556 :items
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1557 ([layout :orientation vertical
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1558 :justify top ; implies left also
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1559 :items
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1560 ([string :data "Search for:"]
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1561 [button :descriptor "Match Case"
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1562 :style toggle
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1563 :selected (not case-fold-search)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1564 :callback (setq case-fold-search
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1565 (not case-fold-search))]
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1566 [button :descriptor "Regular Expression"
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1567 :style toggle
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1568 :selected search-dialog-regexp
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1569 :callback (setq search-dialog-regexp
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1570 (not search-dialog-regexp))]
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1571 [button :descriptor "Forwards"
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1572 :style radio
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1573 :selected search-dialog-direction
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1574 :callback (setq search-dialog-direction t)]
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1575 [button :descriptor "Backwards"
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1576 :style radio
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1577 :selected (not search-dialog-direction)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1578 :callback (setq search-dialog-direction nil)]
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1579 )]
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1580 [layout :orientation vertical
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1581 :vertically-justify top
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1582 :horizontally-justify right
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1583 :items
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1584 ([edit-field :width 15 :descriptor "" :active t
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1585 :initial-focus t]
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1586 [button :width 10 :descriptor "Find Next"
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1587 :callback-ex
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1588 (lambda (image-instance event)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1589 (search-dialog-callback ,parent
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1590 image-instance
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1591 event))]
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1592 [button :width 10 :descriptor "Cancel"
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1593 :callback-ex
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1594 (lambda (image-instance event)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1595 (isearch-dehighlight)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1596 (delete-frame
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1597 (event-channel event)))])])])
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1598 @end example
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1599
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1600 @node Primitive Widgets
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1601 @subsubsection Primitive Widgets
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1602
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1603 @c #### the following table should be replaced with a menu of nodes
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1604 @table @code
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1605 @item button
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1606 A button widget; either a push button, radio button or toggle
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1607 button.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1608
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1609 @item combo-box
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1610 A drop list of selectable items in a widget, for editing text.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1611
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1612 @item edit-field
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1613 A text editing widget.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1614
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1615 @item label
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1616 A static, text-only, widget; for displaying text.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1617
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1618 @item progress-gauge
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1619 A sliding widget, for showing progress.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1620
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1621 @item tab-control
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1622 A tab widget; a series of user selectable tabs.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1623
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1624 @item tree-view
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1625 A folding widget.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1626
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1627 @item scrollbar
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1628 A scrollbar widget. (#### Probably not the same as the scrollbar
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1629 controlling an Emacs window.)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1630 @end table
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1631
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1632
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1633 @node Subwindows
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1634 @subsection Subwindows
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1635
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1636 Subwindows are not currently implemented.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1637 @c #### Check status of subwindows ... I thought Andy implemented them.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1638
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1639 @defun subwindowp object
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1640 This function returns non-@code{nil} if @var{object} is a subwindow.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1641 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1642
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1643
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1644 @node Manipulating Glyphs
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1645 @section Manipulating Glyphs
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1646
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1647 Each glyphs has properties that may be accessed. Most of these can
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1648 also be set after the glyph is initialized, with the exception of the
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1649 glyph's type. This is not a real restriction, as it is almost never
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1650 useful to create glyphs of types other than @code{buffer}.
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1651
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1652 @menu
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1653 * Glyph Properties:: Accessing and modifying a glyph's properties.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1654 * Glyph Convenience Functions:: Accessing particular properties of a glyph.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1655 * Glyph Dimensions:: Determining the height, width, etc. of a glyph.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1656 * Glyph Types:: Each glyph has a particular type.
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1657 @end menu
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1658
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1659
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1660 @node Glyph Properties
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1661 @subsection Glyph Properties
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1662
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1663 Each glyph has a list of properties, which control all of the aspects of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1664 the glyph's appearance. The following symbols have predefined meanings:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1665
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1666 @table @code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1667 @item image
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1668 The image used to display the glyph.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1669
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1670 @item baseline
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1671 Percent above baseline that glyph is to be displayed. Only for glyphs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1672 displayed inside of a buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1673
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1674 @item contrib-p
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1675 Whether the glyph contributes to the height of the line it's on.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1676 Only for glyphs displayed inside of a buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1677
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1678 @item face
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1679 Face of this glyph (@emph{not} a specifier).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1680 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1681
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1682 @defun set-glyph-property glyph property value &optional locale tag-set how-to-add
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1683 This function changes a property of a @var{glyph}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1684
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1685 For built-in properties, the actual value of the property is a specifier
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1686 and you cannot change this; but you can change the specifications within
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1687 the specifier, and that is what this function will do. The glyph face
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1688 is an exception; it is a face name (a symbol) or a face object, not a
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1689 specifier. (The face properties themselves are typically specifiers.)
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1690 For user-defined properties, you can use this function to either change
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1691 the actual value of the property or, if this value is a specifier,
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1692 change the specifications within it.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1693
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1694 If @var{property} is a built-in property, the specifications to be added
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1695 to this property can be supplied in many different ways:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1696
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1697 @itemize @bullet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1698 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1699 If @var{value} is a simple instantiator (e.g. a string naming a pixmap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1700 filename) or a list of instantiators, then the instantiator(s) will be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1701 added as a specification of the property for the given @var{locale}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1702 (which defaults to @code{global} if omitted).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1703
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1704 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1705 If @var{value} is a list of specifications (each of which is a cons of a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1706 locale and a list of instantiators), then @var{locale} must be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1707 @code{nil} (it does not make sense to explicitly specify a locale in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1708 this case), and specifications will be added as given.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1709
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1710 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1711 If @var{value} is a specifier (as would be returned by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1712 @code{glyph-property} if no @var{locale} argument is given), then some
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1713 or all of the specifications in the specifier will be added to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1714 property. In this case, the function is really equivalent to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1715 @code{copy-specifier} and @var{locale} has the same semantics (if it is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1716 a particular locale, the specification for the locale will be copied; if
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1717 a locale type, specifications for all locales of that type will be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1718 copied; if @code{nil} or @code{all}, then all specifications will be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1719 copied).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1720 @end itemize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1721
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1722 @var{how-to-add} should be either @code{nil} or one of the symbols
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1723 @code{prepend}, @code{append}, @code{remove-tag-set-prepend},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1724 @code{remove-tag-set-append}, @code{remove-locale},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1725 @code{remove-locale-type}, or @code{remove-all}. See
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1726 @code{copy-specifier} and @code{add-spec-to-specifier} for a description
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1727 of what each of these means. Most of the time, you do not need to worry
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1728 about this argument; the default behavior usually is fine.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1729
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1730 In general, it is OK to pass an instance object (e.g. as returned by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1731 @code{glyph-property-instance}) as an instantiator in place of an actual
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1732 instantiator. In such a case, the instantiator used to create that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1733 instance object will be used (for example, if you set a font-instance
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1734 object as the value of the @code{font} property, then the font name used
2028
2ba4f06a264d [xemacs-hg @ 2004-04-19 08:02:27 by stephent]
stephent
parents: 1137
diff changeset
1735 to create that object will be used instead). In some cases, however,
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1736 doing this conversion does not make sense, and this will be noted in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1737 documentation for particular types of instance objects.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1738
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1739 If @var{property} is not a built-in property, then this function will
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1740 simply set its value if @var{locale} is @code{nil}. However, if
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1741 @var{locale} is given, then this function will attempt to add
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1742 @var{value} as the instantiator for the given @var{locale}, using
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1743 @code{add-spec-to-specifier}. If the value of the property is not a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1744 specifier, it will automatically be converted into a @code{generic}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1745 specifier.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1746 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1747
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1748 @defun glyph-property glyph property &optional locale
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1749 This function returns @var{glyph}'s value of the given @var{property}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1750
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1751 If @var{locale} is omitted, the @var{glyph}'s actual value for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1752 @var{property} will be returned. For built-in properties, this will be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1753 a specifier object of a type appropriate to the property (e.g. a font or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1754 color specifier). For other properties, this could be anything.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1755
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1756 If @var{locale} is supplied, then instead of returning the actual value,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1757 the specification(s) for the given locale or locale type will be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1758 returned. This will only work if the actual value of @var{property} is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1759 a specifier (this will always be the case for built-in properties, but
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1760 may or may not apply to user-defined properties). If the actual value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1761 of @var{property} is not a specifier, this value will simply be returned
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1762 regardless of @var{locale}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1763
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1764 The return value will be a list of instantiators (e.g. vectors
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1765 specifying pixmap data), or a list of specifications, each of which is a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1766 cons of a locale and a list of instantiators. Specifically, if
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1767 @var{locale} is a particular locale (a buffer, window, frame, device, or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1768 @code{global}), a list of instantiators for that locale will be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1769 returned. Otherwise, if @var{locale} is a locale type (one of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1770 symbols @code{buffer}, @code{window}, @code{frame}, or @code{device}),
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1771 the specifications for all locales of that type will be returned.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1772 Finally, if @var{locale} is @code{all}, the specifications for all
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1773 locales of all types will be returned.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1774
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1775 The specifications in a specifier determine what the value of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1776 @var{property} will be in a particular @dfn{domain} or set of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1777 circumstances, which is typically a particular Emacs window along with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1778 the buffer it contains and the frame and device it lies within. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1779 value is derived from the instantiator associated with the most specific
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1780 locale (in the order buffer, window, frame, device, and @code{global})
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1781 that matches the domain in question. In other words, given a domain
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1782 (i.e. an Emacs window, usually), the specifier for @var{property} will
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1783 first be searched for a specification whose locale is the buffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1784 contained within that window; then for a specification whose locale is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1785 the window itself; then for a specification whose locale is the frame
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1786 that the window is contained within; etc. The first instantiator that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1787 is valid for the domain (usually this means that the instantiator is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1788 recognized by the device [i.e. the X server or TTY device] that the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1789 domain is on). The function @code{glyph-property-instance} actually does
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1790 all this, and is used to determine how to display the glyph.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1791 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1792
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1793 @defun glyph-property-instance glyph property &optional domain default no-fallback
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1794 This function returns the instance of @var{glyph}'s @var{property} in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1795 specified @var{domain}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1796
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1797 Under most circumstances, @var{domain} will be a particular window, and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1798 the returned instance describes how the specified property actually is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1799 displayed for that window and the particular buffer in it. Note that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1800 this may not be the same as how the property appears when the buffer is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1801 displayed in a different window or frame, or how the property appears in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1802 the same window if you switch to another buffer in that window; and in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1803 those cases, the returned instance would be different.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1804
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1805 The returned instance is an image-instance object, and you can query it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1806 using the appropriate image instance functions. For example, you could use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1807 @code{image-instance-depth} to find out the depth (number of color
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1808 planes) of a pixmap displayed in a particular window. The results might
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1809 be different from the results you would get for another window (perhaps
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1810 the user specified a different image for the frame that window is on; or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1811 perhaps the same image was specified but the window is on a different X
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1812 server, and that X server has different color capabilities from this
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1813 one).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1814
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1815 @var{domain} defaults to the selected window if omitted.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1816
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1817 @var{domain} can be a frame or device, instead of a window. The value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1818 returned for such a domain is used in special circumstances when a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1819 more specific domain does not apply; for example, a frame value might be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1820 used for coloring a toolbar, which is conceptually attached to a frame
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1821 rather than a particular window. The value is also useful in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1822 determining what the value would be for a particular window within the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1823 frame or device, if it is not overridden by a more specific
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1824 specification.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1825
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1826 If @var{property} does not name a built-in property, its value will
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1827 simply be returned unless it is a specifier object, in which case it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1828 will be instanced using @code{specifier-instance}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1829
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1830 Optional arguments @var{default} and @var{no-fallback} are the same as
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1831 in @code{specifier-instance}. @xref{Specifiers}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1832 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1833
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1834 @defun remove-glyph-property glyph property &optional locale tag-set exact-p
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1835 This function removes a property from a glyph. For built-in properties,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1836 this is analogous to @code{remove-specifier}. @xref{Specifiers,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1837 remove-specifier-p}, for the meaning of the @var{locale}, @var{tag-set},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1838 and @var{exact-p} arguments.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1839 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1840
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1841
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1842 @node Glyph Convenience Functions
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1843 @subsection Glyph Convenience Functions
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1844
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1845 The following functions are provided for working with specific
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1846 properties of a glyph. Note that these are exactly like calling
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1847 the general functions described above and passing in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1848 appropriate value for @var{property}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1849
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1850 Remember that if you want to determine the ``value'' of a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1851 specific glyph property, you probably want to use the @code{*-instance}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1852 functions. For example, to determine whether a glyph contributes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1853 to its line height, use @code{glyph-contrib-p-instance}, not
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1854 @code{glyph-contrib-p}. (The latter will return a boolean specifier
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1855 or a list of specifications, and you probably aren't concerned with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1856 these.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1857
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1858 @defun glyph-image glyph &optional locale
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1859 This function is equivalent to calling @code{glyph-property} with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1860 a property of @code{image}. The return value will be an image
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1861 specifier if @var{locale} is @code{nil} or omitted; otherwise,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1862 it will be a specification or list of specifications.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1863 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1864
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1865 @defun set-glyph-image glyph spec &optional locale tag-set how-to-add
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1866 This function is equivalent to calling @code{set-glyph-property} with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1867 a property of @code{image}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1868 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1869
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1870 @defun glyph-image-instance glyph &optional domain default no-fallback
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1871 This function returns the instance of @var{glyph}'s image in the given
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1872 @var{domain}, and is equivalent to calling
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1873 @code{glyph-property-instance} with a property of @code{image}. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1874 return value will be an image instance.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1875
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1876 Normally @var{domain} will be a window or @code{nil} (meaning the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1877 selected window), and an instance object describing how the image
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1878 appears in that particular window and buffer will be returned.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1879 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1880
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1881 @defun glyph-contrib-p glyph &optional locale
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1882 This function is equivalent to calling @code{glyph-property} with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1883 a property of @code{contrib-p}. The return value will be a boolean
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1884 specifier if @var{locale} is @code{nil} or omitted; otherwise,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1885 it will be a specification or list of specifications.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1886 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1887
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1888 @defun set-glyph-contrib-p glyph spec &optional locale tag-set how-to-add
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1889 This function is equivalent to calling @code{set-glyph-property} with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1890 a property of @code{contrib-p}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1891 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1892
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1893 @defun glyph-contrib-p-instance glyph &optional domain default no-fallback
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1894 This function returns whether the glyph contributes to its line height
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1895 in the given @var{domain}, and is equivalent to calling
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1896 @code{glyph-property-instance} with a property of @code{contrib-p}. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1897 return value will be either @code{nil} or @code{t}. (Normally @var{domain}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1898 will be a window or @code{nil}, meaning the selected window.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1899 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1900
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1901 @defun glyph-baseline glyph &optional locale
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1902 This function is equivalent to calling @code{glyph-property} with a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1903 property of @code{baseline}. The return value will be a specifier if
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1904 @var{locale} is @code{nil} or omitted; otherwise, it will be a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1905 specification or list of specifications.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1906 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1907
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1908 @defun set-glyph-baseline glyph spec &optional locale tag-set how-to-add
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1909 This function is equivalent to calling @code{set-glyph-property} with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1910 a property of @code{baseline}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1911 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1912
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1913 @defun glyph-baseline-instance glyph &optional domain default no-fallback
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1914 This function returns the instance of @var{glyph}'s baseline value in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1915 the given @var{domain}, and is equivalent to calling
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1916 @code{glyph-property-instance} with a property of @code{baseline}. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1917 return value will be an integer or @code{nil}.
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 Normally @var{domain} will be a window or @code{nil} (meaning the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1920 selected window), and an instance object describing the baseline value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1921 appears in that particular window and buffer will be returned.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1922 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1923
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1924 @defun glyph-face glyph
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1925 This function returns the face of @var{glyph}. (Remember, this is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1926 not a specifier, but a simple property.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1927 @end defun
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 @defun set-glyph-face glyph face
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1930 This function changes the face of @var{glyph} to @var{face}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1931 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1932
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1933
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1934 @node Glyph Dimensions
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1935 @subsection Glyph Dimensions
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1936
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1937 @defun glyph-width glyph &optional window
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1938 This function returns the width of @var{glyph} on @var{window}. This
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1939 may not be exact as it does not take into account all of the context
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1940 that redisplay will.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1941 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1942
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1943 @defun glyph-ascent glyph &optional window
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1944 This function returns the ascent value of @var{glyph} on @var{window}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1945 This may not be exact as it does not take into account all of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1946 context that redisplay will.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1947 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1948
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1949 @defun glyph-descent glyph &optional window
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1950 This function returns the descent value of @var{glyph} on @var{window}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1951 This may not be exact as it does not take into account all of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1952 context that redisplay will.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1953 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1954
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1955 @defun glyph-height glyph &optional window
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1956 This function returns the height of @var{glyph} on @var{window}. (This
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1957 is equivalent to the sum of the ascent and descent values.) This may
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1958 not be exact as it does not take into account all of the context that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1959 redisplay will.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1960 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1961
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 @node Glyph Types
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1964 @subsection Glyph Types
428
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 Each glyph has a particular type, which controls how the glyph's image
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1967 is generated. Each glyph type has a corresponding list of allowable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1968 image instance types that can be generated. When you call
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1969 @code{glyph-image-instance} to retrieve the image instance of a glyph,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1970 XEmacs does the equivalent of calling @code{make-image-instance} and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1971 passing in @var{dest-types} the list of allowable image instance types
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1972 for the glyph's type.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1973
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1974 @itemize @bullet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1975 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1976 @code{buffer} glyphs can be used as the begin-glyph or end-glyph of an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1977 extent, in the modeline, and in the toolbar. Their image can be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1978 instantiated as @code{nothing}, @code{mono-pixmap}, @code{color-pixmap},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1979 @code{text}, and @code{subwindow}.
2182
c91543697b09 [xemacs-hg @ 2004-07-19 08:24:24 by stephent]
stephent
parents: 2127
diff changeset
1980 @c #### Check status of subwindows ... I thought Andy implemented them.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1981
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1982 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1983 @code{pointer} glyphs can be used to specify the mouse pointer. Their
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1984 image can be instantiated as @code{pointer}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1985
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1986 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1987 @code{icon} glyphs can be used to specify the icon used when a frame is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1988 iconified. Their image can be instantiated as @code{mono-pixmap} and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1989 @code{color-pixmap}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1990 @end itemize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1991
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1992 @defun glyph-type glyph
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1993 This function returns the type of the given glyph. The return value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1994 will be a symbol, one of @code{buffer}, @code{pointer}, or @code{icon}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1995 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1996
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1997 @defun valid-glyph-type-p glyph-type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1998 Given a @var{glyph-type}, this function returns non-@code{nil} if it is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1999 valid.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2000 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2001
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2002 @defun glyph-type-list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2003 This function returns a list of valid glyph types.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2004 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2005
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2006 @defun buffer-glyph-p object
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2007 This function returns non-@code{nil} if @var{object} is a glyph of type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2008 @code{buffer}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2009 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2010
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2011 @defun icon-glyph-p object
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2012 This function returns non-@code{nil} if @var{object} is a glyph of type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2013 @code{icon}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2014 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2015
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2016 @defun pointer-glyph-p object
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2017 This function returns non-@code{nil} if @var{object} is a glyph of type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2018 @code{pointer}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2019 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2020
707
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2021
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2022 @node Glyph Examples
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2023 @section Glyph Examples
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2024
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2025 For many applications, displaying graphics is a simple process: you
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2026 create a glyph, and then you insert it into a buffer.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2027
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2028 The easiest way to create a glyph is to use a file that contains a
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2029 graphical image, such as a JPEG, TIFF, or PNG file:
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2030
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2031 @lisp
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2032 ;; Create a glyph from a JPEG file:
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2033 (setq foo (make-glyph [jpeg :file "/tmp/file1.jpg"]))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2034 @end lisp
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2035
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2036 @lisp
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2037 ;; Create a glyph from a XPM file:
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2038 (setq foo (make-glyph [xpm :file "/tmp/file2.xpm"]))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2039 @end lisp
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2040
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2041 @lisp
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2042 ;; Create a glyph from a PNG file:
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2043 (setq foo (make-glyph [png :file "/tmp/file3.png"]))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2044 @end lisp
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2045
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2046 @lisp
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2047 ;; Create a glyph from a TIFF file:
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2048 (setq foo (make-glyph [tiff :file "/tmp/file4.tiff"]))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2049 @end lisp
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2050
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2051 The parameters passed to @code{make-glyph} are called "Image
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2052 Specifiers", and can handle more image types than those shown above.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2053 You can also put the raw image data into a string (e.g., if you put the
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2054 contents of a JPEG file into a string), and use that to create a glyph.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2055 @xref{Image Specifiers}, for more information.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2056
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2057 @quotation
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2058 @strong{Caution}: In order for XEmacs to read a particular graphics file
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2059 format, support for that format must have been compiled into XEmacs.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2060 It's possible, although somewhat unlikely, for XEmacs to have been
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2061 compiled without support for any of the various graphics file formats.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2062 To see what graphics formats your particular version of XEmacs supports,
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2063 use @kbd{M-x describe-installation}.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2064
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2065 To programmatically query whether or not a particular file format is
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2066 supported, you can use the @code{featurep} function, with one of:
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2067 @code{gif}, @code{tiff}, @code{jpeg}, @code{xpm}, @code{xbm},
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2068 @code{png}, or @code{xface}. For an up-to-date list, @ref{Image
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2069 Specifiers}. Example:
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2070
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2071 @example
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2072 ;; Returns `t' if TIFF is supported:
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2073 (featurep 'tiff)
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2074 @end example
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2075
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2076 Another example is:
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2077
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2078 @example
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2079 ;; Returns a list of `t' or `nil', depending on whether or not the
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2080 ;; corresponding feature is supported:
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2081 (mapcar #'(lambda (format-symbol) (featurep format-symbol))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2082 '(gif tiff jpeg xpm png))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2083 @end example
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2084
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2085 @end quotation
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2086
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2087 Once you have a glyph, you can then insert it into a buffer. Example:
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2088
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2089 @lisp
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2090 ;; Use this function to insert a glyph at the left edge of point in the
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2091 ;; current buffer. Any existing glyph at this location is replaced.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2092 (defun insert-glyph (gl)
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2093 "Insert a glyph at the left edge of point."
1137
c6facab13185 [xemacs-hg @ 2002-12-03 10:35:06 by didierv]
didierv
parents: 707
diff changeset
2094 (let ( (prop 'myimage) ;; myimage is an arbitrary name, chosen
707
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2095 ;; to (hopefully) not conflict with any
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2096 ;; other properties. Change it if
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2097 ;; necessary.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2098 extent )
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2099 ;; First, check to see if one of our extents already exists at
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2100 ;; point. For ease-of-programming, we are creating and using our
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2101 ;; own extents (multiple extents are allowed to exist/overlap at the
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2102 ;; same point, and it's quite possible for other applications to
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2103 ;; embed extents in the current buffer without your knowledge).
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2104 ;; Basically, if an extent, with the property stored in "prop",
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2105 ;; exists at point, we assume that it is one of ours, and we re-use
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2106 ;; it (this is why it is important for the property stored in "prop"
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2107 ;; to be unique, and only used by us).
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2108 (if (not (setq extent (extent-at (point) (current-buffer) prop)))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2109 (progn
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2110 ;; If an extent does not already exist, create a zero-length
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2111 ;; extent, and give it our special property.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2112 (setq extent (make-extent (point) (point) (current-buffer)))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2113 (set-extent-property extent prop t)
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2114 ))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2115 ;; Display the glyph by storing it as the extent's "begin-glyph".
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2116 (set-extent-property extent 'begin-glyph gl)
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2117 ))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2118
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2119 ;; You can then use this function like:
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2120 (insert-glyph (make-glyph [jpeg :file "/tmp/file1.jpg"]))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2121 ;; This will insert the glyph at point.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2122
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2123 ;; Here's an example of how to insert two glyphs side-by-side, at point
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2124 ;; (using the above code):
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2125 (progn
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2126 (insert-glyph (make-glyph [jpeg :file "/tmp/file1.jpg"]))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2127 ;; Create a new extent at point. We can't simply call "insert-glyph",
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2128 ;; as "insert-glyph" will simply replace the first glyph with the
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2129 ;; second.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2130 (setq extent (make-extent (point) (point) (current-buffer)))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2131 ;; Here, we're only setting the 'myimage property in case we need
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2132 ;; to later identify/locate/reuse this particular extent.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2133 (set-extent-property extent 'myimage t)
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2134 (set-extent-property extent 'begin-glyph
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2135 (make-glyph [jpeg :file "/tmp/file2.jpg"]))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2136 )
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2137
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2138 @end lisp
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2139
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2140 Here are the gory details:
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2141
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2142 @itemize @bullet
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2143
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2144 @item
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2145 Glyphs are displayed by attaching them to extents (see @ref{Extents}),
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2146 either to the beginning or the end of extents.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2147
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2148 Note that extents can be used for many things, and not just for
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2149 displaying images (although, in the above example, we are creating our
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2150 own extent for the sole purpose of displaying an image). Also, note
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2151 that multiple extents are allowed to exist at the same position, and
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2152 they can overlap.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2153
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2154 @item
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2155 Glyphs are often displayed inside the text area (alongside text). This
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2156 is the default.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2157
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2158 Although glyphs can also be displayed in the margins, how to do this
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2159 will not be described here. For more information on this, see
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2160 @ref{Annotation Basics} (look for information on "layout types") and
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2161 @ref{Extent Properties} (look for @code{begin-glyph-layout} and
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2162 @code{end-glyph-layout}).
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2163
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2164 @item
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2165 The easiest way to insert a glyph into text is to create a zero-length
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2166 extent at the point where you want the glyph to appear.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2167
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2168 Note that zero-length extents are attached to the character to the
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2169 right of the extent; deleting this character will also delete the extent.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2170
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2171 @item
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2172 It's often a good idea to assign a unique property to the newly-created
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2173 extent, in case you later want to locate it, and replace any existing
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2174 glyph with a different one (or just delete the existing one). In the
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2175 above example, we are using "myimage" as our (hopefully) unique property
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2176 name.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2177
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2178 If you need to locate all of the extents, you'll have to use functions
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2179 like @code{extent-list} or @code{next-extent}, or provide additional
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2180 parameters to the @code{extent-at} function. Assigning a unique
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2181 property to the extent makes it easy to locate your extents; for
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2182 example, @code{extent-list} can return only those extents with a
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2183 particular property. @xref{Finding Extents}, and @ref{Mapping Over
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2184 Extents}, for more information.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2185
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2186 @item
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2187 Glyphs are displayed by assigning then to the @code{begin-glyph} or
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2188 @code{end-glyph} property of the extent. For zero-length extents, it
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2189 doesn't really matter if you assign the glyph to the @code{begin-glyph}
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2190 or @code{end-glyph} property, as they are both at the same location;
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2191 however, for non-zero-length extents (extents that cover one or more
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2192 characters of text), it does matter which one you use.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2193
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2194 Assigning @code{nil} to the @code{begin-glyph} or @code{end-glyph}
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2195 property will delete any existing glyph. In this case, you may also
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2196 want to delete the extent, assuming that the extent is used for no other
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2197 purpose.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2198
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2199 @item
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2200 If you happen to insert two glyphs, side-by-side, note that the example
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2201 @code{insert-glyph} function will have trouble, if it's again used at
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2202 the same point (it can only locate one of the two extents).
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2203 @xref{Finding Extents}, and @ref{Mapping Over Extents}, for more
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2204 information on locating extents in a buffer.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2205
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2206 @item
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2207 Among other things, glyphs provide a way of displaying graphics
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2208 alongside text. Note, however, that glyphs only provide a way of
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2209 displaying graphics; glyphs are not actually part of the text, and are
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2210 only displayed alongside the text. If you save the text in the buffer,
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2211 the graphics are not saved. The low-level glyph code does not provide a
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2212 way of saving graphics with the text. If you need to save graphics and
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2213 text, you have to write your own code to do this, and this topic is
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2214 outside the scope of this discussion.
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2215
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
2216 @end itemize