Mercurial > hg > xemacs-beta
comparison man/lispref/glyphs.texi @ 408:501cfd01ee6d r21-2-34
Import from CVS: tag r21-2-34
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:18:11 +0200 |
parents | 2f8bb876ab1d |
children | de805c49cfc1 |
comparison
equal
deleted
inserted
replaced
407:ed6218a7d4d3 | 408:501cfd01ee6d |
---|---|
5 @setfilename ../../info/glyphs.info | 5 @setfilename ../../info/glyphs.info |
6 @node Glyphs, Annotations, Faces and Window-System Objects, top | 6 @node Glyphs, Annotations, Faces and Window-System Objects, top |
7 @chapter Glyphs | 7 @chapter Glyphs |
8 @cindex glyphs | 8 @cindex glyphs |
9 | 9 |
10 A @dfn{glyph} is an object that is used for pixmaps and images of all | 10 A @dfn{glyph} is an object that is used for pixmaps, widgets and |
11 sorts, as well as for things that ``act'' like pixmaps, such as | 11 images of all sorts, as well as for things that ``act'' like pixmaps, |
12 non-textual strings (@dfn{annotations}) displayed in a buffer or in the | 12 such as non-textual strings (@dfn{annotations}) displayed in a buffer or |
13 margins. It is used in begin-glyphs and end-glyphs attached to extents, | 13 in the margins. It is used in begin-glyphs and end-glyphs attached to |
14 marginal and textual annotations, overlay arrows (@code{overlay-arrow-*} | 14 extents, marginal and textual annotations, overlay arrows |
15 variables), toolbar buttons, mouse pointers, frame icons, truncation and | 15 (@code{overlay-arrow-*} variables), toolbar buttons, mouse pointers, |
16 continuation markers, and the like. (Basically, any place there is an | 16 frame icons, truncation and continuation markers, and the |
17 image or something that acts like an image, there will be a glyph object | 17 like. (Basically, any place there is an image or something that acts |
18 representing it.) | 18 like an image, there will be a glyph object representing it.) |
19 | 19 |
20 The actual image that is displayed (as opposed to its position or | 20 The actual image that is displayed (as opposed to its position or |
21 clipping) is defined by an @dfn{image specifier} object contained | 21 clipping) is defined by an @dfn{image specifier} object contained |
22 within the glyph. The separation between an image specifier object | 22 within the glyph. The separation between an image specifier object |
23 and a glyph object is made because the glyph includes other properties | 23 and a glyph object is made because the glyph includes other properties |
69 into which the glyph's image can be instantiated. @var{type} should be | 69 into which the glyph's image can be instantiated. @var{type} should be |
70 one of @code{buffer} (used for glyphs in an extent, the modeline, the | 70 one of @code{buffer} (used for glyphs in an extent, the modeline, the |
71 toolbar, or elsewhere in a buffer), @code{pointer} (used for the | 71 toolbar, or elsewhere in a buffer), @code{pointer} (used for the |
72 mouse-pointer), or @code{icon} (used for a frame's icon), and defaults | 72 mouse-pointer), or @code{icon} (used for a frame's icon), and defaults |
73 to @code{buffer}. @xref{Glyph Types}. | 73 to @code{buffer}. @xref{Glyph Types}. |
74 | |
75 A glyph in XEmacs does @strong{NOT} refer to a single unit of textual | |
76 display (the XEmacs term for this is @dfn{rune}), but rather is an | |
77 object encapsulating a graphical element, such as an image or widget (an | |
78 element such as a button or text field; @dfn{widget} is the term for | |
79 this under X Windows, and it's called a @dfn{control} under MS Windows). | |
80 This graphical element could appear in a buffer, a margin, a gutter, or | |
81 a toolbar, or as a mouse pointer or an icon, for example. | |
82 | |
83 Creating a glyph using @code{make-glyph} does not specify @emph{where} | |
84 the glyph will be used, but it does specify @emph{what} the glyph will | |
85 look like. In particular, SPEC-LIST is used to specify this, and it's | |
86 used to initialize the glyph's @code{image} property, which is an image | |
87 specifier. (Note that @dfn{image} as used in the context of a glyph's | |
88 @code{image} property or in the terms @dfn{image specifier}, @dfn{image | |
89 instantiator}, or @dfn{image instance} does not refer to what people | |
90 normally think of as an image (which in XEmacs is called a | |
91 @dfn{pixmap}), but to any graphical element---a pixmap, a widget, or | |
92 even a block of text, when used in the places that call for a glyph.) | |
93 The format of the SPEC-LIST is typically an image instantiator (a string | |
94 or a vector; @ref{Image Specifiers}), but can also be a list of such | |
95 instantiators (each one in turn is tried until an image is successfully | |
96 produced), a cons of a locale (frame, buffer, etc.) and an | |
97 instantiator, a list of such conses, or any other form accepted by | |
98 @code{canonicalize-spec-list}. @xref{Specifiers}, for more information | |
99 about specifiers. | |
100 | |
101 If you're not familiar with specifiers, you should be in order to | |
102 understand how glyphs work. The clearest introduction to specifiers | |
103 is in the Lispref manual, available under Info. (Choose | |
104 Help->Info->Info Contents on the menubar or type C-h i.) You can | |
105 also see @code{make-specifier} for a capsule summary. What's important to | |
106 keep in mind is that a specifier lets you set a different value for | |
107 any particular buffer, window, frame, device, or console. This allows | |
108 for a great deal of flexibility; in particular, only one global glyph | |
109 needs to exist for a particular purpose (e.g. the icon used to represent | |
110 an iconified frame, the mouse pointer used over particular areas of a | |
111 frame, etc.), and in these cases you do not create your own glyph, but | |
112 rather modify the existing one. | |
113 | |
114 As well as using @var{spec-list} to initialize the glyph, you can set | |
115 specifications using @code{set-glyph-image}. Note that, due to a | |
116 possibly questionable historical design decision, a glyph itself is not | |
117 actually a specifier, but rather is an object containing an image | |
118 specifier (as well as other, seldom-used properties). Therefore, you | |
119 cannot set or access specifications for the glyph's image by directly | |
120 using @code{set-specifier}, @code{specifier-instance} or the like on the | |
121 glyph; instead use them on @code{(glyph-image @var{glyph})} or use the | |
122 convenience functions @code{set-glyph-image}, | |
123 @code{glyph-image-instance}, and @code{glyph-image}. | |
124 | |
125 Once you have created a glyph, you specify where it will be used as | |
126 follows: | |
127 | |
128 @itemize @bullet | |
129 @item | |
130 To insert a glyph into a buffer, create an extent in the buffer and then | |
131 use @code{set-extent-begin-glyph} or @code{set-extent-end-glyph} to set | |
132 a glyph to be displayed at the corresponding edge of the extent. (It is | |
133 common to create zero-width extents for this purpose.) | |
134 | |
135 @item | |
136 To insert a glyph into the left or right margin of a buffer, first | |
137 make sure the margin is visible by setting a value for the specifiers | |
138 @code{left-margin-width} or @code{right-margin-width}. (Not strictly necessary | |
139 when using margin glyphs with layout policy @code{whitespace}.) Then follow | |
140 the same procedure above for inserting a glyph in a buffer, and then | |
141 set a non-default layout policy for the glyph using | |
142 @code{set-extent-begin-glyph-layout} or @code{set-extent-end-glyph-layout}. | |
143 Alternatively, use the high-level annotations API (see | |
144 @code{make-annotation}). (In point of fact, you can also use the annotations | |
145 API for glyphs in a buffer, by setting a layout policy of @code{text}.) | |
146 | |
147 @item | |
148 To insert a glyph into the modeline, just put the glyph directly as one | |
149 of the modeline elements. (Unfortunately you can't currently put a begin | |
150 glyph or end glyph on one of the modeline extents---they're ignored.) | |
151 | |
152 @item | |
153 To insert a glyph into a toolbar, specify it as part of a toolbar | |
154 instantiator (typically set on the specifier @code{default-toolbar}). | |
155 See @code{default-toolbar} for more information. (Note that it is | |
156 standard practice to use a symbol in place of the glyph list in the | |
157 toolbar instantiator; the symbol is evalled to get the glyph list. This | |
158 facilitates both creating the toolbar instantiator and modifying | |
159 individual glyphs in a toolbar later on. For example, you can change | |
160 the way that the Mail toolbar button looks by modifying the value of the | |
161 variable @code{toolbar-mail-icon} (in general, @code{toolbar-*-icon}) | |
162 and then calling @code{(set-specifier-dirty-flag default-toolbar)}. | |
163 (#### Unfortunately this doesn't quite work the way it should; the | |
164 change will appear in new frames, but not existing ones. | |
165 | |
166 @item | |
167 To insert a glyph into a gutter, create or modify a gutter instantiator | |
168 (typically set on the specifier @code{default-gutter}). Gutter | |
169 instantiators consist of strings or lists of strings, so to insert a | |
170 glyph, create an extent over the string, and use | |
171 @code{set-extent-begin-glyph} or @code{set-extent-end-glyph} to set a | |
172 glyph to be displayed at the corresponding edge of the extent, just like | |
173 for glyphs in a buffer. | |
174 | |
175 @item | |
176 To use a glyph as the icon for a frame, you do not actually create a new | |
177 glyph; rather, you change the specifications for the existing glyph | |
178 @code{frame-icon-glyph}. (Remember that, because of the specifier nature | |
179 of glyphs, you can set different values for any particular buffer or | |
180 frame.) | |
181 | |
182 @item | |
183 To use a glyph as the mouse pointer, in general you do not create a new | |
184 glyph, but rather you change the specifications of various existing | |
185 glyphs, such as @code{text-pointer-glyph} for the pointer used over | |
186 text, @code{modeline-pointer-glyph} for the pointer used over the | |
187 modeline, etc. Do an apropos over @code{*-pointer-glyph} to find all of | |
188 them. (Note also that you can temporarily set the mouse pointer to some | |
189 specific shape by using @code{set-frame-pointer}, which takes an image | |
190 instace, as obtained from calling @code{glyph-image-instance} on a glyph | |
191 of type @code{pointer} -- either one of the above-mentioned variables or | |
192 one you created yourself. (See below for what it means to create a | |
193 glyph of type @code{pointer}.) This pointer will last only until the | |
194 next mouse motion event is processed or certain other things happen, | |
195 such as creating or deleting a window. (In fact, the above-mentioned | |
196 pointer glyph variables are implemented as part of the default handler | |
197 for mouse motion events. If you want to customize this behavior, take a | |
198 look at @code{mode-motion-hook}, or @code{mouse-motion-handler} if you | |
199 really want to get low-level.) | |
200 | |
201 @item | |
202 To use a glyph to control the shape of miscellaneous redisplay effects | |
203 such as the truncation and continuation markers, set the appropriate | |
204 existing glyph variables, as for icons and pointers above. See | |
205 @code{continuation-glyph}, @code{control-arrow-glyph}, | |
206 @code{hscroll-glyph}, @code{invisible-text-glyph}, | |
207 @code{octal-escape-glyph}, and @code{truncation-glyph}. See also | |
208 @code{overlay-arrow-string}, an odd redisplay leftover which can be set | |
209 to a glyph you created, and will cause the glyph to be displayed on top | |
210 of the text position specified in the marker stored in | |
211 @code{overlay-arrow-position}. | |
212 | |
213 @item | |
214 To use a glyph in a display table (i.e. to control the appearance of any | |
215 individual character), create the appropriate character glyphs and then | |
216 set a specification for the specifier @code{current-display-table}, | |
217 which controls the appearance of characters. You can also set an | |
218 overriding display table for use with text displayed in a particular | |
219 face; see @code{set-face-display-table} and @code{make-display-table}. | |
220 #### Note: Display tables do not currently support general Mule | |
221 characters. They will be overhauled at some point to support this | |
222 and to provide other features required under Mule. | |
223 | |
224 @item | |
225 To use a glyph as the background pixmap of a face: Note that the | |
226 background pixmap of a face is actually an image specifier -- probably | |
227 the only place in XEmacs where an image specifier occurs outside of a | |
228 glyph. Similarly to how the glyph's image specifier works, you don't | |
229 create your own image specifier, but rather add specifications to the | |
230 existing one (using @code{set-face-background-pixmap}). Note that the | |
231 image instance that is generated in order to actually display the | |
232 background pixmap is of type @code{mono-pixmap}, meaning that it's a | |
233 two-color image and the foreground and background of the image get | |
234 filled in with the corresponding colors from the face. | |
235 @end itemize | |
236 | |
237 It is extremely rare that you will ever have to specify a value for | |
238 TYPE, which should be one of @code{buffer} (used for glyphs in an | |
239 extent, the modeline, the toolbar, or elsewhere in a buffer), | |
240 @code{pointer} (used for the mouse-pointer), or @code{icon} (used for a | |
241 frame's icon), and defaults to @code{buffer}. The only cases where it | |
242 needs to be specified is when creating icon or pointer glyphs, and in | |
243 both cases the necessary glyphs have already been created at startup and | |
244 are accessed through the appropriate variables, | |
245 e.g. @code{text-pointer-glyph} (or in general, @code{*-pointer-glyph}) | |
246 and @code{frame-icon-glyph}. @xref{Glyph Types}. | |
74 @end defun | 247 @end defun |
75 | 248 |
76 @defun make-glyph-internal &optional type | 249 @defun make-glyph-internal &optional type |
77 This function creates a new, uninitialized glyph of type @var{type}. | 250 This function creates a new, uninitialized glyph of type @var{type}. |
78 @end defun | 251 @end defun |
79 | 252 |
80 @defun make-pointer-glyph &optional spec-list | 253 @defun make-pointer-glyph &optional spec-list |
81 This function is equivalent to calling @code{make-glyph} with a | 254 |
82 @var{type} of @code{pointer}. | 255 Return a new @code{pointer-glyph} object with the specification list |
256 @var{spec-list}. This function is equivalent to calling | |
257 @code{make-glyph} with a @var{type} of @code{pointer}. | |
258 | |
259 It is extremely unlikely that you will ever need to create a pointer | |
260 glyph. Instead, you probably want to be calling @code{set-glyph-image} | |
261 on an existing glyph, e.g. @code{text-pointer-glyph}. | |
83 @end defun | 262 @end defun |
84 | 263 |
85 @defun make-icon-glyph &optional spec-list | 264 @defun make-icon-glyph &optional spec-list |
86 This function is equivalent to calling @code{make-glyph} with a | 265 |
87 @var{type} of @code{icon}. | 266 Return a new @code{pointer-glyph} object with the specification list |
267 @var{spec-list}. This function is equivalent to calling | |
268 @code{make-glyph} with a @var{type} of @code{icon}. | |
269 | |
270 It is extremely unlikely that you will ever need to create a pointer | |
271 glyph. Instead, you probably want to be calling @code{set-glyph-image} | |
272 on an existing glyph, e.g. @code{text-pointer-glyph}. | |
88 @end defun | 273 @end defun |
89 | 274 |
90 @node Glyph Properties | 275 @node Glyph Properties |
91 @subsection Glyph Properties | 276 @subsection Glyph Properties |
92 | 277 |
418 Usually, an image specifier results from calling @code{glyph-image} on | 603 Usually, an image specifier results from calling @code{glyph-image} on |
419 a glyph. | 604 a glyph. |
420 @end defun | 605 @end defun |
421 | 606 |
422 @defun make-image-specifier spec-list | 607 @defun make-image-specifier spec-list |
423 This function creates a new image specifier object and initializes | 608 This function creates a new image specifier object and initializes it |
424 it according to @var{spec-list}. It is unlikely that you will ever | 609 according to @var{spec-list}. @xref{Specifiers}. |
425 want to do this, but this function is provided for completeness and | 610 |
426 for experimentation purposes. @xref{Specifiers}. | 611 Note that, in practice, you rarely, if ever, need to actually create an |
612 image specifier! (This function exists mainly for completeness.) Pretty | |
613 much the only use for image specifiers is to control how glyphs are | |
614 displayed, and the image specifier associated with a glyph (the | |
615 @code{image} property of a glyph) is created automatically when a glyph | |
616 is created and need not (and cannot, for that matter) ever be changed | |
617 (@pxref{Glyphs}). In fact, the design decision to create a separate | |
618 image specifier type, rather than make glyphs themselves be specifiers, | |
619 is debatable---the other properties of glyphs are rarely used and could | |
620 conceivably have been incorporated into the glyph's instantiator. The | |
621 rarely used glyph types (buffer, pointer, icon) could also have been | |
622 incorporated into the instantiator. | |
427 @end defun | 623 @end defun |
428 | 624 |
429 Image instantiators come in many formats: @code{xbm}, @code{xpm}, | 625 Image instantiators come in many formats: @code{xbm}, @code{xpm}, |
430 @code{gif}, @code{jpeg}, etc. This describes the format of the data | 626 @code{gif}, @code{jpeg}, etc. This describes the format of the data |
431 describing the image. The resulting image instances also come in many | 627 describing the image. The resulting image instances also come in many |
514 @item font | 710 @item font |
515 A glyph from a font; i.e. the name of a font, and glyph index into it | 711 A glyph from a font; i.e. the name of a font, and glyph index into it |
516 of the form @samp{@var{font} fontname index [[mask-font] mask-index]}. | 712 of the form @samp{@var{font} fontname index [[mask-font] mask-index]}. |
517 Only if X support was compiled into this XEmacs. Currently can only be | 713 Only if X support was compiled into this XEmacs. Currently can only be |
518 instanced as @code{pointer}, although this should probably be fixed. | 714 instanced as @code{pointer}, although this should probably be fixed. |
715 @item mswindows-resource | |
716 An MS Windows pointer resource. Specifies a resource to retrieve | |
717 directly from the system (an OEM resource) or from a file, particularly | |
718 an executable file. If the resource is to be retrieved from a file, use | |
719 :file and optionally :resource-id. Otherwise use :resource-id. Always | |
720 specify :resource-type to specify the type (cursor, bitmap or icon) of | |
721 the resource. Possible values for :resource-id are listed below. Can | |
722 be instanced as @code{pointer} or @code{color-pixmap}. | |
519 @item subwindow | 723 @item subwindow |
520 An embedded X window; not currently implemented. | 724 An embedded windowing system window. Can only be instanced as |
725 @code{subwindow}. | |
726 @item button | |
727 A button widget; either a push button, radio button or toggle button. | |
728 Can only be instanced as @code{widget}. | |
729 @item combo-box | |
730 A drop list of selectable items in a widget, for editing text. | |
731 Can only be instanced as @code{widget}. | |
732 @item edit-field | |
733 A text editing widget. Can only be instanced as @code{widget}. | |
734 @item label | |
735 A static, text-only, widget; for displaying text. Can only be instanced | |
736 as @code{widget}. | |
737 @item layout | |
738 A widget for controlling the positioning of children underneath it. | |
739 Through the use of nested layouts, a widget hierarchy can be created | |
740 which can have the appearance of any standard dialog box or similar | |
741 arrangement; all of this is counted as one @dfn{glyph} and could appear | |
742 in many of the places that expect a single glyph. Can only be instanced | |
743 as @code{widget}. | |
744 @item native-layout | |
745 @c #### Document me better! | |
746 The native version of a layout widget. | |
747 Can only be instanced as @code{widget}. | |
748 @item progress-gauge | |
749 A sliding widget, for showing progress. Can only be instanced as | |
750 @code{widget}. | |
751 @item tab-control | |
752 A tab widget; a series of user selectable tabs. Can only be instanced | |
753 as @code{widget}. | |
754 @item tree-view | |
755 A folding widget. Can only be instanced as @code{widget}. | |
756 @item scrollbar | |
757 A scrollbar widget. Can only be instanced as @code{widget}. | |
521 @item autodetect | 758 @item autodetect |
522 XEmacs tries to guess what format the data is in. If X support exists, | 759 XEmacs tries to guess what format the data is in. If X support exists, |
523 the data string will be checked to see if it names a filename. If so, | 760 the data string will be checked to see if it names a filename. If so, |
524 and this filename contains XBM or XPM data, the appropriate sort of | 761 and this filename contains XBM or XPM data, the appropriate sort of |
525 pixmap or pointer will be created. [This includes picking up any | 762 pixmap or pointer will be created. [This includes picking up any |
526 specified hotspot or associated mask file.] Otherwise, if @code{pointer} | 763 specified hotspot or associated mask file.] Otherwise, if @code{pointer} |
527 is one of the allowable image-instance types and the string names a | 764 is one of the allowable image-instance types and the string names a |
528 valid cursor-font name, the image will be created as a pointer. | 765 valid cursor-font name, the image will be created as a pointer. |
529 Otherwise, the image will be displayed as text. If no X support exists, | 766 Otherwise, the image will be displayed as text. If no X support exists, |
530 the image will always be displayed as text. | 767 the image will always be displayed as text. |
768 @item inherit | |
769 Inherit from the background-pixmap property of a face. Can only be | |
770 instanced as @code{mono-pixmap}. | |
531 @end table | 771 @end table |
532 | 772 |
533 The valid keywords are: | 773 The valid keywords are: |
534 | 774 |
535 @table @code | 775 @table @code |
585 Only for @code{xpm}. This specifies an alist that maps strings that | 825 Only for @code{xpm}. This specifies an alist that maps strings that |
586 specify symbolic color names to the actual color to be used for that | 826 specify symbolic color names to the actual color to be used for that |
587 symbolic color (in the form of a string or a color-specifier object). | 827 symbolic color (in the form of a string or a color-specifier object). |
588 If this is not specified, the contents of @code{xpm-color-symbols} are | 828 If this is not specified, the contents of @code{xpm-color-symbols} are |
589 used to generate the alist. | 829 used to generate the alist. |
830 @item :resource-id | |
831 Only for @code{mswindows-resource}. This must be either an integer | |
832 (which directly specifies a resource number) or a string. Valid strings | |
833 are | |
834 | |
835 For bitmaps: | |
836 | |
837 "close", "uparrow", "dnarrow", "rgarrow", "lfarrow", | |
838 "reduce", "zoom", "restore", "reduced", "zoomd", | |
839 "restored", "uparrowd", "dnarrowd", "rgarrowd", "lfarrowd", | |
840 "mnarrow", "combo", "uparrowi", "dnarrowi", "rgarrowi", | |
841 "lfarrowi", "size", "btsize", "check", "checkboxes", and | |
842 "btncorners". | |
843 | |
844 For cursors: | |
845 | |
846 "normal", "ibeam", "wait", "cross", "up", "sizenwse", | |
847 "sizenesw", "sizewe", "sizens", "sizeall", and "no". | |
848 | |
849 For icons: | |
850 | |
851 "sample", "hand", "ques", "bang", "note", and "winlogo". | |
852 @item :resource-type | |
853 Only for @code{mswindows-resource}. This must be a symbol, either | |
854 @code{cursor}, @code{icon}, or @code{bitmap}, specifying the type of | |
855 resource to be retrieved. | |
856 @item :face | |
857 Only for @code{inherit}. This specifies the face to inherit from. For | |
858 widgets this also specifies the face to use for display. It defaults to | |
859 gui-element-face. | |
590 @end table | 860 @end table |
861 | |
862 Keywords accepted as menu item specs are also accepted by widgets. | |
863 These are @code{:selected}, @code{:active}, @code{:suffix}, | |
864 @code{:keys}, @code{:style}, @code{:filter}, @code{:config}, | |
865 @code{:included}, @code{:key-sequence}, @code{:accelerator}, | |
866 @code{:label} and @code{:callback}. | |
591 | 867 |
592 If instead of a vector, the instantiator is a string, it will be | 868 If instead of a vector, the instantiator is a string, it will be |
593 converted into a vector by looking it up according to the specs in the | 869 converted into a vector by looking it up according to the specs in the |
594 @code{console-type-image-conversion-list} for the console type of | 870 @code{console-type-image-conversion-list} for the console type of |
595 the domain (usually a window; sometimes a frame or device) over which | 871 the domain (usually a window; sometimes a frame or device) over which |
768 @defun nothing-image-instance-p object | 1044 @defun nothing-image-instance-p object |
769 This function returns non-@code{nil} if @var{object} is an image | 1045 This function returns non-@code{nil} if @var{object} is an image |
770 instance of type @code{nothing}. | 1046 instance of type @code{nothing}. |
771 @end defun | 1047 @end defun |
772 | 1048 |
1049 @defun widget-image-instance-p object | |
1050 Return t if @var{object} is an image instance of type @code{widget}. | |
1051 @end defun | |
1052 | |
773 @node Image Instance Functions | 1053 @node Image Instance Functions |
774 @subsubsection Image Instance Functions | 1054 @subsubsection Image Instance Functions |
775 | 1055 |
776 @defun make-image-instance data &optional device dest-types no-error | 1056 @defun make-image-instance data &optional domain dest-types no-error |
777 This function creates a new image-instance object. | 1057 This function creates a new image-instance object. |
778 | 1058 |
779 @var{data} is an image instantiator, which describes the image | 1059 @var{data} is an image instantiator, which describes the image |
780 (@pxref{Image Specifiers}). | 1060 (@pxref{Image Specifiers}). |
781 | 1061 |
787 @code{color-pixmap}, followed by @code{pointer}. For the other normal | 1067 @code{color-pixmap}, followed by @code{pointer}. For the other normal |
788 image formats, the most natural types are @code{color-pixmap}, followed | 1068 image formats, the most natural types are @code{color-pixmap}, followed |
789 by @code{mono-pixmap}, followed by @code{pointer}. For the string and | 1069 by @code{mono-pixmap}, followed by @code{pointer}. For the string and |
790 formatted-string formats, the most natural types are @code{text}, | 1070 formatted-string formats, the most natural types are @code{text}, |
791 followed by @code{mono-pixmap} (not currently implemented), followed by | 1071 followed by @code{mono-pixmap} (not currently implemented), followed by |
792 @code{color-pixmap} (not currently implemented). The other formats can | 1072 @code{color-pixmap} (not currently implemented). For MS Windows |
793 only be instantiated as one type. (If you want to control more | 1073 resources, the most natural type for pointer resources is |
794 specifically the order of the types into which an image is instantiated, | 1074 @code{pointer}, and for the others it's @code{color-pixmap}. The other |
795 just call @code{make-image-instance} repeatedly until it succeeds, | 1075 formats can only be instantiated as one type. (If you want to control |
796 passing less and less preferred destination types each time. | 1076 more specifically the order of the types into which an image is |
1077 instantiated, just call @code{make-image-instance} repeatedly until it | |
1078 succeeds, passing less and less preferred destination types each time. | |
797 | 1079 |
798 If @var{dest-types} is omitted, all possible types are allowed. | 1080 If @var{dest-types} is omitted, all possible types are allowed. |
1081 | |
1082 @var{domain} specifies the domain to which the image instance will be | |
1083 attached. This domain is termed the @dfn{governing domain}. The type | |
1084 of the governing domain depends on the image instantiator | |
1085 format. (Although, more correctly, it should probably depend on the | |
1086 image instance type.) For example, pixmap image instances are specific | |
1087 to a device, but widget image instances are specific to a particular | |
1088 XEmacs window because in order to display such a widget when two windows | |
1089 onto the same buffer want to display the widget, two separate underlying | |
1090 widgets must be created. (That's because a widget is actually a child | |
1091 window-system window, and all window-system windows have a unique | |
1092 existence on the screen.) This means that the governing domain for a | |
1093 pixmap image instance will be some device (most likely, the only | |
1094 existing device), whereas the governing domain for a widget image | |
1095 instance will be some XEmacs window. | |
1096 | |
1097 If you specify an overly general @var{domain} (e.g. a frame when a | |
1098 window was wanted), an error is signaled. If you specify an overly | |
1099 specific @var{domain} (e.g. a window when a device was wanted), the | |
1100 corresponding general domain is fetched and used instead. For | |
1101 @code{make-image-instance}, it makes no difference whether you specify | |
1102 an overly specific domain or the properly general domain derived from | |
1103 it. However, it does matter when creating an image instance by | |
1104 instantiating a specifier or glyph (e.g. with | |
1105 @code{glyph-image-instance}), because the more specific domain causes | |
1106 spec lookup to start there and proceed to more general domains. (It | |
1107 would also matter when creating an image instance with an instantiator | |
1108 format of @code{inherit}, but we currently disallow this. #### We should | |
1109 fix this.) | |
1110 n | |
1111 If omitted, @var{domain} defaults to the selected window. | |
799 | 1112 |
800 @var{no-error} controls what happens when the image cannot be generated. | 1113 @var{no-error} controls what happens when the image cannot be generated. |
801 If @var{nil}, an error message is generated. If @var{t}, no messages | 1114 If @var{nil}, an error message is generated. If @var{t}, no messages |
802 are generated and this function returns @var{nil}. If anything else, a | 1115 are generated and this function returns @var{nil}. If anything else, a |
803 warning message is generated and this function returns @var{nil}. | 1116 warning message is generated and this function returns @var{nil}. |
816 | 1129 |
817 @defun image-instance-name image-instance | 1130 @defun image-instance-name image-instance |
818 This function returns the name of the given image instance. | 1131 This function returns the name of the given image instance. |
819 @end defun | 1132 @end defun |
820 | 1133 |
1134 @defun image-instance-domain image-instance | |
1135 | |
1136 Return the governing domain of the given @var{image-instance}. The | |
1137 governing domain of an image instance is the domain that the image | |
1138 instance is specific to. It is @emph{NOT} necessarily the domain that | |
1139 was given to the call to @code{specifier-instance} that resulted in the | |
1140 creation of this image instance. See @code{make-image-instance} for | |
1141 more information on governing domains. | |
1142 @end defun | |
1143 | |
1144 | |
821 @defun image-instance-string image-instance | 1145 @defun image-instance-string image-instance |
822 This function returns the string of the given image instance. This will | 1146 This function returns the string of the given image instance. This will |
823 only be non-@code{nil} for text image instances. | 1147 only be non-@code{nil} for text image instances. |
824 @end defun | 1148 @end defun |
825 | 1149 |