annotate src/dispextern.h @ 112228:417b1e4d63cd

Merge from emacs-23
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 14 Jan 2011 12:18:41 -0500
parents ac49e05bfcf2 376148b31b5e
children ef719132ddfa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
247
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Interface definitions for display code.
64770
a0d1312ede66 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64084
diff changeset
2 Copyright (C) 1985, 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002,
112218
376148b31b5e Add 2011 to FSF/AIST copyright years.
Glenn Morris <rgm@gnu.org>
parents: 111912
diff changeset
3 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
79759
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 79348
diff changeset
4 Free Software Foundation, Inc.
247
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 This file is part of GNU Emacs.
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94923
diff changeset
8 GNU Emacs is free software: you can redistribute it and/or modify
247
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 it under the terms of the GNU General Public License as published by
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94923
diff changeset
10 the Free Software Foundation, either version 3 of the License, or
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94923
diff changeset
11 (at your option) any later version.
247
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 GNU Emacs is distributed in the hope that it will be useful,
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 GNU General Public License for more details.
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94923
diff changeset
19 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
247
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
34226
2e38b27fd38b (struct it): Add face_before_selective_p.
Gerd Moellmann <gerd@gnu.org>
parents: 33460
diff changeset
21 /* New redisplay written by Gerd Moellmann <gerd@gnu.org>. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
22
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
23 #ifndef DISPEXTERN_H_INCLUDED
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
24 #define DISPEXTERN_H_INCLUDED
247
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 #ifdef HAVE_X_WINDOWS
47996
276c5262e359 [!HAVE_X_WINDOWS]: Define XColor.
Juanma Barranquero <lekktu@gmail.com>
parents: 47135
diff changeset
27
1409
7fd1c810daca * dispextern.h: New element of frame structure `max_ascent'.
Joseph Arceneaux <jla@gnu.org>
parents: 764
diff changeset
28 #include <X11/Xlib.h>
25881
54d9b33d9c4b (enum face_id): Add MENU_FACE_ID.
Gerd Moellmann <gerd@gnu.org>
parents: 25796
diff changeset
29 #ifdef USE_X_TOOLKIT
54d9b33d9c4b (enum face_id): Add MENU_FACE_ID.
Gerd Moellmann <gerd@gnu.org>
parents: 25796
diff changeset
30 #include <X11/Intrinsic.h>
54d9b33d9c4b (enum face_id): Add MENU_FACE_ID.
Gerd Moellmann <gerd@gnu.org>
parents: 25796
diff changeset
31 #endif /* USE_X_TOOLKIT */
47996
276c5262e359 [!HAVE_X_WINDOWS]: Define XColor.
Juanma Barranquero <lekktu@gmail.com>
parents: 47135
diff changeset
32
276c5262e359 [!HAVE_X_WINDOWS]: Define XColor.
Juanma Barranquero <lekktu@gmail.com>
parents: 47135
diff changeset
33 #else /* !HAVE_X_WINDOWS */
276c5262e359 [!HAVE_X_WINDOWS]: Define XColor.
Juanma Barranquero <lekktu@gmail.com>
parents: 47135
diff changeset
34
276c5262e359 [!HAVE_X_WINDOWS]: Define XColor.
Juanma Barranquero <lekktu@gmail.com>
parents: 47135
diff changeset
35 /* X-related stuff used by non-X gui code. */
276c5262e359 [!HAVE_X_WINDOWS]: Define XColor.
Juanma Barranquero <lekktu@gmail.com>
parents: 47135
diff changeset
36
276c5262e359 [!HAVE_X_WINDOWS]: Define XColor.
Juanma Barranquero <lekktu@gmail.com>
parents: 47135
diff changeset
37 typedef struct {
276c5262e359 [!HAVE_X_WINDOWS]: Define XColor.
Juanma Barranquero <lekktu@gmail.com>
parents: 47135
diff changeset
38 unsigned long pixel;
276c5262e359 [!HAVE_X_WINDOWS]: Define XColor.
Juanma Barranquero <lekktu@gmail.com>
parents: 47135
diff changeset
39 unsigned short red, green, blue;
276c5262e359 [!HAVE_X_WINDOWS]: Define XColor.
Juanma Barranquero <lekktu@gmail.com>
parents: 47135
diff changeset
40 char flags;
276c5262e359 [!HAVE_X_WINDOWS]: Define XColor.
Juanma Barranquero <lekktu@gmail.com>
parents: 47135
diff changeset
41 char pad;
276c5262e359 [!HAVE_X_WINDOWS]: Define XColor.
Juanma Barranquero <lekktu@gmail.com>
parents: 47135
diff changeset
42 } XColor;
276c5262e359 [!HAVE_X_WINDOWS]: Define XColor.
Juanma Barranquero <lekktu@gmail.com>
parents: 47135
diff changeset
43
25881
54d9b33d9c4b (enum face_id): Add MENU_FACE_ID.
Gerd Moellmann <gerd@gnu.org>
parents: 25796
diff changeset
44 #endif /* HAVE_X_WINDOWS */
1409
7fd1c810daca * dispextern.h: New element of frame structure `max_ascent'.
Joseph Arceneaux <jla@gnu.org>
parents: 764
diff changeset
45
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9568
diff changeset
46 #ifdef MSDOS
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9568
diff changeset
47 #include "msdos.h"
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9568
diff changeset
48 #endif
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9568
diff changeset
49
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
50 #ifdef HAVE_X_WINDOWS
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
51 typedef struct x_display_info Display_Info;
54362
64ae6f2c8fee * dispextern.h (XImagePtr, XImagePtr_or_DC): Add typedefs.
Kim F. Storm <storm@cua.dk>
parents: 54356
diff changeset
52 typedef XImage * XImagePtr;
64ae6f2c8fee * dispextern.h (XImagePtr, XImagePtr_or_DC): Add typedefs.
Kim F. Storm <storm@cua.dk>
parents: 54356
diff changeset
53 typedef XImagePtr XImagePtr_or_DC;
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
54 #define NativeRectangle XRectangle
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
55 #endif
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
56
13407
5ebb99bc06bb [HAVE_NTGUI]: Include win32.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 9572
diff changeset
57 #ifdef HAVE_NTGUI
16887
dd6cbc8b53e8 Use new name w32gui.h
Geoff Voelker <voelker@cs.washington.edu>
parents: 16051
diff changeset
58 #include "w32gui.h"
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
59 typedef struct w32_display_info Display_Info;
54362
64ae6f2c8fee * dispextern.h (XImagePtr, XImagePtr_or_DC): Add typedefs.
Kim F. Storm <storm@cua.dk>
parents: 54356
diff changeset
60 typedef XImage *XImagePtr;
64ae6f2c8fee * dispextern.h (XImagePtr, XImagePtr_or_DC): Add typedefs.
Kim F. Storm <storm@cua.dk>
parents: 54356
diff changeset
61 typedef HDC XImagePtr_or_DC;
13407
5ebb99bc06bb [HAVE_NTGUI]: Include win32.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 9572
diff changeset
62 #endif
5ebb99bc06bb [HAVE_NTGUI]: Include win32.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 9572
diff changeset
63
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
64 #ifdef HAVE_NS
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
65 #include "nsgui.h"
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
66 /* following typedef needed to accomodate the MSDOS port, believe it or not */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
67 typedef struct ns_display_info Display_Info;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
68 typedef Pixmap XImagePtr;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
69 typedef XImagePtr XImagePtr_or_DC;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
70 #endif
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
71
111340
2186ab0af4a5 Start redesigning portable mouse highlight. Not compiled.
Eli Zaretskii <eliz@gnu.org>
parents: 111339
diff changeset
72 #ifndef HAVE_WINDOW_SYSTEM
111339
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
73 typedef int Cursor;
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
74 #define No_Cursor (0)
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
75 #endif
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
76
50249
ab5177b4137b Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50246
diff changeset
77 #ifndef NativeRectangle
ab5177b4137b Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50246
diff changeset
78 #define NativeRectangle int
ab5177b4137b Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50246
diff changeset
79 #endif
ab5177b4137b Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50246
diff changeset
80
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
81 /* Structure forward declarations. Some are here because function
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
82 prototypes below reference structure types before their definition
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
83 in this file. Some are here because not every file including
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
84 dispextern.h also includes frame.h and windows.h. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
85
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
86 struct glyph;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
87 struct glyph_row;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
88 struct glyph_matrix;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
89 struct glyph_pool;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
90 struct frame;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
91 struct window;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
92
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
93
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
94 /* Values returned from coordinates_in_window. */
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
95
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
96 enum window_part
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
97 {
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
98 ON_NOTHING,
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
99 ON_TEXT,
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
100 ON_MODE_LINE,
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
101 ON_VERTICAL_BORDER,
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
102 ON_HEADER_LINE,
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
103 ON_LEFT_FRINGE,
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
104 ON_RIGHT_FRINGE,
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
105 ON_LEFT_MARGIN,
56543
9125d1c4c537 (enum window_part): Add ON_SCROLL_BAR.
Richard M. Stallman <rms@gnu.org>
parents: 56135
diff changeset
106 ON_RIGHT_MARGIN,
9125d1c4c537 (enum window_part): Add ON_SCROLL_BAR.
Richard M. Stallman <rms@gnu.org>
parents: 56135
diff changeset
107 ON_SCROLL_BAR
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
108 };
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
109
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
110 /* Number of bits allocated to store fringe bitmap numbers. */
57276
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
111 #define FRINGE_ID_BITS 16
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
112
109296
f6f0d450d542 Fix ghost buffer boundary indicators in fringes (Bug#5634, Bug#6325).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 107526
diff changeset
113 /* Number of bits allocated to store fringe bitmap height. */
f6f0d450d542 Fix ghost buffer boundary indicators in fringes (Bug#5634, Bug#6325).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 107526
diff changeset
114 #define FRINGE_HEIGHT_BITS 8
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
115
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
116
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
117 /***********************************************************************
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
118 Debugging
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
119 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
120
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
121 /* If GLYPH_DEBUG is non-zero, additional checks are activated. Turn
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
122 it off by defining the macro GLYPH_DEBUG to zero. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
123
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
124 #ifndef GLYPH_DEBUG
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
125 #define GLYPH_DEBUG 0
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
126 #endif
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
127
60346
70a63281c541 (XASSERTS): Define to 0 if not already defined.
Kim F. Storm <storm@cua.dk>
parents: 60251
diff changeset
128 /* If XASSERTS is non-zero, additional consistency checks are activated.
70a63281c541 (XASSERTS): Define to 0 if not already defined.
Kim F. Storm <storm@cua.dk>
parents: 60251
diff changeset
129 Turn it off by defining the macro XASSERTS to zero. */
70a63281c541 (XASSERTS): Define to 0 if not already defined.
Kim F. Storm <storm@cua.dk>
parents: 60251
diff changeset
130
70a63281c541 (XASSERTS): Define to 0 if not already defined.
Kim F. Storm <storm@cua.dk>
parents: 60251
diff changeset
131 #ifndef XASSERTS
70a63281c541 (XASSERTS): Define to 0 if not already defined.
Kim F. Storm <storm@cua.dk>
parents: 60251
diff changeset
132 #define XASSERTS 0
70a63281c541 (XASSERTS): Define to 0 if not already defined.
Kim F. Storm <storm@cua.dk>
parents: 60251
diff changeset
133 #endif
70a63281c541 (XASSERTS): Define to 0 if not already defined.
Kim F. Storm <storm@cua.dk>
parents: 60251
diff changeset
134
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
135 /* Macros to include code only if GLYPH_DEBUG != 0. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
136
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
137 #if GLYPH_DEBUG
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
138 #define IF_DEBUG(X) X
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
139 #else
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
140 #define IF_DEBUG(X) (void) 0
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
141 #endif
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
142
60346
70a63281c541 (XASSERTS): Define to 0 if not already defined.
Kim F. Storm <storm@cua.dk>
parents: 60251
diff changeset
143 #if XASSERTS
59870
d19236272855 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-72
Miles Bader <miles@gnu.org>
parents: 59747
diff changeset
144 #define xassert(X) do {if (!(X)) abort ();} while (0)
60346
70a63281c541 (XASSERTS): Define to 0 if not already defined.
Kim F. Storm <storm@cua.dk>
parents: 60251
diff changeset
145 #else
70a63281c541 (XASSERTS): Define to 0 if not already defined.
Kim F. Storm <storm@cua.dk>
parents: 60251
diff changeset
146 #define xassert(X) (void) 0
70a63281c541 (XASSERTS): Define to 0 if not already defined.
Kim F. Storm <storm@cua.dk>
parents: 60251
diff changeset
147 #endif
59870
d19236272855 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-72
Miles Bader <miles@gnu.org>
parents: 59747
diff changeset
148
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
149 /* Macro for displaying traces of redisplay. If Emacs was compiled
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
150 with GLYPH_DEBUG != 0, the variable trace_redisplay_p can be set to
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
151 a non-zero value in debugging sessions to activate traces. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
152
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
153 #if GLYPH_DEBUG
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
154
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
155 extern int trace_redisplay_p;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
156 #include <stdio.h>
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
157
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
158 #define TRACE(X) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
159 if (trace_redisplay_p) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
160 fprintf X; \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
161 else \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
162 (void) 0
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
163
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
164 #else /* GLYPH_DEBUG == 0 */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
165
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
166 #define TRACE(X) (void) 0
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
167
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
168 #endif /* GLYPH_DEBUG == 0 */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
169
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
170
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
171
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
172 /***********************************************************************
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
173 Text positions
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
174 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
175
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
176 /* Starting with Emacs 20.3, characters from strings and buffers have
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
177 both a character and a byte position associated with them. The
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
178 following structure holds such a pair of positions. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
179
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
180 struct text_pos
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
181 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
182 /* Character position. */
106550
562676f8dfb2 (struct text_pos): Use EMACS_INT;
Eli Zaretskii <eliz@gnu.org>
parents: 106404
diff changeset
183 EMACS_INT charpos;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
184
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
185 /* Corresponding byte position. */
106550
562676f8dfb2 (struct text_pos): Use EMACS_INT;
Eli Zaretskii <eliz@gnu.org>
parents: 106404
diff changeset
186 EMACS_INT bytepos;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
187 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
188
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
189 /* Access character and byte position of POS in a functional form. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
190
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
191 #define BYTEPOS(POS) (POS).bytepos
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
192 #define CHARPOS(POS) (POS).charpos
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
193
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
194 /* Set character position of POS to CHARPOS, byte position to BYTEPOS. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
195
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
196 #define SET_TEXT_POS(POS, CHARPOS, BYTEPOS) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
197 ((POS).charpos = (CHARPOS), (POS).bytepos = BYTEPOS)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
198
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
199 /* Increment text position POS. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
200
28360
37743eccd7aa (INC_TEXT_POS, DEC_TEXT_POS): Add parameter MULTIBYTE_P.
Gerd Moellmann <gerd@gnu.org>
parents: 28254
diff changeset
201 #define INC_TEXT_POS(POS, MULTIBYTE_P) \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
202 do \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
203 { \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
204 ++(POS).charpos; \
28360
37743eccd7aa (INC_TEXT_POS, DEC_TEXT_POS): Add parameter MULTIBYTE_P.
Gerd Moellmann <gerd@gnu.org>
parents: 28254
diff changeset
205 if (MULTIBYTE_P) \
37743eccd7aa (INC_TEXT_POS, DEC_TEXT_POS): Add parameter MULTIBYTE_P.
Gerd Moellmann <gerd@gnu.org>
parents: 28254
diff changeset
206 INC_POS ((POS).bytepos); \
37743eccd7aa (INC_TEXT_POS, DEC_TEXT_POS): Add parameter MULTIBYTE_P.
Gerd Moellmann <gerd@gnu.org>
parents: 28254
diff changeset
207 else \
37743eccd7aa (INC_TEXT_POS, DEC_TEXT_POS): Add parameter MULTIBYTE_P.
Gerd Moellmann <gerd@gnu.org>
parents: 28254
diff changeset
208 ++(POS).bytepos; \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
209 } \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
210 while (0)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
211
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
212 /* Decrement text position POS. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
213
28360
37743eccd7aa (INC_TEXT_POS, DEC_TEXT_POS): Add parameter MULTIBYTE_P.
Gerd Moellmann <gerd@gnu.org>
parents: 28254
diff changeset
214 #define DEC_TEXT_POS(POS, MULTIBYTE_P) \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
215 do \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
216 { \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
217 --(POS).charpos; \
28360
37743eccd7aa (INC_TEXT_POS, DEC_TEXT_POS): Add parameter MULTIBYTE_P.
Gerd Moellmann <gerd@gnu.org>
parents: 28254
diff changeset
218 if (MULTIBYTE_P) \
37743eccd7aa (INC_TEXT_POS, DEC_TEXT_POS): Add parameter MULTIBYTE_P.
Gerd Moellmann <gerd@gnu.org>
parents: 28254
diff changeset
219 DEC_POS ((POS).bytepos); \
37743eccd7aa (INC_TEXT_POS, DEC_TEXT_POS): Add parameter MULTIBYTE_P.
Gerd Moellmann <gerd@gnu.org>
parents: 28254
diff changeset
220 else \
37743eccd7aa (INC_TEXT_POS, DEC_TEXT_POS): Add parameter MULTIBYTE_P.
Gerd Moellmann <gerd@gnu.org>
parents: 28254
diff changeset
221 --(POS).bytepos; \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
222 } \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
223 while (0)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
224
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
225 /* Set text position POS from marker MARKER. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
226
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
227 #define SET_TEXT_POS_FROM_MARKER(POS, MARKER) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
228 (CHARPOS (POS) = marker_position ((MARKER)), \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
229 BYTEPOS (POS) = marker_byte_position ((MARKER)))
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
230
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
231 /* Set marker MARKER from text position POS. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
232
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
233 #define SET_MARKER_FROM_TEXT_POS(MARKER, POS) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
234 set_marker_both ((MARKER), Qnil, CHARPOS ((POS)), BYTEPOS ((POS)))
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
235
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
236 /* Value is non-zero if character and byte positions of POS1 and POS2
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
237 are equal. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
238
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
239 #define TEXT_POS_EQUAL_P(POS1, POS2) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
240 ((POS1).charpos == (POS2).charpos \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
241 && (POS1).bytepos == (POS2).bytepos)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
242
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
243 /* When rendering glyphs, redisplay scans string or buffer text,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
244 overlay strings in that text, and does display table or control
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
245 character translations. The following structure captures a
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
246 position taking all this into account. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
247
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
248 struct display_pos
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
249 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
250 /* Buffer or string position. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
251 struct text_pos pos;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
252
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
253 /* If this is a position in an overlay string, overlay_string_index
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
254 is the index of that overlay string in the sequence of overlay
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
255 strings at `pos' in the order redisplay processes them. A value
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
256 < 0 means that this is not a position in an overlay string. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
257 int overlay_string_index;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
258
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
259 /* If this is a position in an overlay string, string_pos is the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
260 position within that string. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
261 struct text_pos string_pos;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
262
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
263 /* If the character at the position above is a control character or
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
264 has a display table entry, dpvec_index is an index in the display
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
265 table or control character translation of that character. A
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
266 value < 0 means this is not a position in such a translation. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
267 int dpvec_index;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
268 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
269
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
270
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
271
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
272 /***********************************************************************
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
273 Glyphs
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
274 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
275
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
276 /* Enumeration of glyph types. Glyph structures contain a type field
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
277 containing one of the enumerators defined here. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
278
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
279 enum glyph_type
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
280 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
281 /* Glyph describes a character. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
282 CHAR_GLYPH,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
283
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
284 /* Glyph describes a static composition. */
26850
d00beb113ad5 (enum glyph_type): New member COMPOSITE_GLYPH.
Kenichi Handa <handa@m17n.org>
parents: 26766
diff changeset
285 COMPOSITE_GLYPH,
d00beb113ad5 (enum glyph_type): New member COMPOSITE_GLYPH.
Kenichi Handa <handa@m17n.org>
parents: 26766
diff changeset
286
111235
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
287 /* Glyph describes a glyphless character. */
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
288 GLYPHLESS_GLYPH,
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
289
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
290 /* Glyph describes an image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
291 IMAGE_GLYPH,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
292
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
293 /* Glyph is a space of fractional width and/or height. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
294 STRETCH_GLYPH
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
295 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
296
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
297
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
298 /* Structure describing how to use partial glyphs (images slicing) */
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
299
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
300 struct glyph_slice
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
301 {
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
302 unsigned x : 16;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
303 unsigned y : 16;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
304 unsigned width : 16;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
305 unsigned height : 16;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
306 };
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
307
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
308
30040
7249274abdec Add some comments.
Gerd Moellmann <gerd@gnu.org>
parents: 29859
diff changeset
309 /* Glyphs.
7249274abdec Add some comments.
Gerd Moellmann <gerd@gnu.org>
parents: 29859
diff changeset
310
7249274abdec Add some comments.
Gerd Moellmann <gerd@gnu.org>
parents: 29859
diff changeset
311 Be extra careful when changing this structure! Esp. make sure that
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
312 functions producing glyphs, like append_glyph, fill ALL of the
30040
7249274abdec Add some comments.
Gerd Moellmann <gerd@gnu.org>
parents: 29859
diff changeset
313 glyph structure, and that GLYPH_EQUAL_P compares all
7249274abdec Add some comments.
Gerd Moellmann <gerd@gnu.org>
parents: 29859
diff changeset
314 display-relevant members of glyphs (not to imply that these are the
7249274abdec Add some comments.
Gerd Moellmann <gerd@gnu.org>
parents: 29859
diff changeset
315 only things to check when you add a member). */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
316
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
317 struct glyph
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
318 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
319 /* Position from which this glyph was drawn. If `object' below is a
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
320 Lisp string, this is a position in that string. If it is a
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
321 buffer, this is a position in that buffer. A value of -1
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
322 together with a null object means glyph is a truncation glyph at
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
323 the start of a row. */
106550
562676f8dfb2 (struct text_pos): Use EMACS_INT;
Eli Zaretskii <eliz@gnu.org>
parents: 106404
diff changeset
324 EMACS_INT charpos;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
325
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
326 /* Lisp object source of this glyph. Currently either a buffer or
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
327 a string, if the glyph was produced from characters which came from
36799
d219e9d346c4 Improve comments.
Gerd Moellmann <gerd@gnu.org>
parents: 36702
diff changeset
328 a buffer or a string; or 0 if the glyph was inserted by redisplay
d219e9d346c4 Improve comments.
Gerd Moellmann <gerd@gnu.org>
parents: 36702
diff changeset
329 for its own purposes such as padding. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
330 Lisp_Object object;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
331
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
332 /* Width in pixels. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
333 short pixel_width;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
334
53328
dc1470f3ebd7 (FACE_ID_BITS, MAX_FACE_ID): New defines.
Kim F. Storm <storm@cua.dk>
parents: 53175
diff changeset
335 /* Ascent and descent in pixels. */
dc1470f3ebd7 (FACE_ID_BITS, MAX_FACE_ID): New defines.
Kim F. Storm <storm@cua.dk>
parents: 53175
diff changeset
336 short ascent, descent;
dc1470f3ebd7 (FACE_ID_BITS, MAX_FACE_ID): New defines.
Kim F. Storm <storm@cua.dk>
parents: 53175
diff changeset
337
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
338 /* Vertical offset. If < 0, the glyph is displayed raised, if > 0
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
339 the glyph is displayed lowered. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
340 short voffset;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
341
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
342 /* Which kind of glyph this is---character, image etc. Value
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
343 should be an enumerator of type enum glyph_type. */
111235
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
344 unsigned type : 3;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
345
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
346 /* 1 means this glyph was produced from multibyte text. Zero
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
347 means it was produced from unibyte text, i.e. charsets aren't
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
348 applicable, and encoding is not performed. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
349 unsigned multibyte_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
350
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
351 /* Non-zero means draw a box line at the left or right side of this
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
352 glyph. This is part of the implementation of the face attribute
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
353 `:box'. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
354 unsigned left_box_line_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
355 unsigned right_box_line_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
356
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
357 /* Non-zero means this glyph's physical ascent or descent is greater
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
358 than its logical ascent/descent, i.e. it may potentially overlap
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
359 glyphs above or below it. */
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
360 unsigned overlaps_vertically_p : 1;
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
361
92188
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
362 /* For terminal frames, 1 means glyph is a padding glyph. Padding
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
363 glyphs are used for characters whose visual shape consists of
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
364 more than one glyph (e.g. Asian characters). All but the first
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
365 glyph of such a glyph sequence have the padding_p flag set. This
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
366 flag is used only to minimize code changes. A better way would
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
367 probably be to use the width field of glyphs to express padding.
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
368
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
369 For graphic frames, 1 means the pixel width of the glyph in a
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
370 font is 0, but 1-pixel is padded on displaying for correct cursor
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
371 displaying. The member `pixel_width' above is set to 1. */
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
372 unsigned padding_p : 1;
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
373
111526
5c986eef8f0d Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents: 111413
diff changeset
374 /* 1 means the actual glyph is not available, draw using `struct
5c986eef8f0d Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents: 111413
diff changeset
375 glyphless' below instead. This can happen when a font couldn't
5c986eef8f0d Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents: 111413
diff changeset
376 be loaded, or a character doesn't have a glyph in a font. */
28221
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
377 unsigned glyph_not_available_p : 1;
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
378
96470
2af6e85f13d5 Implement display-time wrap/line-prefix feature
Miles Bader <miles@gnu.org>
parents: 96234
diff changeset
379 /* Non-zero means don't display cursor here. */
2af6e85f13d5 Implement display-time wrap/line-prefix feature
Miles Bader <miles@gnu.org>
parents: 96234
diff changeset
380 unsigned avoid_cursor_p : 1;
2af6e85f13d5 Implement display-time wrap/line-prefix feature
Miles Bader <miles@gnu.org>
parents: 96234
diff changeset
381
107604
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
382 /* Resolved bidirectional level of this character [0..63]. */
107599
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
383 unsigned resolved_level : 5;
107598
4bad2c6338cc Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents: 107596
diff changeset
384
4bad2c6338cc Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents: 107596
diff changeset
385 /* Resolved bidirectional type of this character, see enum
107599
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
386 bidi_type_t below. Note that according to UAX#9, only some
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
387 values (STRONG_L, STRONG_R, WEAK_AN, WEAK_EN, WEAK_BN, and
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
388 NEUTRAL_B) can appear in the resolved type, so we only reserve
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
389 space for those that can. */
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
390 unsigned bidi_type : 3;
107598
4bad2c6338cc Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents: 107596
diff changeset
391
96470
2af6e85f13d5 Implement display-time wrap/line-prefix feature
Miles Bader <miles@gnu.org>
parents: 96234
diff changeset
392 #define FACE_ID_BITS 20
53328
dc1470f3ebd7 (FACE_ID_BITS, MAX_FACE_ID): New defines.
Kim F. Storm <storm@cua.dk>
parents: 53175
diff changeset
393
63546
119eb8c37b61 (spec_glyph_lookup_face): Add declaration.
Richard M. Stallman <rms@gnu.org>
parents: 61632
diff changeset
394 /* Face of the glyph. This is a realized face ID,
119eb8c37b61 (spec_glyph_lookup_face): Add declaration.
Richard M. Stallman <rms@gnu.org>
parents: 61632
diff changeset
395 an index in the face cache of the frame. */
53328
dc1470f3ebd7 (FACE_ID_BITS, MAX_FACE_ID): New defines.
Kim F. Storm <storm@cua.dk>
parents: 53175
diff changeset
396 unsigned face_id : FACE_ID_BITS;
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
397
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
398 /* Type of font used to display the character glyph. May be used to
29311
ae557edf565b (struct glyph) [WINDOWSNT]: Add w32_font_type member.
Jason Rumney <jasonr@gnu.org>
parents: 28985
diff changeset
399 determine which set of functions to use to obtain font metrics
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
400 for the glyph. On W32, value should be an enumerator of the type
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
401 w32_char_font_type. Otherwise it equals FONT_TYPE_UNKNOWN. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
402 unsigned font_type : 3;
29311
ae557edf565b (struct glyph) [WINDOWSNT]: Add w32_font_type member.
Jason Rumney <jasonr@gnu.org>
parents: 28985
diff changeset
403
110598
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
404 /* A union of sub-structures for different glyph types. */
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
405 union
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
406 {
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
407 /* Metrics of a partial glyph of an image (type == IMAGE_GLYPH). */
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
408 struct glyph_slice img;
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
409 /* Start and end indices of glyphs of a graphme cluster of a
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
410 composition (type == COMPOSITE_GLYPH). */
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
411 struct { int from, to; } cmp;
111235
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
412 /* Pixel offsets for upper and lower part of the acronym. */
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
413 struct {
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
414 short upper_xoff, upper_yoff;
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
415 short lower_xoff, lower_yoff;
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
416 } glyphless;
110598
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
417 } slice;
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
418
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
419 /* A union of sub-structures for different glyph types. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
420 union
1409
7fd1c810daca * dispextern.h: New element of frame structure `max_ascent'.
Joseph Arceneaux <jla@gnu.org>
parents: 764
diff changeset
421 {
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
422 /* Character code for character glyphs (type == CHAR_GLYPH). */
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
423 unsigned ch;
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
424
110598
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
425 /* Sub-structures for type == COMPOSITE_GLYPH. */
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
426 struct
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
427 {
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
428 /* Flag to tell if the composition is automatic or not. */
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
429 unsigned automatic : 1;
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
430 /* ID of the composition. */
110598
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
431 unsigned id : 31;
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
432 } cmp;
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
433
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
434 /* Image ID for image glyphs (type == IMAGE_GLYPH). */
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
435 unsigned img_id;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
436
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
437 /* Sub-structure for type == STRETCH_GLYPH. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
438 struct
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
439 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
440 /* The height of the glyph. */
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
441 unsigned height : 16;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
442
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
443 /* The ascent of the glyph. */
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
444 unsigned ascent : 16;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
445 }
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
446 stretch;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
447
111235
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
448 /* Sub-stretch for type == GLYPHLESS_GLYPH. */
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
449 struct
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
450 {
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
451 /* Value is an enum of the type glyphless_display_method. */
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
452 unsigned method : 2;
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
453 /* 1 iff this glyph is for a character of no font. */
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
454 unsigned for_no_font : 1;
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
455 /* Length of acronym or hexadecimal code string (at most 8). */
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
456 unsigned len : 4;
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
457 /* Character to display. Actually we need only 22 bits. */
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
458 unsigned ch : 26;
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
459 } glyphless;
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
460
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
461 /* Used to compare all bit-fields above in one step. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
462 unsigned val;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
463 } u;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
464 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
465
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
466
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
467 /* Default value of the glyph font_type field. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
468
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
469 #define FONT_TYPE_UNKNOWN 0
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
470
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
471 /* Is GLYPH a space? */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
472
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
473 #define CHAR_GLYPH_SPACE_P(GLYPH) \
92393
26aa5e50effb (CHAR_GLYPH_SPACE_P): Check for default face.
Kim F. Storm <storm@cua.dk>
parents: 92275
diff changeset
474 ((GLYPH).u.ch == SPACEGLYPH && (GLYPH).face_id == DEFAULT_FACE_ID)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
475
110598
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
476 /* Are glyph slices of glyphs *X and *Y equal? It assumes that both
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
477 glyphs have the same type.
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
478
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
479 Note: for composition glyphs, we don't have to compare slice.cmp.to
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
480 because they should be the same if and only if slice.cmp.from are
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
481 the same. */
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
482
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
483 #define GLYPH_SLICE_EQUAL_P(X, Y) \
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
484 ((X)->type == IMAGE_GLYPH \
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
485 ? ((X)->slice.img.x == (Y)->slice.img.x \
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
486 && (X)->slice.img.y == (Y)->slice.img.y \
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
487 && (X)->slice.img.width == (Y)->slice.img.width \
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
488 && (X)->slice.img.height == (Y)->slice.img.height) \
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
489 : ((X)->type != COMPOSITE_GLYPH \
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
490 || (X)->slice.cmp.from == (Y)->slice.cmp.from))
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
491
30040
7249274abdec Add some comments.
Gerd Moellmann <gerd@gnu.org>
parents: 29859
diff changeset
492 /* Are glyphs *X and *Y displayed equal? */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
493
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
494 #define GLYPH_EQUAL_P(X, Y) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
495 ((X)->type == (Y)->type \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
496 && (X)->u.val == (Y)->u.val \
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
497 && GLYPH_SLICE_EQUAL_P (X, Y) \
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
498 && (X)->face_id == (Y)->face_id \
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
499 && (X)->padding_p == (Y)->padding_p \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
500 && (X)->left_box_line_p == (Y)->left_box_line_p \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
501 && (X)->right_box_line_p == (Y)->right_box_line_p \
34800
075528550112 (GLYPH_EQUAL_P): Also compare pixel widths,
Gerd Moellmann <gerd@gnu.org>
parents: 34787
diff changeset
502 && (X)->voffset == (Y)->voffset \
075528550112 (GLYPH_EQUAL_P): Also compare pixel widths,
Gerd Moellmann <gerd@gnu.org>
parents: 34787
diff changeset
503 && (X)->pixel_width == (Y)->pixel_width)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
504
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
505 /* Are character codes, faces, padding_ps of glyphs *X and *Y equal? */
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
506
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
507 #define GLYPH_CHAR_AND_FACE_EQUAL_P(X, Y) \
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
508 ((X)->u.ch == (Y)->u.ch \
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
509 && (X)->face_id == (Y)->face_id \
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
510 && (X)->padding_p == (Y)->padding_p)
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
511
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
512 /* Fill a character glyph GLYPH. CODE, FACE_ID, PADDING_P correspond
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
513 to the bits defined for the typedef `GLYPH' in lisp.h. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
514
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
515 #define SET_CHAR_GLYPH(GLYPH, CODE, FACE_ID, PADDING_P) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
516 do \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
517 { \
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
518 (GLYPH).u.ch = (CODE); \
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
519 (GLYPH).face_id = (FACE_ID); \
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
520 (GLYPH).padding_p = (PADDING_P); \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
521 } \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
522 while (0)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
523
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
524 /* Fill a character type glyph GLYPH from a glyph typedef FROM as
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
525 defined in lisp.h. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
526
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
527 #define SET_CHAR_GLYPH_FROM_GLYPH(GLYPH, FROM) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
528 SET_CHAR_GLYPH ((GLYPH), \
92275
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
529 GLYPH_CHAR ((FROM)), \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
530 GLYPH_FACE ((FROM)), \
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
531 0)
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
532
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
533 /* Construct a glyph code from a character glyph GLYPH. If the
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
534 character is multibyte, return -1 as we can't use glyph table for a
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
535 multibyte character. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
536
92275
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
537 #define SET_GLYPH_FROM_CHAR_GLYPH(G, GLYPH) \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
538 do \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
539 { \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
540 if ((GLYPH).u.ch < 256) \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
541 SET_GLYPH ((G), (GLYPH).u.ch, ((GLYPH).face_id)); \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
542 else \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
543 SET_GLYPH ((G), -1, 0); \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
544 } \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
545 while (0)
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
546
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
547 #define GLYPH_INVALID_P(GLYPH) (GLYPH_CHAR (GLYPH) < 0)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
548
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
549 /* Is GLYPH a padding glyph? */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
550
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
551 #define CHAR_GLYPH_PADDING_P(GLYPH) (GLYPH).padding_p
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
552
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
553
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
554
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
555
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
556 /***********************************************************************
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
557 Glyph Pools
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
558 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
559
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
560 /* Glyph Pool.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
561
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
562 Glyph memory for frame-based redisplay is allocated from the heap
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
563 in one vector kept in a glyph pool structure which is stored with
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
564 the frame. The size of the vector is made large enough to cover
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
565 all windows on the frame.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
566
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
567 Both frame and window glyph matrices reference memory from a glyph
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
568 pool in frame-based redisplay.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
569
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
570 In window-based redisplay, no glyphs pools exist; windows allocate
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
571 and free their glyph memory themselves. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
572
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
573 struct glyph_pool
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
574 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
575 /* Vector of glyphs allocated from the heap. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
576 struct glyph *glyphs;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
577
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
578 /* Allocated size of `glyphs'. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
579 int nglyphs;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
580
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
581 /* Number of rows and columns in a matrix. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
582 int nrows, ncolumns;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
583 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
584
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
585
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
586
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
587 /***********************************************************************
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
588 Glyph Matrix
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
589 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
590
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
591 /* Glyph Matrix.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
592
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
593 Three kinds of glyph matrices exist:
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
594
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
595 1. Frame glyph matrices. These are used for terminal frames whose
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
596 redisplay needs a view of the whole screen due to limited terminal
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
597 capabilities. Frame matrices are used only in the update phase
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
598 of redisplay. They are built in update_frame and not used after
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
599 the update has been performed.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
600
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
601 2. Window glyph matrices on frames having frame glyph matrices.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
602 Such matrices are sub-matrices of their corresponding frame matrix,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
603 i.e. frame glyph matrices and window glyph matrices share the same
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
604 glyph memory which is allocated in form of a glyph_pool structure.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
605 Glyph rows in such a window matrix are slices of frame matrix rows.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
606
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
607 2. Free-standing window glyph matrices managing their own glyph
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
608 storage. This form is used in window-based redisplay which
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
609 includes variable width and height fonts etc.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
610
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
611 The size of a window's row vector depends on the height of fonts
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
612 defined on its frame. It is chosen so that the vector is large
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
613 enough to describe all lines in a window when it is displayed in
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
614 the smallest possible character size. When new fonts are loaded,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
615 or window sizes change, the row vector is adjusted accordingly. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
616
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
617 struct glyph_matrix
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
618 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
619 /* The pool from which glyph memory is allocated, if any. This is
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
620 null for frame matrices and for window matrices managing their
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
621 own storage. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
622 struct glyph_pool *pool;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
623
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
624 /* Vector of glyph row structures. The row at nrows - 1 is reserved
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
625 for the mode line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
626 struct glyph_row *rows;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
627
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
628 /* Number of elements allocated for the vector rows above. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
629 int rows_allocated;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
630
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
631 /* The number of rows used by the window if all lines were displayed
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
632 with the smallest possible character height. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
633 int nrows;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
634
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
635 /* Origin within the frame matrix if this is a window matrix on a
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
636 frame having a frame matrix. Both values are zero for
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
637 window-based redisplay. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
638 int matrix_x, matrix_y;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
639
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
640 /* Width and height of the matrix in columns and rows. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
641 int matrix_w, matrix_h;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
642
34280
4a7a6cfe861d (struct glyph_matrix): Add member window_left_x.
Gerd Moellmann <gerd@gnu.org>
parents: 34226
diff changeset
643 /* If this structure describes a window matrix of window W,
51192
e7a9fef91d7d (struct glyph_matrix): Rename members window_left_x
Kim F. Storm <storm@cua.dk>
parents: 50356
diff changeset
644 window_left_col is the value of W->left_col, window_top_line the
e7a9fef91d7d (struct glyph_matrix): Rename members window_left_x
Kim F. Storm <storm@cua.dk>
parents: 50356
diff changeset
645 value of W->top_line, window_height and window_width are width and
e7a9fef91d7d (struct glyph_matrix): Rename members window_left_x
Kim F. Storm <storm@cua.dk>
parents: 50356
diff changeset
646 height of W, as returned by window_box, and window_vscroll is the
e7a9fef91d7d (struct glyph_matrix): Rename members window_left_x
Kim F. Storm <storm@cua.dk>
parents: 50356
diff changeset
647 value of W->vscroll at the time the matrix was last adjusted.
e7a9fef91d7d (struct glyph_matrix): Rename members window_left_x
Kim F. Storm <storm@cua.dk>
parents: 50356
diff changeset
648 Only set for window-based redisplay. */
e7a9fef91d7d (struct glyph_matrix): Rename members window_left_x
Kim F. Storm <storm@cua.dk>
parents: 50356
diff changeset
649 int window_left_col, window_top_line;
e7a9fef91d7d (struct glyph_matrix): Rename members window_left_x
Kim F. Storm <storm@cua.dk>
parents: 50356
diff changeset
650 int window_height, window_width;
e7a9fef91d7d (struct glyph_matrix): Rename members window_left_x
Kim F. Storm <storm@cua.dk>
parents: 50356
diff changeset
651 int window_vscroll;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
652
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
653 /* Number of glyphs reserved for left and right marginal areas when
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
654 the matrix was last adjusted. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
655 int left_margin_glyphs, right_margin_glyphs;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
656
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
657 /* Flag indicating that scrolling should not be tried in
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
658 update_window. This flag is set by functions like try_window_id
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
659 which do their own scrolling. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
660 unsigned no_scrolling_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
661
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
662 /* Non-zero means window displayed in this matrix has a top mode
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
663 line. */
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
664 unsigned header_line_p : 1;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
665
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
666 #ifdef GLYPH_DEBUG
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
667 /* A string identifying the method used to display the matrix. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
668 char method[512];
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
669 #endif
25371
f13b05bf590b (struct glyph_matrix): Add buffer, begv, and zv.
Gerd Moellmann <gerd@gnu.org>
parents: 25344
diff changeset
670
37628
694764db81f8 Comment fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 37609
diff changeset
671 /* The buffer this matrix displays. Set in
694764db81f8 Comment fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 37609
diff changeset
672 mark_window_display_accurate_1. */
25371
f13b05bf590b (struct glyph_matrix): Add buffer, begv, and zv.
Gerd Moellmann <gerd@gnu.org>
parents: 25344
diff changeset
673 struct buffer *buffer;
f13b05bf590b (struct glyph_matrix): Add buffer, begv, and zv.
Gerd Moellmann <gerd@gnu.org>
parents: 25344
diff changeset
674
37628
694764db81f8 Comment fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 37609
diff changeset
675 /* Values of BEGV and ZV as of last redisplay. Set in
694764db81f8 Comment fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 37609
diff changeset
676 mark_window_display_accurate_1. */
25371
f13b05bf590b (struct glyph_matrix): Add buffer, begv, and zv.
Gerd Moellmann <gerd@gnu.org>
parents: 25344
diff changeset
677 int begv, zv;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
678 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
679
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
680
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
681 /* Check that glyph pointers stored in glyph rows of MATRIX are okay.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
682 This aborts if any pointer is found twice. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
683
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
684 #if GLYPH_DEBUG
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
685 void check_matrix_pointer_lossage (struct glyph_matrix *);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
686 #define CHECK_MATRIX(MATRIX) check_matrix_pointer_lossage ((MATRIX))
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
687 #else
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
688 #define CHECK_MATRIX(MATRIX) (void) 0
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
689 #endif
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
690
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
691
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
692
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
693 /***********************************************************************
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
694 Glyph Rows
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
695 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
696
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
697 /* Area in window glyph matrix. If values are added or removed, the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
698 function mark_object in alloc.c has to be changed. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
699
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
700 enum glyph_row_area
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
701 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
702 LEFT_MARGIN_AREA,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
703 TEXT_AREA,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
704 RIGHT_MARGIN_AREA,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
705 LAST_AREA
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
706 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
707
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
708
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
709 /* Rows of glyphs in a windows or frame glyph matrix.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
710
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
711 Each row is partitioned into three areas. The start and end of
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
712 each area is recorded in a pointer as shown below.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
713
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
714 +--------------------+-------------+---------------------+
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
715 | left margin area | text area | right margin area |
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
716 +--------------------+-------------+---------------------+
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
717 | | | |
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
718 glyphs[LEFT_MARGIN_AREA] glyphs[RIGHT_MARGIN_AREA]
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
719 | |
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
720 glyphs[TEXT_AREA] |
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
721 glyphs[LAST_AREA]
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
722
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
723 Rows in frame matrices reference glyph memory allocated in a frame
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
724 glyph pool (see the description of struct glyph_pool). Rows in
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
725 window matrices on frames having frame matrices reference slices of
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
726 the glyphs of corresponding rows in the frame matrix.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
727
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
728 Rows in window matrices on frames having no frame matrices point to
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
729 glyphs allocated from the heap via xmalloc;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
730 glyphs[LEFT_MARGIN_AREA] is the start address of the allocated
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
731 glyph structure array. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
732
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
733 struct glyph_row
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
734 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
735 /* Pointers to beginnings of areas. The end of an area A is found at
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
736 A + 1 in the vector. The last element of the vector is the end
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
737 of the whole row.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
738
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
739 Kludge alert: Even if used[TEXT_AREA] == 0, glyphs[TEXT_AREA][0]'s
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
740 position field is used. It is -1 if this row does not correspond
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
741 to any text; it is some buffer position if the row corresponds to
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
742 an empty display line that displays a line end. This is what old
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
743 redisplay used to do. (Except in code for terminal frames, this
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
744 kludge is no longer used, I believe. --gerd).
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
745
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
746 See also start, end, displays_text_p and ends_at_zv_p for cleaner
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
747 ways to do it. The special meaning of positions 0 and -1 will be
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
748 removed some day, so don't use it in new code. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
749 struct glyph *glyphs[1 + LAST_AREA];
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
750
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
751 /* Number of glyphs actually filled in areas. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
752 short used[LAST_AREA];
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
753
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
754 /* Window-relative x and y-position of the top-left corner of this
85251
5059c82a6ddf Replace `abs' with `eabs'.
Eli Zaretskii <eliz@gnu.org>
parents: 84665
diff changeset
755 row. If y < 0, this means that eabs (y) pixels of the row are
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
756 invisible because it is partially visible at the top of a window.
85251
5059c82a6ddf Replace `abs' with `eabs'.
Eli Zaretskii <eliz@gnu.org>
parents: 84665
diff changeset
757 If x < 0, this means that eabs (x) pixels of the first glyph of
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
758 the text area of the row are invisible because the glyph is
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
759 partially visible. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
760 int x, y;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
761
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
762 /* Width of the row in pixels without taking face extension at the
38266
6f8192f9ec53 Improve a comment.
Gerd Moellmann <gerd@gnu.org>
parents: 38189
diff changeset
763 end of the row into account, and without counting truncation
6f8192f9ec53 Improve a comment.
Gerd Moellmann <gerd@gnu.org>
parents: 38189
diff changeset
764 and continuation glyphs at the end of a row on ttys. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
765 int pixel_width;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
766
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
767 /* Logical ascent/height of this line. The value of ascent is zero
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
768 and height is 1 on terminal frames. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
769 int ascent, height;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
770
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
771 /* Physical ascent/height of this line. If max_ascent > ascent,
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
772 this line overlaps the line above it on the display. Otherwise,
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
773 if max_height > height, this line overlaps the line beneath it. */
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
774 int phys_ascent, phys_height;
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
775
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
776 /* Portion of row that is visible. Partially visible rows may be
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
777 found at the top and bottom of a window. This is 1 for tty
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
778 frames. It may be < 0 in case of completely invisible rows. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
779 int visible_height;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
780
58174
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
781 /* Extra line spacing added after this row. Do not consider this
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
782 in last row when checking if row is fully visible. */
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
783 int extra_line_spacing;
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
784
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
785 /* Hash code. This hash code is available as soon as the row
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
786 is constructed, i.e. after a call to display_line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
787 unsigned hash;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
788
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
789 /* First position in this row. This is the text position, including
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
790 overlay position information etc, where the display of this row
108656
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
791 started, and can thus be less than the position of the first
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
792 glyph (e.g. due to invisible text or horizontal scrolling).
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
793 BIDI Note: In R2L rows, that have its reversed_p flag set, this
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
794 position is at or beyond the right edge of the row. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
795 struct display_pos start;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
796
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
797 /* Text position at the end of this row. This is the position after
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
798 the last glyph on this row. It can be greater than the last
108656
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
799 glyph position + 1, due to a newline that ends the line,
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
800 truncation, invisible text etc. In an up-to-date display, this
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
801 should always be equal to the start position of the next row.
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
802 BIDI Note: In R2L rows, this position is at or beyond the left
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
803 edge of the row. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
804 struct display_pos end;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
805
108656
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
806 /* The smallest and the largest buffer positions that contributed to
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
807 glyphs in this row. Note that due to bidi reordering, these are
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
808 in general different from the text positions stored in `start'
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
809 and `end' members above, and also different from the buffer
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
810 positions recorded in the glyphs displayed the leftmost and
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
811 rightmost on the screen. */
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
812 struct text_pos minpos, maxpos;
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
813
61632
eaab88b49978 (struct glyph_row): New member overlay_arrow_bitmap.
Kim F. Storm <storm@cua.dk>
parents: 60833
diff changeset
814 /* Non-zero means the overlay arrow bitmap is on this line.
eaab88b49978 (struct glyph_row): New member overlay_arrow_bitmap.
Kim F. Storm <storm@cua.dk>
parents: 60833
diff changeset
815 -1 means use default overlay arrow bitmap, else
eaab88b49978 (struct glyph_row): New member overlay_arrow_bitmap.
Kim F. Storm <storm@cua.dk>
parents: 60833
diff changeset
816 it specifies actual fringe bitmap number. */
eaab88b49978 (struct glyph_row): New member overlay_arrow_bitmap.
Kim F. Storm <storm@cua.dk>
parents: 60833
diff changeset
817 int overlay_arrow_bitmap;
eaab88b49978 (struct glyph_row): New member overlay_arrow_bitmap.
Kim F. Storm <storm@cua.dk>
parents: 60833
diff changeset
818
53604
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
819 /* Left fringe bitmap number (enum fringe_bitmap_type). */
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
820 unsigned left_user_fringe_bitmap : FRINGE_ID_BITS;
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
821
57276
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
822 /* Right fringe bitmap number (enum fringe_bitmap_type). */
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
823 unsigned right_user_fringe_bitmap : FRINGE_ID_BITS;
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
824
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
825 /* Left fringe bitmap number (enum fringe_bitmap_type). */
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
826 unsigned left_fringe_bitmap : FRINGE_ID_BITS;
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
827
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
828 /* Right fringe bitmap number (enum fringe_bitmap_type). */
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
829 unsigned right_fringe_bitmap : FRINGE_ID_BITS;
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
830
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
831 /* Face of the left fringe glyph. */
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
832 unsigned left_user_fringe_face_id : FACE_ID_BITS;
53604
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
833
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
834 /* Face of the right fringe glyph. */
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
835 unsigned right_user_fringe_face_id : FACE_ID_BITS;
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
836
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
837 /* Face of the left fringe glyph. */
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
838 unsigned left_fringe_face_id : FACE_ID_BITS;
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
839
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
840 /* Face of the right fringe glyph. */
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
841 unsigned right_fringe_face_id : FACE_ID_BITS;
53604
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
842
109296
f6f0d450d542 Fix ghost buffer boundary indicators in fringes (Bug#5634, Bug#6325).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 107526
diff changeset
843 /* Vertical offset of the left fringe bitmap. */
f6f0d450d542 Fix ghost buffer boundary indicators in fringes (Bug#5634, Bug#6325).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 107526
diff changeset
844 signed left_fringe_offset : FRINGE_HEIGHT_BITS;
f6f0d450d542 Fix ghost buffer boundary indicators in fringes (Bug#5634, Bug#6325).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 107526
diff changeset
845
f6f0d450d542 Fix ghost buffer boundary indicators in fringes (Bug#5634, Bug#6325).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 107526
diff changeset
846 /* Vertical offset of the right fringe bitmap. */
f6f0d450d542 Fix ghost buffer boundary indicators in fringes (Bug#5634, Bug#6325).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 107526
diff changeset
847 signed right_fringe_offset : FRINGE_HEIGHT_BITS;
f6f0d450d542 Fix ghost buffer boundary indicators in fringes (Bug#5634, Bug#6325).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 107526
diff changeset
848
53604
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
849 /* 1 means that we must draw the bitmaps of this row. */
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
850 unsigned redraw_fringe_bitmaps_p : 1;
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
851
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
852 /* In a desired matrix, 1 means that this row must be updated. In a
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
853 current matrix, 0 means that the row has been invalidated, i.e.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
854 the row's contents do not agree with what is visible on the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
855 screen. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
856 unsigned enabled_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
857
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
858 /* 1 means row displays a text line that is truncated on the left or
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
859 right side. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
860 unsigned truncated_on_left_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
861 unsigned truncated_on_right_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
862
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
863 /* 1 means that this row displays a continued line, i.e. it has a
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
864 continuation mark at the right side. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
865 unsigned continued_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
866
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
867 /* 0 means that this row does not contain any text, i.e. it is
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
868 a blank line at the window and buffer end. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
869 unsigned displays_text_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
870
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
871 /* 1 means that this line ends at ZV. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
872 unsigned ends_at_zv_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
873
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
874 /* 1 means the face of the last glyph in the text area is drawn to
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
875 the right end of the window. This flag is used in
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
876 update_text_area to optimize clearing to the end of the area. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
877 unsigned fill_line_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
878
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
879 /* Non-zero means display a bitmap on X frames indicating that this
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
880 line contains no text and ends in ZV. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
881 unsigned indicate_empty_line_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
882
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
883 /* 1 means this row contains glyphs that overlap each other because
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
884 of lbearing or rbearing. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
885 unsigned contains_overlapping_glyphs_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
886
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
887 /* 1 means this row is as wide as the window it is displayed in, including
41119
615c460b28c7 Fringe cleanup.
Kim F. Storm <storm@cua.dk>
parents: 41061
diff changeset
888 scroll bars, fringes, and internal borders. This also
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
889 implies that the row doesn't have marginal areas. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
890 unsigned full_width_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
891
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
892 /* Non-zero means row is a mode or header-line. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
893 unsigned mode_line_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
894
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
895 /* 1 in a current row means this row is overlapped by another row. */
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
896 unsigned overlapped_p : 1;
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
897
29474
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
898 /* 1 means this line ends in the middle of a character consisting
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
899 of more than one glyph. Some glyphs have been put in this row,
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
900 the rest are put in rows below this one. */
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
901 unsigned ends_in_middle_of_char_p : 1;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
902
29474
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
903 /* 1 means this line starts in the middle of a character consisting
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
904 of more than one glyph. Some glyphs have been put in the
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
905 previous row, the rest are put in this row. */
29474
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
906 unsigned starts_in_middle_of_char_p : 1;
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
907
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
908 /* 1 in a current row means this row overlaps others. */
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
909 unsigned overlapping_p : 1;
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
910
30151
de813a66787a (struct glyph_row): Add flag mouse_face_p.
Gerd Moellmann <gerd@gnu.org>
parents: 30040
diff changeset
911 /* 1 means some glyphs in this row are displayed in mouse-face. */
de813a66787a (struct glyph_row): Add flag mouse_face_p.
Gerd Moellmann <gerd@gnu.org>
parents: 30040
diff changeset
912 unsigned mouse_face_p : 1;
de813a66787a (struct glyph_row): Add flag mouse_face_p.
Gerd Moellmann <gerd@gnu.org>
parents: 30040
diff changeset
913
39521
477edfe737e3 (struct glyph_row) <ends_in_newline_from_string_p>:
Gerd Moellmann <gerd@gnu.org>
parents: 39447
diff changeset
914 /* 1 means this row was ended by a newline from a string. */
477edfe737e3 (struct glyph_row) <ends_in_newline_from_string_p>:
Gerd Moellmann <gerd@gnu.org>
parents: 39447
diff changeset
915 unsigned ends_in_newline_from_string_p : 1;
477edfe737e3 (struct glyph_row) <ends_in_newline_from_string_p>:
Gerd Moellmann <gerd@gnu.org>
parents: 39447
diff changeset
916
53604
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
917 /* 1 means this row width is exactly the width of the window, and the
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
918 final newline character is hidden in the right fringe. */
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
919 unsigned exact_window_width_line_p : 1;
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
920
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
921 /* 1 means this row currently shows the cursor in the right fringe. */
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
922 unsigned cursor_in_fringe_p : 1;
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
923
59268
2d8a6be1520d (struct it): New element ellipsis_p.
Richard M. Stallman <rms@gnu.org>
parents: 59146
diff changeset
924 /* 1 means the last glyph in the row is part of an ellipsis. */
2d8a6be1520d (struct it): New element ellipsis_p.
Richard M. Stallman <rms@gnu.org>
parents: 59146
diff changeset
925 unsigned ends_in_ellipsis_p : 1;
2d8a6be1520d (struct it): New element ellipsis_p.
Richard M. Stallman <rms@gnu.org>
parents: 59146
diff changeset
926
53604
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
927 /* Non-zero means display a bitmap on X frames indicating that this
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
928 the first line of the buffer. */
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
929 unsigned indicate_bob_p : 1;
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
930
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
931 /* Non-zero means display a bitmap on X frames indicating that this
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
932 the top line of the window, but not start of the buffer. */
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
933 unsigned indicate_top_line_p : 1;
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
934
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
935 /* Non-zero means display a bitmap on X frames indicating that this
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
936 the last line of the buffer. */
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
937 unsigned indicate_eob_p : 1;
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
938
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
939 /* Non-zero means display a bitmap on X frames indicating that this
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
940 the bottom line of the window, but not end of the buffer. */
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
941 unsigned indicate_bottom_line_p : 1;
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
942
107596
866e76f8ad75 Retrospective commit from 2009-10-08.
Eli Zaretskii <eliz@gnu.org>
parents: 107595
diff changeset
943 /* Non-zero means the row was reversed to display text in a
866e76f8ad75 Retrospective commit from 2009-10-08.
Eli Zaretskii <eliz@gnu.org>
parents: 107595
diff changeset
944 right-to-left paragraph. */
866e76f8ad75 Retrospective commit from 2009-10-08.
Eli Zaretskii <eliz@gnu.org>
parents: 107595
diff changeset
945 unsigned reversed_p : 1;
866e76f8ad75 Retrospective commit from 2009-10-08.
Eli Zaretskii <eliz@gnu.org>
parents: 107595
diff changeset
946
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
947 /* Continuation lines width at the start of the row. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
948 int continuation_lines_width;
91022
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
949
91047
1cf8ecbaa1dc Fix non-window-system compilation
Miles Bader <miles@gnu.org>
parents: 91041
diff changeset
950 #ifdef HAVE_WINDOW_SYSTEM
91022
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
951 /* Non-NULL means the current clipping area. This is temporarily
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
952 set while exposing a region. Coordinates are frame-relative. */
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
953 XRectangle *clip;
91047
1cf8ecbaa1dc Fix non-window-system compilation
Miles Bader <miles@gnu.org>
parents: 91041
diff changeset
954 #endif
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
955 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
956
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
957
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
958 /* Get a pointer to row number ROW in matrix MATRIX. If GLYPH_DEBUG
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
959 is defined to a non-zero value, the function matrix_row checks that
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
960 we don't try to access rows that are out of bounds. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
961
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
962 #if GLYPH_DEBUG
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
963 struct glyph_row *matrix_row (struct glyph_matrix *, int);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
964 #define MATRIX_ROW(MATRIX, ROW) matrix_row ((MATRIX), (ROW))
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
965 #else
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
966 #define MATRIX_ROW(MATRIX, ROW) ((MATRIX)->rows + (ROW))
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
967 #endif
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
968
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
969 /* Return a pointer to the row reserved for the mode line in MATRIX.
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
970 Row MATRIX->nrows - 1 is always reserved for the mode line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
971
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
972 #define MATRIX_MODE_LINE_ROW(MATRIX) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
973 ((MATRIX)->rows + (MATRIX)->nrows - 1)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
974
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
975 /* Return a pointer to the row reserved for the header line in MATRIX.
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
976 This is always the first row in MATRIX because that's the only
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
977 way that works in frame-based redisplay. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
978
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
979 #define MATRIX_HEADER_LINE_ROW(MATRIX) (MATRIX)->rows
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
980
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
981 /* Return a pointer to first row in MATRIX used for text display. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
982
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
983 #define MATRIX_FIRST_TEXT_ROW(MATRIX) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
984 ((MATRIX)->rows->mode_line_p ? (MATRIX)->rows + 1 : (MATRIX)->rows)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
985
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
986 /* Return a pointer to the first glyph in the text area of a row.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
987 MATRIX is the glyph matrix accessed, and ROW is the row index in
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
988 MATRIX. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
989
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
990 #define MATRIX_ROW_GLYPH_START(MATRIX, ROW) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
991 (MATRIX_ROW ((MATRIX), (ROW))->glyphs[TEXT_AREA])
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
992
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
993 /* Return the number of used glyphs in the text area of a row. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
994
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
995 #define MATRIX_ROW_USED(MATRIX, ROW) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
996 (MATRIX_ROW ((MATRIX), (ROW))->used[TEXT_AREA])
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
997
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
998 /* Return the character/ byte position at which the display of ROW
107591
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
999 starts. BIDI Note: this is the smallest character/byte position
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1000 among characters in ROW, i.e. the first logical-order character
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1001 displayed by ROW, which is not necessarily the smallest horizontal
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1002 position. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1003
108656
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
1004 #define MATRIX_ROW_START_CHARPOS(ROW) ((ROW)->minpos.charpos)
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
1005 #define MATRIX_ROW_START_BYTEPOS(ROW) ((ROW)->minpos.bytepos)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1006
107591
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1007 /* Return the character/ byte position at which ROW ends. BIDI Note:
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1008 this is the largest character/byte position among characters in
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1009 ROW, i.e. the last logical-order character displayed by ROW, which
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1010 is not necessarily the largest horizontal position. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1011
108656
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
1012 #define MATRIX_ROW_END_CHARPOS(ROW) ((ROW)->maxpos.charpos)
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
1013 #define MATRIX_ROW_END_BYTEPOS(ROW) ((ROW)->maxpos.bytepos)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1014
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1015 /* Return the vertical position of ROW in MATRIX. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1016
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1017 #define MATRIX_ROW_VPOS(ROW, MATRIX) ((ROW) - (MATRIX)->rows)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1018
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1019 /* Return the last glyph row + 1 in MATRIX on window W reserved for
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1020 text. If W has a mode line, the last row in the matrix is reserved
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1021 for it. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1022
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1023 #define MATRIX_BOTTOM_TEXT_ROW(MATRIX, W) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1024 ((MATRIX)->rows \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1025 + (MATRIX)->nrows \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1026 - (WINDOW_WANTS_MODELINE_P ((W)) ? 1 : 0))
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1027
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1028 /* Non-zero if the face of the last glyph in ROW's text area has
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1029 to be drawn to the end of the text area. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1030
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1031 #define MATRIX_ROW_EXTENDS_FACE_P(ROW) ((ROW)->fill_line_p)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1032
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1033 /* Set and query the enabled_p flag of glyph row ROW in MATRIX. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1034
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1035 #define SET_MATRIX_ROW_ENABLED_P(MATRIX, ROW, VALUE) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1036 (MATRIX_ROW ((MATRIX), (ROW))->enabled_p = (VALUE) != 0)
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1037
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1038 #define MATRIX_ROW_ENABLED_P(MATRIX, ROW) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1039 (MATRIX_ROW ((MATRIX), (ROW))->enabled_p)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1040
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1041 /* Non-zero if ROW displays text. Value is non-zero if the row is
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1042 blank but displays a line end. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1043
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1044 #define MATRIX_ROW_DISPLAYS_TEXT_P(ROW) ((ROW)->displays_text_p)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1045
58174
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1046
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1047 /* Helper macros */
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1048
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1049 #define MR_PARTIALLY_VISIBLE(ROW) \
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1050 ((ROW)->height != (ROW)->visible_height)
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1051
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1052 #define MR_PARTIALLY_VISIBLE_AT_TOP(W, ROW) \
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1053 ((ROW)->y < WINDOW_HEADER_LINE_HEIGHT ((W)))
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1054
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1055 #define MR_PARTIALLY_VISIBLE_AT_BOTTOM(W, ROW) \
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1056 (((ROW)->y + (ROW)->height - (ROW)->extra_line_spacing) \
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1057 > WINDOW_BOX_HEIGHT_NO_MODE_LINE ((W)))
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1058
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1059 /* Non-zero if ROW is not completely visible in window W. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1060
58174
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1061 #define MATRIX_ROW_PARTIALLY_VISIBLE_P(W, ROW) \
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1062 (MR_PARTIALLY_VISIBLE ((ROW)) \
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1063 && (MR_PARTIALLY_VISIBLE_AT_TOP ((W), (ROW)) \
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1064 || MR_PARTIALLY_VISIBLE_AT_BOTTOM ((W), (ROW))))
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1065
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1066
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1067
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1068 /* Non-zero if ROW is partially visible at the top of window W. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1069
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1070 #define MATRIX_ROW_PARTIALLY_VISIBLE_AT_TOP_P(W, ROW) \
58174
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1071 (MR_PARTIALLY_VISIBLE ((ROW)) \
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1072 && MR_PARTIALLY_VISIBLE_AT_TOP ((W), (ROW)))
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1073
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1074 /* Non-zero if ROW is partially visible at the bottom of window W. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1075
58174
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1076 #define MATRIX_ROW_PARTIALLY_VISIBLE_AT_BOTTOM_P(W, ROW) \
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1077 (MR_PARTIALLY_VISIBLE ((ROW)) \
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1078 && MR_PARTIALLY_VISIBLE_AT_BOTTOM ((W), (ROW)))
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1079
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1080 /* Return the bottom Y + 1 of ROW. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1081
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1082 #define MATRIX_ROW_BOTTOM_Y(ROW) ((ROW)->y + (ROW)->height)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1083
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1084 /* Is ROW the last visible one in the display described by the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1085 iterator structure pointed to by IT?. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1086
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1087 #define MATRIX_ROW_LAST_VISIBLE_P(ROW, IT) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1088 (MATRIX_ROW_BOTTOM_Y ((ROW)) >= (IT)->last_visible_y)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1089
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1090 /* Non-zero if ROW displays a continuation line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1091
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1092 #define MATRIX_ROW_CONTINUATION_LINE_P(ROW) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1093 ((ROW)->continuation_lines_width > 0)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1094
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1095 /* Non-zero if ROW ends in the middle of a character. This is the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1096 case for continued lines showing only part of a display table entry
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1097 or a control char, or an overlay string. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1098
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1099 #define MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P(ROW) \
58447
be0cfc84ea0f * dispextern.h (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P)
Kim F. Storm <storm@cua.dk>
parents: 58442
diff changeset
1100 ((ROW)->end.dpvec_index > 0 \
29474
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
1101 || (ROW)->end.overlay_string_index >= 0 \
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
1102 || (ROW)->ends_in_middle_of_char_p)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1103
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1104 /* Non-zero if ROW ends in the middle of an overlay string. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1105
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1106 #define MATRIX_ROW_ENDS_IN_OVERLAY_STRING_P(ROW) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1107 ((ROW)->end.overlay_string_index >= 0)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1108
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1109 /* Non-zero if ROW starts in the middle of a character. See above. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1110
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1111 #define MATRIX_ROW_STARTS_IN_MIDDLE_OF_CHAR_P(ROW) \
58447
be0cfc84ea0f * dispextern.h (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P)
Kim F. Storm <storm@cua.dk>
parents: 58442
diff changeset
1112 ((ROW)->start.dpvec_index > 0 \
29474
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
1113 || (ROW)->starts_in_middle_of_char_p \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1114 || ((ROW)->start.overlay_string_index >= 0 \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1115 && (ROW)->start.string_pos.charpos > 0))
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1116
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1117 /* Non-zero means ROW overlaps its predecessor. */
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1118
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1119 #define MATRIX_ROW_OVERLAPS_PRED_P(ROW) \
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1120 ((ROW)->phys_ascent > (ROW)->ascent)
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1121
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1122 /* Non-zero means ROW overlaps its successor. */
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1123
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1124 #define MATRIX_ROW_OVERLAPS_SUCC_P(ROW) \
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1125 ((ROW)->phys_height - (ROW)->phys_ascent \
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1126 > (ROW)->height - (ROW)->ascent)
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1127
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1128 /* Non-zero means that fonts have been loaded since the last glyph
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1129 matrix adjustments. The function redisplay_internal adjusts glyph
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1130 matrices when this flag is non-zero. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1131
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1132 extern int fonts_changed_p;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1133
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1134 /* A glyph for a space. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1135
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1136 extern struct glyph space_glyph;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1137
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1138 /* Window being updated by update_window. This is non-null as long as
83230
d8738586aaec Remove remaining references to updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83228
diff changeset
1139 update_window has not finished, and null otherwise. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1140
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1141 extern struct window *updated_window;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1142
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1143 /* Glyph row and area updated by update_window_line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1144
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1145 extern struct glyph_row *updated_row;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1146 extern int updated_area;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1147
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1148 /* Non-zero means reading single-character input with prompt so put
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1149 cursor on mini-buffer after the prompt. Positive means at end of
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1150 text in echo area; negative means at beginning of line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1151
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1152 extern int cursor_in_echo_area;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1153
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1154 /* Non-zero means last display completed. Zero means it was
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1155 preempted. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1156
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1157 extern int display_completed;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1158
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1159 /* A temporary storage area, including a row of glyphs. Initialized
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1160 in xdisp.c. Used for various purposes, as an example see
107713
41747909cb4b Get rid of the direct_output optimizations.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107645
diff changeset
1161 get_overlay_arrow_glyph_row. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1162
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1163 extern struct glyph_row scratch_glyph_row;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1164
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1165
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1166
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1167 /************************************************************************
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1168 Glyph Strings
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1169 ************************************************************************/
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1170
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1171 /* Enumeration for overriding/changing the face to use for drawing
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1172 glyphs in draw_glyphs. */
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1173
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1174 enum draw_glyphs_face
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1175 {
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1176 DRAW_NORMAL_TEXT,
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1177 DRAW_INVERSE_VIDEO,
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1178 DRAW_CURSOR,
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1179 DRAW_MOUSE_FACE,
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1180 DRAW_IMAGE_RAISED,
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1181 DRAW_IMAGE_SUNKEN
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1182 };
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1183
50193
dadd724b7ce9 Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50149
diff changeset
1184 #ifdef HAVE_WINDOW_SYSTEM
dadd724b7ce9 Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50149
diff changeset
1185
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1186 /* A sequence of glyphs to be drawn in the same face. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1187
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1188 struct glyph_string
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1189 {
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1190 /* X-origin of the string. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1191 int x;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1192
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1193 /* Y-origin and y-position of the base line of this string. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1194 int y, ybase;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1195
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1196 /* The width of the string, not including a face extension. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1197 int width;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1198
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1199 /* The width of the string, including a face extension. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1200 int background_width;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1201
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1202 /* The height of this string. This is the height of the line this
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1203 string is drawn in, and can be different from the height of the
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1204 font the string is drawn in. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1205 int height;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1206
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1207 /* Number of pixels this string overwrites in front of its x-origin.
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1208 This number is zero if the string has an lbearing >= 0; it is
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1209 -lbearing, if the string has an lbearing < 0. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1210 int left_overhang;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1211
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1212 /* Number of pixels this string overwrites past its right-most
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1213 nominal x-position, i.e. x + width. Zero if the string's
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1214 rbearing is <= its nominal width, rbearing - width otherwise. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1215 int right_overhang;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1216
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1217 /* The frame on which the glyph string is drawn. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1218 struct frame *f;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1219
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1220 /* The window on which the glyph string is drawn. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1221 struct window *w;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1222
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1223 /* X display and window for convenience. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1224 Display *display;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1225 Window window;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1226
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1227 /* The glyph row for which this string was built. It determines the
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1228 y-origin and height of the string. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1229 struct glyph_row *row;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1230
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1231 /* The area within row. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1232 enum glyph_row_area area;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1233
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1234 /* Characters to be drawn, and number of characters. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1235 XChar2b *char2b;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1236 int nchars;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1237
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1238 /* A face-override for drawing cursors, mouse face and similar. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1239 enum draw_glyphs_face hl;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1240
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1241 /* Face in which this string is to be drawn. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1242 struct face *face;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1243
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1244 /* Font in which this string is to be drawn. */
94923
cf772caaa5f5 (struct glyph_string): Change type of `font' to
Kenichi Handa <handa@m17n.org>
parents: 93883
diff changeset
1245 struct font *font;
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1246
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1247 /* Non-null means this string describes (part of) a static
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1248 composition. */
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1249 struct composition *cmp;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1250
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1251 /* If not negative, this string describes a compos. */
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1252 int cmp_id;
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1253
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1254 /* Start and end glyph indices in a glyph-string. */
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1255 int cmp_from, cmp_to;
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1256
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1257 /* 1 means this glyph strings face has to be drawn to the right end
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1258 of the window's drawing area. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1259 unsigned extends_to_end_of_line_p : 1;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1260
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1261 /* 1 means the background of this string has been drawn. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1262 unsigned background_filled_p : 1;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1263
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1264 /* 1 means glyph string must be drawn with 16-bit functions. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1265 unsigned two_byte_p : 1;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1266
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1267 /* 1 means that the original font determined for drawing this glyph
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1268 string could not be loaded. The member `font' has been set to
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1269 the frame's default font in this case. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1270 unsigned font_not_found_p : 1;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1271
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1272 /* 1 means that the face in which this glyph string is drawn has a
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1273 stipple pattern. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1274 unsigned stippled_p : 1;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1275
65889
bc4f9a64328d (struct glyph_string): Rename member for_overlaps_p
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 65764
diff changeset
1276 #define OVERLAPS_PRED (1 << 0)
bc4f9a64328d (struct glyph_string): Rename member for_overlaps_p
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 65764
diff changeset
1277 #define OVERLAPS_SUCC (1 << 1)
bc4f9a64328d (struct glyph_string): Rename member for_overlaps_p
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 65764
diff changeset
1278 #define OVERLAPS_BOTH (OVERLAPS_PRED | OVERLAPS_SUCC)
bc4f9a64328d (struct glyph_string): Rename member for_overlaps_p
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 65764
diff changeset
1279 #define OVERLAPS_ERASED_CURSOR (1 << 2)
bc4f9a64328d (struct glyph_string): Rename member for_overlaps_p
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 65764
diff changeset
1280 /* Non-zero means only the foreground of this glyph string must be
bc4f9a64328d (struct glyph_string): Rename member for_overlaps_p
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 65764
diff changeset
1281 drawn, and we should use the physical height of the line this
bc4f9a64328d (struct glyph_string): Rename member for_overlaps_p
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 65764
diff changeset
1282 glyph string appears in as clip rect. If the value is
bc4f9a64328d (struct glyph_string): Rename member for_overlaps_p
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 65764
diff changeset
1283 OVERLAPS_ERASED_CURSOR, the clip rect is restricted to the rect
bc4f9a64328d (struct glyph_string): Rename member for_overlaps_p
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 65764
diff changeset
1284 of the erased cursor. OVERLAPS_PRED and OVERLAPS_SUCC mean we
bc4f9a64328d (struct glyph_string): Rename member for_overlaps_p
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 65764
diff changeset
1285 draw overlaps with the preceding and the succeeding rows,
bc4f9a64328d (struct glyph_string): Rename member for_overlaps_p
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 65764
diff changeset
1286 respectively. */
bc4f9a64328d (struct glyph_string): Rename member for_overlaps_p
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 65764
diff changeset
1287 unsigned for_overlaps : 3;
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1288
92188
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
1289 /* 1 means that all glyphs in this glyph string has the flag
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
1290 padding_p set, and thus must be drawn one by one to have 1-pixel
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
1291 width even though the logical width in the font is zero. */
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
1292 unsigned padding_p : 1;
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
1293
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1294 /* The GC to use for drawing this glyph string. */
97043
9592c50233ab Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96763
diff changeset
1295 #if defined(HAVE_X_WINDOWS)
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1296 GC gc;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1297 #endif
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1298 #if defined(HAVE_NTGUI)
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1299 XGCValues *gc;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1300 HDC hdc;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1301 #endif
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1302
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1303 /* A pointer to the first glyph in the string. This glyph
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1304 corresponds to char2b[0]. Needed to draw rectangles if
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1305 font_not_found_p is 1. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1306 struct glyph *first_glyph;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1307
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1308 /* Image, if any. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1309 struct image *img;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1310
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1311 /* Slice */
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1312 struct glyph_slice slice;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1313
59718
d4cb255b034d * dispextern.h (struct glyph_string): New members clip_head and
Steven Tamm <steventamm@mac.com>
parents: 59456
diff changeset
1314 /* Non-null means the horizontal clipping region starts from the
d4cb255b034d * dispextern.h (struct glyph_string): New members clip_head and
Steven Tamm <steventamm@mac.com>
parents: 59456
diff changeset
1315 left edge of *clip_head, and ends with the right edge of
d4cb255b034d * dispextern.h (struct glyph_string): New members clip_head and
Steven Tamm <steventamm@mac.com>
parents: 59456
diff changeset
1316 *clip_tail, not including their overhangs. */
d4cb255b034d * dispextern.h (struct glyph_string): New members clip_head and
Steven Tamm <steventamm@mac.com>
parents: 59456
diff changeset
1317 struct glyph_string *clip_head, *clip_tail;
d4cb255b034d * dispextern.h (struct glyph_string): New members clip_head and
Steven Tamm <steventamm@mac.com>
parents: 59456
diff changeset
1318
91022
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
1319 /* The current clipping areas. */
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
1320 NativeRectangle clip[2];
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
1321
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
1322 /* Number of clipping areas. */
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
1323 int num_clips;
90406
205c3ef62243 (struct glyph_string) [USE_FONT_BACKEND]: New
Kenichi Handa <handa@m17n.org>
parents: 90386
diff changeset
1324
94923
cf772caaa5f5 (struct glyph_string): Change type of `font' to
Kenichi Handa <handa@m17n.org>
parents: 93883
diff changeset
1325 int underline_position;
cf772caaa5f5 (struct glyph_string): Change type of `font' to
Kenichi Handa <handa@m17n.org>
parents: 93883
diff changeset
1326
cf772caaa5f5 (struct glyph_string): Change type of `font' to
Kenichi Handa <handa@m17n.org>
parents: 93883
diff changeset
1327 int underline_thickness;
cf772caaa5f5 (struct glyph_string): Change type of `font' to
Kenichi Handa <handa@m17n.org>
parents: 93883
diff changeset
1328
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1329 struct glyph_string *next, *prev;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1330 };
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1331
50193
dadd724b7ce9 Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50149
diff changeset
1332 #endif /* HAVE_WINDOW_SYSTEM */
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1333
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1334
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1335 /************************************************************************
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1336 Display Dimensions
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1337 ************************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1338
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1339 /* Return the height of the mode line in glyph matrix MATRIX, or zero
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1340 if not known. This macro is called under circumstances where
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1341 MATRIX might not have been allocated yet. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1342
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1343 #define MATRIX_MODE_LINE_HEIGHT(MATRIX) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1344 ((MATRIX) && (MATRIX)->rows \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1345 ? MATRIX_MODE_LINE_ROW (MATRIX)->height \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1346 : 0)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1347
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
1348 /* Return the height of the header line in glyph matrix MATRIX, or zero
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1349 if not known. This macro is called under circumstances where
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1350 MATRIX might not have been allocated yet. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1351
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1352 #define MATRIX_HEADER_LINE_HEIGHT(MATRIX) \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1353 ((MATRIX) && (MATRIX)->rows \
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1354 ? MATRIX_HEADER_LINE_ROW (MATRIX)->height \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1355 : 0)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1356
43242
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1357 /* Return the desired face id for the mode line of a window, depending
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1358 on whether the window is selected or not, or if the window is the
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1359 scrolling window for the currently active minibuffer window.
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1360
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1361 Due to the way display_mode_lines manipulates with the contents of
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1362 selected_window, this macro needs three arguments: SELW which is
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1363 compared against the current value of selected_window, MBW which is
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1364 compared against minibuf_window (if SELW doesn't match), and SCRW
43595
b7964dae2379 (minibuf_selected_window): Renamed from Vminibuf_selected_window.
Kim F. Storm <storm@cua.dk>
parents: 43574
diff changeset
1365 which is compared against minibuf_selected_window (if MBW matches). */
43242
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1366
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1367 #define CURRENT_MODE_LINE_FACE_ID_3(SELW, MBW, SCRW) \
43282
4e1019bea048 (CURRENT_MODE_LINE_FACE_ID_3): Use mode_line_in_non_selected_windows.
Kim F. Storm <storm@cua.dk>
parents: 43242
diff changeset
1368 ((!mode_line_in_non_selected_windows \
43242
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1369 || (SELW) == XWINDOW (selected_window) \
43282
4e1019bea048 (CURRENT_MODE_LINE_FACE_ID_3): Use mode_line_in_non_selected_windows.
Kim F. Storm <storm@cua.dk>
parents: 43242
diff changeset
1370 || (minibuf_level > 0 \
43595
b7964dae2379 (minibuf_selected_window): Renamed from Vminibuf_selected_window.
Kim F. Storm <storm@cua.dk>
parents: 43574
diff changeset
1371 && !NILP (minibuf_selected_window) \
43282
4e1019bea048 (CURRENT_MODE_LINE_FACE_ID_3): Use mode_line_in_non_selected_windows.
Kim F. Storm <storm@cua.dk>
parents: 43242
diff changeset
1372 && (MBW) == XWINDOW (minibuf_window) \
43595
b7964dae2379 (minibuf_selected_window): Renamed from Vminibuf_selected_window.
Kim F. Storm <storm@cua.dk>
parents: 43574
diff changeset
1373 && (SCRW) == XWINDOW (minibuf_selected_window))) \
43242
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1374 ? MODE_LINE_FACE_ID \
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1375 : MODE_LINE_INACTIVE_FACE_ID)
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1376
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1377
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1378 /* Return the desired face id for the mode line of window W. */
43202
d3a48ed9857d (CURRENT_MODE_LINE_FACE_ID): New macro.
Kim F. Storm <storm@cua.dk>
parents: 42955
diff changeset
1379
d3a48ed9857d (CURRENT_MODE_LINE_FACE_ID): New macro.
Kim F. Storm <storm@cua.dk>
parents: 42955
diff changeset
1380 #define CURRENT_MODE_LINE_FACE_ID(W) \
43242
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1381 (CURRENT_MODE_LINE_FACE_ID_3((W), XWINDOW (selected_window), (W)))
43202
d3a48ed9857d (CURRENT_MODE_LINE_FACE_ID): New macro.
Kim F. Storm <storm@cua.dk>
parents: 42955
diff changeset
1382
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1383 /* Return the current height of the mode line of window W. If not
33460
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1384 known from current_mode_line_height, look at W's current glyph
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1385 matrix, or return a default based on the height of the font of the
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1386 face `mode-line'. */
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1387
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1388 #define CURRENT_MODE_LINE_HEIGHT(W) \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1389 (current_mode_line_height >= 0 \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1390 ? current_mode_line_height \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1391 : (MATRIX_MODE_LINE_HEIGHT ((W)->current_matrix) \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1392 ? MATRIX_MODE_LINE_HEIGHT ((W)->current_matrix) \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1393 : estimate_mode_line_height (XFRAME ((W)->frame), \
43202
d3a48ed9857d (CURRENT_MODE_LINE_FACE_ID): New macro.
Kim F. Storm <storm@cua.dk>
parents: 42955
diff changeset
1394 CURRENT_MODE_LINE_FACE_ID (W))))
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1395
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
1396 /* Return the current height of the header line of window W. If not
33460
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1397 known from current_header_line_height, look at W's current glyph
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1398 matrix, or return an estimation based on the height of the font of
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1399 the face `header-line'. */
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1400
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1401 #define CURRENT_HEADER_LINE_HEIGHT(W) \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1402 (current_header_line_height >= 0 \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1403 ? current_header_line_height \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1404 : (MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix) \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1405 ? MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix) \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1406 : estimate_mode_line_height (XFRAME ((W)->frame), \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1407 HEADER_LINE_FACE_ID)))
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1408
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1409 /* Return the height of the desired mode line of window W. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1410
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1411 #define DESIRED_MODE_LINE_HEIGHT(W) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1412 MATRIX_MODE_LINE_HEIGHT ((W)->desired_matrix)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1413
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
1414 /* Return the height of the desired header line of window W. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1415
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1416 #define DESIRED_HEADER_LINE_HEIGHT(W) \
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1417 MATRIX_HEADER_LINE_HEIGHT ((W)->desired_matrix)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1418
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
1419 /* Value is non-zero if window W wants a mode line. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1420
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1421 #define WINDOW_WANTS_MODELINE_P(W) \
42828
48dd83c34137 (WINDOW_WANTS_MODELINE_P): Check window height > 1.
Richard M. Stallman <rms@gnu.org>
parents: 42753
diff changeset
1422 (!MINI_WINDOW_P ((W)) \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1423 && !(W)->pseudo_window_p \
42828
48dd83c34137 (WINDOW_WANTS_MODELINE_P): Check window height > 1.
Richard M. Stallman <rms@gnu.org>
parents: 42753
diff changeset
1424 && FRAME_WANTS_MODELINE_P (XFRAME (WINDOW_FRAME ((W)))) \
28417
4b675266db04 * lisp.h (XCONS, XSTRING, XSYMBOL, XFLOAT, XPROCESS, XWINDOW, XSUBR, XBUFFER):
Ken Raeburn <raeburn@raeburn.org>
parents: 28360
diff changeset
1425 && BUFFERP ((W)->buffer) \
42828
48dd83c34137 (WINDOW_WANTS_MODELINE_P): Check window height > 1.
Richard M. Stallman <rms@gnu.org>
parents: 42753
diff changeset
1426 && !NILP (XBUFFER ((W)->buffer)->mode_line_format) \
51192
e7a9fef91d7d (struct glyph_matrix): Rename members window_left_x
Kim F. Storm <storm@cua.dk>
parents: 50356
diff changeset
1427 && WINDOW_TOTAL_LINES (W) > 1)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1428
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
1429 /* Value is non-zero if window W wants a header line. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1430
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1431 #define WINDOW_WANTS_HEADER_LINE_P(W) \
42828
48dd83c34137 (WINDOW_WANTS_MODELINE_P): Check window height > 1.
Richard M. Stallman <rms@gnu.org>
parents: 42753
diff changeset
1432 (!MINI_WINDOW_P ((W)) \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1433 && !(W)->pseudo_window_p \
42828
48dd83c34137 (WINDOW_WANTS_MODELINE_P): Check window height > 1.
Richard M. Stallman <rms@gnu.org>
parents: 42753
diff changeset
1434 && FRAME_WANTS_MODELINE_P (XFRAME (WINDOW_FRAME ((W)))) \
28417
4b675266db04 * lisp.h (XCONS, XSTRING, XSYMBOL, XFLOAT, XPROCESS, XWINDOW, XSUBR, XBUFFER):
Ken Raeburn <raeburn@raeburn.org>
parents: 28360
diff changeset
1435 && BUFFERP ((W)->buffer) \
42828
48dd83c34137 (WINDOW_WANTS_MODELINE_P): Check window height > 1.
Richard M. Stallman <rms@gnu.org>
parents: 42753
diff changeset
1436 && !NILP (XBUFFER ((W)->buffer)->header_line_format) \
51192
e7a9fef91d7d (struct glyph_matrix): Rename members window_left_x
Kim F. Storm <storm@cua.dk>
parents: 50356
diff changeset
1437 && WINDOW_TOTAL_LINES (W) > 1 + !NILP (XBUFFER ((W)->buffer)->mode_line_format))
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1438
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1439
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1440 /* Return proper value to be used as baseline offset of font that has
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1441 ASCENT and DESCENT to draw characters by the font at the vertical
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1442 center of the line of frame F.
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1443
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1444 Here, our task is to find the value of BOFF in the following figure;
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1445
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1446 -------------------------+-----------+-
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1447 -+-+---------+-+ | |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1448 | | | | | |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1449 | | | | F_ASCENT F_HEIGHT
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1450 | | | ASCENT | |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1451 HEIGHT | | | | |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1452 | | |-|-+------+-----------|------- baseline
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1453 | | | | BOFF | |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1454 | |---------|-+-+ | |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1455 | | | DESCENT | |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1456 -+-+---------+-+ F_DESCENT |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1457 -------------------------+-----------+-
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1458
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1459 -BOFF + DESCENT + (F_HEIGHT - HEIGHT) / 2 = F_DESCENT
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1460 BOFF = DESCENT + (F_HEIGHT - HEIGHT) / 2 - F_DESCENT
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1461 DESCENT = FONT->descent
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1462 HEIGHT = FONT_HEIGHT (FONT)
51192
e7a9fef91d7d (struct glyph_matrix): Rename members window_left_x
Kim F. Storm <storm@cua.dk>
parents: 50356
diff changeset
1463 F_DESCENT = (FRAME_FONT (F)->descent
83431
76396de7f50a Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents: 83422
diff changeset
1464 - F->terminal->output_data.x->baseline_offset)
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1465 F_HEIGHT = FRAME_LINE_HEIGHT (F)
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1466 */
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1467
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1468 #define VCENTER_BASELINE_OFFSET(FONT, F) \
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1469 (FONT_DESCENT (FONT) \
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1470 + (FRAME_LINE_HEIGHT ((F)) - FONT_HEIGHT ((FONT)) \
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1471 + (FRAME_LINE_HEIGHT ((F)) > FONT_HEIGHT ((FONT)))) / 2 \
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1472 - (FONT_DESCENT (FRAME_FONT (F)) - FRAME_BASELINE_OFFSET (F)))
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1473
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1474
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1475 /***********************************************************************
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1476 Faces
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1477 ***********************************************************************/
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1478
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1479 /* Indices of face attributes in Lisp face vectors. Slot zero is the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1480 symbol `face'. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1481
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1482 enum lface_attribute_index
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1483 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1484 LFACE_FAMILY_INDEX = 1,
95868
13c926fbc8ed (enum lface_attribute_index): New member
Kenichi Handa <handa@m17n.org>
parents: 95792
diff changeset
1485 LFACE_FOUNDRY_INDEX,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1486 LFACE_SWIDTH_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1487 LFACE_HEIGHT_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1488 LFACE_WEIGHT_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1489 LFACE_SLANT_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1490 LFACE_UNDERLINE_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1491 LFACE_INVERSE_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1492 LFACE_FOREGROUND_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1493 LFACE_BACKGROUND_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1494 LFACE_STIPPLE_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1495 LFACE_OVERLINE_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1496 LFACE_STRIKE_THROUGH_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1497 LFACE_BOX_INDEX,
28221
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1498 LFACE_FONT_INDEX,
31177
24a1d86d0ee8 (enum lface_attribute_index): Add LFACE_INHERIT_INDEX.
Miles Bader <miles@gnu.org>
parents: 30722
diff changeset
1499 LFACE_INHERIT_INDEX,
89048
87c6cb535c03 (enum lface_attribute_index): New member LFACE_FONTSET_INDEX.
Kenichi Handa <handa@m17n.org>
parents: 88901
diff changeset
1500 LFACE_FONTSET_INDEX,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1501 LFACE_VECTOR_SIZE
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1502 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1503
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1504
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1505 /* Box types of faces. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1506
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1507 enum face_box_type
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1508 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1509 /* No box around text. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1510 FACE_NO_BOX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1511
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1512 /* Simple box of specified width and color. Default width is 1, and
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1513 default color is the foreground color of the face. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1514 FACE_SIMPLE_BOX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1515
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1516 /* Boxes with 3D shadows. Color equals the background color of the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1517 face. Width is specified. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1518 FACE_RAISED_BOX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1519 FACE_SUNKEN_BOX
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1520 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1521
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1522
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1523 /* Structure describing a realized face.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1524
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1525 For each Lisp face, 0..N realized faces can exist for different
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1526 frames and different charsets. Realized faces are built from Lisp
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1527 faces and text properties/overlays by merging faces and adding
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1528 unspecified attributes from the `default' face. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1529
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1530 struct face
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1531 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1532 /* The id of this face. The id equals the index of this face in the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1533 vector faces_by_id of its face cache. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1534 int id;
247
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1535
13407
5ebb99bc06bb [HAVE_NTGUI]: Include win32.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 9572
diff changeset
1536 #ifdef HAVE_WINDOW_SYSTEM
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1537
42709
0b6760fd748e Fix wording of a comment.
Eli Zaretskii <eliz@gnu.org>
parents: 41119
diff changeset
1538 /* If non-zero, this is a GC that we can use without modification for
0b6760fd748e Fix wording of a comment.
Eli Zaretskii <eliz@gnu.org>
parents: 41119
diff changeset
1539 drawing the characters in this face. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1540 GC gc;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1541
38499
a4baa9de015f (struct face): Change type of `stipple' to
Gerd Moellmann <gerd@gnu.org>
parents: 38266
diff changeset
1542 /* Background stipple or bitmap used for this face. This is
a4baa9de015f (struct face): Change type of `stipple' to
Gerd Moellmann <gerd@gnu.org>
parents: 38266
diff changeset
1543 an id as returned from load_pixmap. */
a4baa9de015f (struct face): Change type of `stipple' to
Gerd Moellmann <gerd@gnu.org>
parents: 38266
diff changeset
1544 int stipple;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1545
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1546 #else /* not HAVE_WINDOW_SYSTEM */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1547
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1548 /* Dummy. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1549 int stipple;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1550
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1551 #endif /* not HAVE_WINDOW_SYSTEM */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1552
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1553 /* Pixel value of foreground color for X frames. Color index
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1554 for tty frames. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1555 unsigned long foreground;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1556
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1557 /* Pixel value or color index of background color. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1558 unsigned long background;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1559
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1560 /* Pixel value or color index of underline color. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1561 unsigned long underline_color;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1562
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1563 /* Pixel value or color index of overlined, strike-through, or box
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1564 color. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1565 unsigned long overline_color;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1566 unsigned long strike_through_color;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1567 unsigned long box_color;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1568
94923
cf772caaa5f5 (struct glyph_string): Change type of `font' to
Kenichi Handa <handa@m17n.org>
parents: 93883
diff changeset
1569 struct font *font;
90406
205c3ef62243 (struct glyph_string) [USE_FONT_BACKEND]: New
Kenichi Handa <handa@m17n.org>
parents: 90386
diff changeset
1570
88901
bcf253c370e8 (struct face): Member `charset' deleted.
Kenichi Handa <handa@m17n.org>
parents: 88825
diff changeset
1571 /* Fontset ID if for this face's fontset. Non-ASCII faces derived
bcf253c370e8 (struct face): Member `charset' deleted.
Kenichi Handa <handa@m17n.org>
parents: 88825
diff changeset
1572 from the same ASCII face have the same fontset. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1573 int fontset;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1574
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1575 /* Pixmap width and height. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1576 unsigned int pixmap_w, pixmap_h;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1577
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1578 /* Non-zero means characters in this face have a box that thickness
36007
6be98ede1ec8 (struct face): Add comment for how to handle a negative value in
Kenichi Handa <handa@m17n.org>
parents: 35912
diff changeset
1579 around them. If it is negative, the absolute value indicates the
6be98ede1ec8 (struct face): Add comment for how to handle a negative value in
Kenichi Handa <handa@m17n.org>
parents: 35912
diff changeset
1580 thickness, and the horizontal lines of box (top and bottom) are
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
1581 drawn inside of characters glyph area. The vertical lines of box
36007
6be98ede1ec8 (struct face): Add comment for how to handle a negative value in
Kenichi Handa <handa@m17n.org>
parents: 35912
diff changeset
1582 (left and right) are drawn as the same way as the case that this
6be98ede1ec8 (struct face): Add comment for how to handle a negative value in
Kenichi Handa <handa@m17n.org>
parents: 35912
diff changeset
1583 value is positive. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1584 int box_line_width;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1585
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1586 /* Type of box drawn. A value of FACE_NO_BOX means no box is drawn
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1587 around text in this face. A value of FACE_SIMPLE_BOX means a box
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1588 of width box_line_width is drawn in color box_color. A value of
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1589 FACE_RAISED_BOX or FACE_SUNKEN_BOX means a 3D box is drawn with
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1590 shadow colors derived from the background color of the face. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1591 enum face_box_type box;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1592
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1593 /* If `box' above specifies a 3D type, 1 means use box_color for
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1594 drawing shadows. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1595 unsigned use_box_color_for_shadows_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1596
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1597 /* Non-zero if text in this face should be underlined, overlined,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1598 strike-through or have a box drawn around it. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1599 unsigned underline_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1600 unsigned overline_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1601 unsigned strike_through_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1602
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1603 /* 1 means that the colors specified for this face could not be
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1604 loaded, and were replaced by default colors, so they shouldn't be
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1605 freed. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1606 unsigned foreground_defaulted_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1607 unsigned background_defaulted_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1608
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1609 /* 1 means that either no color is specified for underlining or that
40552
2059c7bd529d Comment fix.
Gerd Moellmann <gerd@gnu.org>
parents: 40263
diff changeset
1610 the specified color couldn't be loaded. Use the foreground
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1611 color when drawing in that case. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1612 unsigned underline_defaulted_p : 1;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1613
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1614 /* 1 means that either no color is specified for the corresponding
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
1615 attribute or that the specified color couldn't be loaded.
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1616 Use the foreground color when drawing in that case. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1617 unsigned overline_color_defaulted_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1618 unsigned strike_through_color_defaulted_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1619 unsigned box_color_defaulted_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1620
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1621 /* TTY appearances. Blinking is not yet implemented. Colors are
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1622 found in `lface' with empty color string meaning the default
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1623 color of the TTY. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1624 unsigned tty_bold_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1625 unsigned tty_dim_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1626 unsigned tty_underline_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1627 unsigned tty_alt_charset_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1628 unsigned tty_reverse_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1629 unsigned tty_blinking_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1630
40556
69558454a8f9 (struct face) <colors_copied_bitwise_p>: New
Gerd Moellmann <gerd@gnu.org>
parents: 40552
diff changeset
1631 /* 1 means that colors of this face may not be freed because they
69558454a8f9 (struct face) <colors_copied_bitwise_p>: New
Gerd Moellmann <gerd@gnu.org>
parents: 40552
diff changeset
1632 have been copied bitwise from a base face (see
69558454a8f9 (struct face) <colors_copied_bitwise_p>: New
Gerd Moellmann <gerd@gnu.org>
parents: 40552
diff changeset
1633 realize_x_face). */
69558454a8f9 (struct face) <colors_copied_bitwise_p>: New
Gerd Moellmann <gerd@gnu.org>
parents: 40552
diff changeset
1634 unsigned colors_copied_bitwise_p : 1;
69558454a8f9 (struct face) <colors_copied_bitwise_p>: New
Gerd Moellmann <gerd@gnu.org>
parents: 40552
diff changeset
1635
48382
d4986198a59a (struct face): Add `overstrike' field.
Miles Bader <miles@gnu.org>
parents: 47996
diff changeset
1636 /* If non-zero, use overstrike (to simulate bold-face). */
d4986198a59a (struct face): Add `overstrike' field.
Miles Bader <miles@gnu.org>
parents: 47996
diff changeset
1637 unsigned overstrike : 1;
d4986198a59a (struct face): Add `overstrike' field.
Miles Bader <miles@gnu.org>
parents: 47996
diff changeset
1638
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
1639 /* NOTE: this is not used yet, but eventually this impl should be done
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
1640 similarly to overstrike */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
1641 #ifdef HAVE_NS
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
1642 /* If non-zero, use geometric rotation (to simulate italic). */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
1643 unsigned synth_ital : 1;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
1644 #endif
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
1645
100750
a3ae6efdd65b (struct face): Move lface and hash from the middle
Dan Nicolaescu <dann@ics.uci.edu>
parents: 99513
diff changeset
1646 /* The Lisp face attributes this face realizes. All attributes
a3ae6efdd65b (struct face): Move lface and hash from the middle
Dan Nicolaescu <dann@ics.uci.edu>
parents: 99513
diff changeset
1647 in this vector are non-nil. */
a3ae6efdd65b (struct face): Move lface and hash from the middle
Dan Nicolaescu <dann@ics.uci.edu>
parents: 99513
diff changeset
1648 Lisp_Object lface[LFACE_VECTOR_SIZE];
a3ae6efdd65b (struct face): Move lface and hash from the middle
Dan Nicolaescu <dann@ics.uci.edu>
parents: 99513
diff changeset
1649
a3ae6efdd65b (struct face): Move lface and hash from the middle
Dan Nicolaescu <dann@ics.uci.edu>
parents: 99513
diff changeset
1650 /* The hash value of this face. */
a3ae6efdd65b (struct face): Move lface and hash from the middle
Dan Nicolaescu <dann@ics.uci.edu>
parents: 99513
diff changeset
1651 unsigned hash;
a3ae6efdd65b (struct face): Move lface and hash from the middle
Dan Nicolaescu <dann@ics.uci.edu>
parents: 99513
diff changeset
1652
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1653 /* Next and previous face in hash collision list of face cache. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1654 struct face *next, *prev;
28221
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1655
88901
bcf253c370e8 (struct face): Member `charset' deleted.
Kenichi Handa <handa@m17n.org>
parents: 88825
diff changeset
1656 /* If this face is an ASCII face, this points to this face itself.
bcf253c370e8 (struct face): Member `charset' deleted.
Kenichi Handa <handa@m17n.org>
parents: 88825
diff changeset
1657 Otherwise, this points to an ASCII face that has the same
bcf253c370e8 (struct face): Member `charset' deleted.
Kenichi Handa <handa@m17n.org>
parents: 88825
diff changeset
1658 attributes except the font. */
28221
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1659 struct face *ascii_face;
90406
205c3ef62243 (struct glyph_string) [USE_FONT_BACKEND]: New
Kenichi Handa <handa@m17n.org>
parents: 90386
diff changeset
1660
205c3ef62243 (struct glyph_string) [USE_FONT_BACKEND]: New
Kenichi Handa <handa@m17n.org>
parents: 90386
diff changeset
1661 /* Extra member that a font-driver uses privately. */
205c3ef62243 (struct glyph_string) [USE_FONT_BACKEND]: New
Kenichi Handa <handa@m17n.org>
parents: 90386
diff changeset
1662 void *extra;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1663 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1664
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1665
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1666 /* Color index indicating that face uses a terminal's default color. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1667
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1668 #define FACE_TTY_DEFAULT_COLOR ((unsigned long) -1)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1669
26902
264b83a3a688 Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents: 26850
diff changeset
1670 /* Color index indicating that face uses an unknown foreground color. */
264b83a3a688 Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents: 26850
diff changeset
1671
264b83a3a688 Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents: 26850
diff changeset
1672 #define FACE_TTY_DEFAULT_FG_COLOR ((unsigned long) -2)
264b83a3a688 Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents: 26850
diff changeset
1673
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
1674 /* Color index indicating that face uses an unknown background color. */
26902
264b83a3a688 Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents: 26850
diff changeset
1675
264b83a3a688 Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents: 26850
diff changeset
1676 #define FACE_TTY_DEFAULT_BG_COLOR ((unsigned long) -3)
264b83a3a688 Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents: 26850
diff changeset
1677
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1678 /* Non-zero if FACE was realized for unibyte use. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1679
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1680 #define FACE_UNIBYTE_P(FACE) ((FACE)->charset < 0)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1681
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1682
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1683 /* IDs of important faces known by the C face code. These are the IDs
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1684 of the faces for CHARSET_ASCII. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1685
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1686 enum face_id
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1687 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1688 DEFAULT_FACE_ID,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1689 MODE_LINE_FACE_ID,
43202
d3a48ed9857d (CURRENT_MODE_LINE_FACE_ID): New macro.
Kim F. Storm <storm@cua.dk>
parents: 42955
diff changeset
1690 MODE_LINE_INACTIVE_FACE_ID,
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
1691 TOOL_BAR_FACE_ID,
41119
615c460b28c7 Fringe cleanup.
Kim F. Storm <storm@cua.dk>
parents: 41061
diff changeset
1692 FRINGE_FACE_ID,
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1693 HEADER_LINE_FACE_ID,
25589
0ef06feb96ab (SCROLL_BAR_FACE_ID, BORDER_FACE_ID,
Gerd Moellmann <gerd@gnu.org>
parents: 25546
diff changeset
1694 SCROLL_BAR_FACE_ID,
0ef06feb96ab (SCROLL_BAR_FACE_ID, BORDER_FACE_ID,
Gerd Moellmann <gerd@gnu.org>
parents: 25546
diff changeset
1695 BORDER_FACE_ID,
0ef06feb96ab (SCROLL_BAR_FACE_ID, BORDER_FACE_ID,
Gerd Moellmann <gerd@gnu.org>
parents: 25546
diff changeset
1696 CURSOR_FACE_ID,
0ef06feb96ab (SCROLL_BAR_FACE_ID, BORDER_FACE_ID,
Gerd Moellmann <gerd@gnu.org>
parents: 25546
diff changeset
1697 MOUSE_FACE_ID,
25881
54d9b33d9c4b (enum face_id): Add MENU_FACE_ID.
Gerd Moellmann <gerd@gnu.org>
parents: 25796
diff changeset
1698 MENU_FACE_ID,
63649
144440a09db1 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-438
Miles Bader <miles@gnu.org>
parents: 63641
diff changeset
1699 VERTICAL_BORDER_FACE_ID,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1700 BASIC_FACE_ID_SENTINEL
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1701 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1702
53328
dc1470f3ebd7 (FACE_ID_BITS, MAX_FACE_ID): New defines.
Kim F. Storm <storm@cua.dk>
parents: 53175
diff changeset
1703 #define MAX_FACE_ID ((1 << FACE_ID_BITS) - 1)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1704
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1705 /* A cache of realized faces. Each frame has its own cache because
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1706 Emacs allows different frame-local face definitions. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1707
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1708 struct face_cache
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1709 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1710 /* Hash table of cached realized faces. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1711 struct face **buckets;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1712
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1713 /* Back-pointer to the frame this cache belongs to. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1714 struct frame *f;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1715
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1716 /* A vector of faces so that faces can be referenced by an ID. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1717 struct face **faces_by_id;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1718
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1719 /* The allocated size, and number of used slots of faces_by_id. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1720 int size, used;
38904
db6c2951e6a7 (struct face_cache): Add member
Gerd Moellmann <gerd@gnu.org>
parents: 38630
diff changeset
1721
db6c2951e6a7 (struct face_cache): Add member
Gerd Moellmann <gerd@gnu.org>
parents: 38630
diff changeset
1722 /* Flag indicating that attributes of the `menu' face have been
db6c2951e6a7 (struct face_cache): Add member
Gerd Moellmann <gerd@gnu.org>
parents: 38630
diff changeset
1723 changed. */
db6c2951e6a7 (struct face_cache): Add member
Gerd Moellmann <gerd@gnu.org>
parents: 38630
diff changeset
1724 unsigned menu_face_changed_p : 1;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1725 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1726
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1727
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1728 /* Prepare face FACE for use on frame F. This must be called before
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1729 using X resources of FACE. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1730
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1731 #define PREPARE_FACE_FOR_DISPLAY(F, FACE) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1732 if ((FACE)->gc == 0) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1733 prepare_face_for_display ((F), (FACE)); \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1734 else \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1735 (void) 0
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1736
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1737 /* Return a pointer to the face with ID on frame F, or null if such a
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1738 face doesn't exist. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1739
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1740 #define FACE_FROM_ID(F, ID) \
27002
0ce3afff8247 (FACE_FROM_ID): Cast the arg ID to `unsigned'.
Kenichi Handa <handa@m17n.org>
parents: 26997
diff changeset
1741 (((unsigned) (ID) < FRAME_FACE_CACHE (F)->used) \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1742 ? FRAME_FACE_CACHE (F)->faces_by_id[ID] \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1743 : NULL)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1744
28254
bc79dbcca2a1 [!HAVE_WINDOW_SYSTEM] (FACE_SUITABLE_FOR_CHAR_P,
Kenichi Handa <handa@m17n.org>
parents: 28221
diff changeset
1745 #ifdef HAVE_WINDOW_SYSTEM
bc79dbcca2a1 [!HAVE_WINDOW_SYSTEM] (FACE_SUITABLE_FOR_CHAR_P,
Kenichi Handa <handa@m17n.org>
parents: 28221
diff changeset
1746
28221
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1747 /* Non-zero if FACE is suitable for displaying character CHAR. */
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1748
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1749 #define FACE_SUITABLE_FOR_CHAR_P(FACE, CHAR) \
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89351
diff changeset
1750 (ASCII_CHAR_P (CHAR) \
28221
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1751 ? (FACE) == (FACE)->ascii_face \
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1752 : face_suitable_for_char_p ((FACE), (CHAR)))
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1753
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1754 /* Return the id of the realized face on frame F that is like the face
28221
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1755 with id ID but is suitable for displaying character CHAR.
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1756 This macro is only meaningful for multibyte character CHAR. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1757
89697
e3cedd99e51a (FACE_FOR_CHAR): New args POS and OBJECT.
Kenichi Handa <handa@m17n.org>
parents: 89483
diff changeset
1758 #define FACE_FOR_CHAR(F, FACE, CHAR, POS, OBJECT) \
110131
cca2a663ef92 Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents: 109296
diff changeset
1759 ((ASCII_CHAR_P (CHAR) || CHAR_BYTE8_P (CHAR)) \
89697
e3cedd99e51a (FACE_FOR_CHAR): New args POS and OBJECT.
Kenichi Handa <handa@m17n.org>
parents: 89483
diff changeset
1760 ? (FACE)->ascii_face->id \
e3cedd99e51a (FACE_FOR_CHAR): New args POS and OBJECT.
Kenichi Handa <handa@m17n.org>
parents: 89483
diff changeset
1761 : face_for_char ((F), (FACE), (CHAR), (POS), (OBJECT)))
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1762
28254
bc79dbcca2a1 [!HAVE_WINDOW_SYSTEM] (FACE_SUITABLE_FOR_CHAR_P,
Kenichi Handa <handa@m17n.org>
parents: 28221
diff changeset
1763 #else /* not HAVE_WINDOW_SYSTEM */
bc79dbcca2a1 [!HAVE_WINDOW_SYSTEM] (FACE_SUITABLE_FOR_CHAR_P,
Kenichi Handa <handa@m17n.org>
parents: 28221
diff changeset
1764
bc79dbcca2a1 [!HAVE_WINDOW_SYSTEM] (FACE_SUITABLE_FOR_CHAR_P,
Kenichi Handa <handa@m17n.org>
parents: 28221
diff changeset
1765 #define FACE_SUITABLE_FOR_CHAR_P(FACE, CHAR) 1
89697
e3cedd99e51a (FACE_FOR_CHAR): New args POS and OBJECT.
Kenichi Handa <handa@m17n.org>
parents: 89483
diff changeset
1766 #define FACE_FOR_CHAR(F, FACE, CHAR, POS, OBJECT) ((FACE)->id)
28254
bc79dbcca2a1 [!HAVE_WINDOW_SYSTEM] (FACE_SUITABLE_FOR_CHAR_P,
Kenichi Handa <handa@m17n.org>
parents: 28221
diff changeset
1767
bc79dbcca2a1 [!HAVE_WINDOW_SYSTEM] (FACE_SUITABLE_FOR_CHAR_P,
Kenichi Handa <handa@m17n.org>
parents: 28221
diff changeset
1768 #endif /* not HAVE_WINDOW_SYSTEM */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1769
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1770 /* Non-zero means face attributes have been changed since the last
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1771 redisplay. Used in redisplay_internal. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1772
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1773 extern int face_change_count;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1774
107604
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
1775 /* For reordering of bidirectional text. */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1776 #define BIDI_MAXLEVEL 64
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1777
107599
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
1778 /* Data type for describing the bidirectional character types. The
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
1779 first 7 must be at the beginning, because they are the only values
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
1780 valid in the `bidi_type' member of `struct glyph'; we only reserve
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
1781 3 bits for it, so we cannot use there values larger than 7. */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1782 typedef enum {
107599
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
1783 UNKNOWN_BT = 0,
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1784 STRONG_L, /* strong left-to-right */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1785 STRONG_R, /* strong right-to-left */
107599
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
1786 WEAK_EN, /* european number */
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
1787 WEAK_AN, /* arabic number */
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
1788 WEAK_BN, /* boundary neutral */
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
1789 NEUTRAL_B, /* paragraph separator */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1790 STRONG_AL, /* arabic right-to-left letter */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1791 LRE, /* left-to-right embedding */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1792 LRO, /* left-to-right override */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1793 RLE, /* right-to-left embedding */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1794 RLO, /* right-to-left override */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1795 PDF, /* pop directional format */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1796 WEAK_ES, /* european number separator */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1797 WEAK_ET, /* european number terminator */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1798 WEAK_CS, /* common separator */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1799 WEAK_NSM, /* non-spacing mark */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1800 NEUTRAL_S, /* segment separator */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1801 NEUTRAL_WS, /* whitespace */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1802 NEUTRAL_ON /* other neutrals */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1803 } bidi_type_t;
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1804
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1805 /* The basic directionality data type. */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1806 typedef enum { NEUTRAL_DIR, L2R, R2L } bidi_dir_t;
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1807
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1808 /* Data type for storing information about characters we need to
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1809 remember. */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1810 struct bidi_saved_info {
110544
bb46575a984d Fix int/EMACS_INT in bidi.c.
Eli Zaretskii <eliz@gnu.org>
parents: 110412
diff changeset
1811 EMACS_INT bytepos, charpos; /* character's buffer position */
107589
84267baa779b Retrospective commit from 2009-09-19.
Eli Zaretskii <eliz@gnu.org>
parents: 107588
diff changeset
1812 bidi_type_t type; /* character's resolved bidi type */
84267baa779b Retrospective commit from 2009-09-19.
Eli Zaretskii <eliz@gnu.org>
parents: 107588
diff changeset
1813 bidi_type_t type_after_w1; /* original type of the character, after W1 */
84267baa779b Retrospective commit from 2009-09-19.
Eli Zaretskii <eliz@gnu.org>
parents: 107588
diff changeset
1814 bidi_type_t orig_type; /* type as we found it in the buffer */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1815 };
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1816
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1817 /* Data type for keeping track of saved embedding levels and override
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1818 status information. */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1819 struct bidi_stack {
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1820 int level;
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1821 bidi_dir_t override;
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1822 };
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1823
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1824 /* Data type for iterating over bidi text. */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1825 struct bidi_it {
107593
a551e4109c04 Retrospective commit from 2009-10-03.
Eli Zaretskii <eliz@gnu.org>
parents: 107592
diff changeset
1826 EMACS_INT bytepos; /* iterator's position in buffer */
a551e4109c04 Retrospective commit from 2009-10-03.
Eli Zaretskii <eliz@gnu.org>
parents: 107592
diff changeset
1827 EMACS_INT charpos;
107591
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1828 int ch; /* character itself */
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1829 int ch_len; /* length of its multibyte sequence */
107589
84267baa779b Retrospective commit from 2009-09-19.
Eli Zaretskii <eliz@gnu.org>
parents: 107588
diff changeset
1830 bidi_type_t type; /* bidi type of this character, after
84267baa779b Retrospective commit from 2009-09-19.
Eli Zaretskii <eliz@gnu.org>
parents: 107588
diff changeset
1831 resolving weak and neutral types */
84267baa779b Retrospective commit from 2009-09-19.
Eli Zaretskii <eliz@gnu.org>
parents: 107588
diff changeset
1832 bidi_type_t type_after_w1; /* original type, after overrides and W1 */
84267baa779b Retrospective commit from 2009-09-19.
Eli Zaretskii <eliz@gnu.org>
parents: 107588
diff changeset
1833 bidi_type_t orig_type; /* original type, as found in the buffer */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1834 int resolved_level; /* final resolved level of this character */
107591
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1835 int invalid_levels; /* how many PDFs to ignore */
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1836 int invalid_rl_levels; /* how many PDFs from RLE/RLO to ignore */
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1837 int prev_was_pdf; /* if non-zero, previous char was PDF */
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1838 struct bidi_saved_info prev; /* info about previous character */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1839 struct bidi_saved_info last_strong; /* last-seen strong directional char */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1840 struct bidi_saved_info next_for_neutral; /* surrounding characters for... */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1841 struct bidi_saved_info prev_for_neutral; /* ...resolving neutrals */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1842 struct bidi_saved_info next_for_ws; /* character after sequence of ws */
107593
a551e4109c04 Retrospective commit from 2009-10-03.
Eli Zaretskii <eliz@gnu.org>
parents: 107592
diff changeset
1843 EMACS_INT next_en_pos; /* position of next EN char for ET */
a551e4109c04 Retrospective commit from 2009-10-03.
Eli Zaretskii <eliz@gnu.org>
parents: 107592
diff changeset
1844 EMACS_INT ignore_bn_limit; /* position until which to ignore BNs */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1845 bidi_dir_t sor; /* direction of start-of-run in effect */
108656
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
1846 int scan_dir; /* direction of text scan, 1: forw, -1: back */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1847 int stack_idx; /* index of current data on the stack */
107607
a04b9ac55bc5 This commits the exact copies of files I had before switch to bzr.
Eli Zaretskii <eliz@gnu.org>
parents: 107604
diff changeset
1848 /* Note: Everything from here on is not copied/saved when the bidi
107604
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
1849 iterator state is saved, pushed, or popped. So only put here
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
1850 stuff that is not part of the bidi iterator's state! */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1851 struct bidi_stack level_stack[BIDI_MAXLEVEL]; /* stack of embedding levels */
107604
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
1852 int first_elt; /* if non-zero, examine current char first */
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
1853 bidi_dir_t paragraph_dir; /* current paragraph direction */
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
1854 int new_paragraph; /* if non-zero, we expect a new paragraph */
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
1855 EMACS_INT separator_limit; /* where paragraph separator should end */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1856 };
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1857
107604
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
1858 /* Value is non-zero when the bidi iterator is at base paragraph
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
1859 embedding level. */
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
1860 #define BIDI_AT_BASE_LEVEL(BIDI_IT) \
107611
118ff750e43e Continue working on handling of properties in bidi iteration.
Eli Zaretskii <eliz@gnu.org>
parents: 107607
diff changeset
1861 ((BIDI_IT).resolved_level == (BIDI_IT).level_stack[0].level)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1862
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1863
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1864 /***********************************************************************
50095
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1865 Fringes
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1866 ***********************************************************************/
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1867
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1868 /* Structure used to describe where and how to draw a fringe bitmap.
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1869 WHICH is the fringe bitmap to draw. WD and H is the (adjusted)
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1870 width and height of the bitmap, DH is the height adjustment (if
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1871 bitmap is periodic). X and Y are frame coordinates of the area to
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1872 display the bitmap, DY is relative offset of the bitmap into that
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1873 area. BX, NX, BY, NY specifies the area to clear if the bitmap
50095
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1874 does not fill the entire area. FACE is the fringe face. */
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1875
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1876 struct draw_fringe_bitmap_params
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1877 {
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
1878 int which; /* enum fringe_bitmap_type */
53937
8970999f9bcc (struct draw_fringe_bitmap_params): Change member
Kim F. Storm <storm@cua.dk>
parents: 53880
diff changeset
1879 unsigned short *bits;
50095
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1880 int wd, h, dh;
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1881 int x, y;
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1882 int bx, nx, by, ny;
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
1883 unsigned cursor_p : 1;
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
1884 unsigned overlay_p : 1;
50095
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1885 struct face *face;
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1886 };
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1887
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
1888 #define MAX_FRINGE_BITMAPS (1<<FRINGE_ID_BITS)
50095
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1889
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1890
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1891 /***********************************************************************
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1892 Display Iterator
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1893 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1894
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1895 /* Iteration over things to display in current_buffer or in a string.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1896
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1897 The iterator handles:
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1898
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1899 1. Overlay strings (after-string, before-string).
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1900 2. Face properties.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1901 3. Invisible text properties.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1902 4. Selective display.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1903 5. Translation of characters via display tables.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1904 6. Translation of control characters to the forms `\003' or `^C'.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1905 7. `glyph' and `space-width' properties.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1906
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1907 Iterators are initialized by calling init_iterator or one of the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1908 equivalent functions below. A call to get_next_display_element
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1909 loads the iterator structure with information about what next to
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1910 display. A call to set_iterator_to_next increments the iterator's
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1911 position.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1912
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1913 Characters from overlay strings, display table entries or control
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1914 character translations are returned one at a time. For example, if
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1915 we have a text of `a\x01' where `a' has a display table definition
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1916 of `cd' and the control character is displayed with a leading
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1917 arrow, then the iterator will return:
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1918
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1919 Call Return Source Call next
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1920 -----------------------------------------------------------------
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1921 next c display table move
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1922 next d display table move
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1923 next ^ control char move
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1924 next A control char move
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1925
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1926 The same mechanism is also used to return characters for ellipses
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1927 displayed at the end of invisible text.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1928
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1929 CAVEAT: Under some circumstances, move_.* functions can be called
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1930 asynchronously, e.g. when computing a buffer position from an x and
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1931 y pixel position. This means that these functions and functions
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1932 called from them SHOULD NOT USE xmalloc and alike. See also the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1933 comment at the start of xdisp.c. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1934
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1935 /* Enumeration describing what kind of display element an iterator is
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1936 loaded with after a call to get_next_display_element. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1937
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1938 enum display_element_type
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1939 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1940 /* A normal character. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1941 IT_CHARACTER,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1942
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1943 /* A composition (static and automatic). */
26850
d00beb113ad5 (enum glyph_type): New member COMPOSITE_GLYPH.
Kenichi Handa <handa@m17n.org>
parents: 26766
diff changeset
1944 IT_COMPOSITION,
d00beb113ad5 (enum glyph_type): New member COMPOSITE_GLYPH.
Kenichi Handa <handa@m17n.org>
parents: 26766
diff changeset
1945
111235
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
1946 /* A glyphless character (e.g. ZWNJ, LRE). */
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
1947 IT_GLYPHLESS,
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
1948
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1949 /* An image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1950 IT_IMAGE,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1951
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1952 /* A flexible width and height space. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1953 IT_STRETCH,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1954
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1955 /* End of buffer or string. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1956 IT_EOB,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1957
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1958 /* Truncation glyphs. Never returned by get_next_display_element.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1959 Used to get display information about truncation glyphs via
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1960 produce_glyphs. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1961 IT_TRUNCATION,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1962
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1963 /* Continuation glyphs. See the comment for IT_TRUNCATION. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1964 IT_CONTINUATION
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1965 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1966
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1967
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1968 /* An enumerator for each text property that has a meaning for display
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1969 purposes. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1970
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1971 enum prop_idx
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1972 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1973 FONTIFIED_PROP_IDX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1974 FACE_PROP_IDX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1975 INVISIBLE_PROP_IDX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1976 DISPLAY_PROP_IDX,
26850
d00beb113ad5 (enum glyph_type): New member COMPOSITE_GLYPH.
Kenichi Handa <handa@m17n.org>
parents: 26766
diff changeset
1977 COMPOSITION_PROP_IDX,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1978
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1979 /* Not a property. Used to indicate changes in overlays. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1980 OVERLAY_PROP_IDX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1981
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1982 /* Sentinel. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1983 LAST_PROP_IDX
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1984 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1985
96234
d83f0f57503f (struct it): Replace bool truncate_lines_p with a line_wrap enum
Chong Yidong <cyd@stupidchicken.com>
parents: 96019
diff changeset
1986 /* An enumerator for the method of wrapping long lines. */
d83f0f57503f (struct it): Replace bool truncate_lines_p with a line_wrap enum
Chong Yidong <cyd@stupidchicken.com>
parents: 96019
diff changeset
1987
d83f0f57503f (struct it): Replace bool truncate_lines_p with a line_wrap enum
Chong Yidong <cyd@stupidchicken.com>
parents: 96019
diff changeset
1988 enum line_wrap_method
d83f0f57503f (struct it): Replace bool truncate_lines_p with a line_wrap enum
Chong Yidong <cyd@stupidchicken.com>
parents: 96019
diff changeset
1989 {
d83f0f57503f (struct it): Replace bool truncate_lines_p with a line_wrap enum
Chong Yidong <cyd@stupidchicken.com>
parents: 96019
diff changeset
1990 TRUNCATE,
d83f0f57503f (struct it): Replace bool truncate_lines_p with a line_wrap enum
Chong Yidong <cyd@stupidchicken.com>
parents: 96019
diff changeset
1991 WORD_WRAP,
d83f0f57503f (struct it): Replace bool truncate_lines_p with a line_wrap enum
Chong Yidong <cyd@stupidchicken.com>
parents: 96019
diff changeset
1992 WINDOW_WRAP
d83f0f57503f (struct it): Replace bool truncate_lines_p with a line_wrap enum
Chong Yidong <cyd@stupidchicken.com>
parents: 96019
diff changeset
1993 };
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1994
111235
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
1995 /* An enumerator for the method of displaying glyphless characters. */
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
1996
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
1997 enum glyphless_display_method
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
1998 {
111526
5c986eef8f0d Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents: 111413
diff changeset
1999 /* Display a thin (1-pixel width) space. On a TTY, display a
5c986eef8f0d Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents: 111413
diff changeset
2000 1-character width space. */
111235
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
2001 GLYPHLESS_DISPLAY_THIN_SPACE,
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
2002 /* Display an empty box of proper width. */
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
2003 GLYPHLESS_DISPLAY_EMPTY_BOX,
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
2004 /* Display an acronym string in a box. */
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
2005 GLYPHLESS_DISPLAY_ACRONYM,
111526
5c986eef8f0d Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents: 111413
diff changeset
2006 /* Display the hexadecimal code of the character in a box. */
5c986eef8f0d Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents: 111413
diff changeset
2007 GLYPHLESS_DISPLAY_HEX_CODE
111235
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
2008 };
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
2009
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2010 struct it_slice
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2011 {
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2012 Lisp_Object x;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2013 Lisp_Object y;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2014 Lisp_Object width;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2015 Lisp_Object height;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2016 };
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2017
79328
fcf9272ec241 (face_at_buffer_position_no_overlays): Add decl.
Richard M. Stallman <rms@gnu.org>
parents: 78719
diff changeset
2018 /* Input sources for fetching characters or data to display.
fcf9272ec241 (face_at_buffer_position_no_overlays): Add decl.
Richard M. Stallman <rms@gnu.org>
parents: 78719
diff changeset
2019 The input source is found in the `method' field. */
fcf9272ec241 (face_at_buffer_position_no_overlays): Add decl.
Richard M. Stallman <rms@gnu.org>
parents: 78719
diff changeset
2020
60129
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
2021 enum it_method {
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
2022 GET_FROM_BUFFER = 0,
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
2023 GET_FROM_DISPLAY_VECTOR,
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
2024 GET_FROM_STRING,
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
2025 GET_FROM_C_STRING,
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
2026 GET_FROM_IMAGE,
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
2027 GET_FROM_STRETCH,
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
2028 NUM_IT_METHODS
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
2029 };
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2030
108003
4b71850034e6 * buffer.h (struct buffer): Remove unused var `direction_reversed'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107980
diff changeset
2031 /* FIXME: What is this? Why 5? */
107587
0ff1b8888f6b Retrospective commit from 2009-08-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107584
diff changeset
2032 #define IT_STACK_SIZE 5
71338
cb9b414fad75 (IT_STACK_SIZE): New macro specifying size of
Kim F. Storm <storm@cua.dk>
parents: 71029
diff changeset
2033
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2034 /* Iterator for composition (both for static and automatic). */
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2035 struct composition_it
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2036 {
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2037 /* Next position at which to check the composition. */
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2038 EMACS_INT stop_pos;
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2039 /* ID number of the composition or glyph-string. If negative, we
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2040 are not iterating over a composition now. */
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2041 int id;
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2042 /* If non-negative, character that triggers the automatic
110986
e0f89e89ed02 Fix typos in docstrings, comments and ChangeLogs.
Juanma Barranquero <lekktu@gmail.com>
parents: 110131
diff changeset
2043 composition at `stop_pos', and this is an automatic composition.
98108
7b2adb63b556 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 97981
diff changeset
2044 If negative, this is a static composition. This is set to -2
7b2adb63b556 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 97981
diff changeset
2045 temporarily if searching of composition reach a limit or a
7b2adb63b556 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 97981
diff changeset
2046 newline. */
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2047 int ch;
108759
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2048 /* If this is an automatic composition, index of a rule for making
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2049 the automatic composition. Provided that ELT is an element of
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2050 Vcomposition_function_table for CH, (nth ELT RULE_IDX) is the
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2051 rule for the composition. */
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2052 int rule_idx;
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2053 /* If this is an automatic composition, how many characters to look
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2054 back from the position where a character triggering the
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2055 composition exists. */
97981
4ca1e7cb50ea (struct composition_it): New member lookback.
Kenichi Handa <handa@m17n.org>
parents: 97821
diff changeset
2056 int lookback;
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2057 /* If non-negative, number of glyphs of the glyph-string. */
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2058 int nglyphs;
108759
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2059 /* Nonzero iff the composition is created while buffer is scanned in
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2060 reverse order, and thus the grapheme clusters must be rendered
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2061 from the last to the first. */
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2062 int reversed_p;
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2063
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2064 /** The following members contain information about the current
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2065 grapheme cluster. */
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2066 /* Position of the first character of the current grapheme cluster. */
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2067 EMACS_INT charpos;
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2068 /* Number of characters and bytes of the current grapheme cluster. */
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2069 int nchars, nbytes;
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2070 /* Indices of the glyphs for the current grapheme cluster. */
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2071 int from, to;
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2072 /* Width of the current grapheme cluster in units of pixels on a
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2073 graphic display and in units of canonical characters on a
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2074 terminal display. */
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2075 int width;
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2076 };
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2077
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2078 struct it
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2079 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2080 /* The window in which we iterate over current_buffer (or a string). */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2081 Lisp_Object window;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2082 struct window *w;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2083
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2084 /* The window's frame. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2085 struct frame *f;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2086
60129
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
2087 /* Method to use to load this structure with the next display element. */
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
2088 enum it_method method;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2089
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2090 /* The next position at which to check for face changes, invisible
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2091 text, overlay strings, end of text etc., which see. */
106550
562676f8dfb2 (struct text_pos): Use EMACS_INT;
Eli Zaretskii <eliz@gnu.org>
parents: 106404
diff changeset
2092 EMACS_INT stop_charpos;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2093
107604
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
2094 /* Previous stop position, i.e. the last one before the current
107611
118ff750e43e Continue working on handling of properties in bidi iteration.
Eli Zaretskii <eliz@gnu.org>
parents: 107607
diff changeset
2095 iterator position in `current'. */
107604
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
2096 EMACS_INT prev_stop;
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
2097
107641
d65c199e8bdd Continue work on cursor movement in continued lines.
Eli Zaretskii <eliz@gnu.org>
parents: 107635
diff changeset
2098 /* Last stop position iterated across whose bidi embedding level is
d65c199e8bdd Continue work on cursor movement in continued lines.
Eli Zaretskii <eliz@gnu.org>
parents: 107635
diff changeset
2099 equal to the current paragraph's base embedding level. */
107604
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
2100 EMACS_INT base_level_stop;
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
2101
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2102 /* Maximum string or buffer position + 1. ZV when iterating over
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2103 current_buffer. */
106550
562676f8dfb2 (struct text_pos): Use EMACS_INT;
Eli Zaretskii <eliz@gnu.org>
parents: 106404
diff changeset
2104 EMACS_INT end_charpos;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2105
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2106 /* C string to iterate over. Non-null means get characters from
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2107 this string, otherwise characters are read from current_buffer
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2108 or it->string. */
109717
8949aad5e992 Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109673
diff changeset
2109 const unsigned char *s;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2110
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2111 /* Number of characters in the string (s, or it->string) we iterate
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2112 over. */
110645
7d7a02c19d8c Fix int/EMACS_INT use in xdisp.c and print.c.
Eli Zaretskii <eliz@gnu.org>
parents: 110600
diff changeset
2113 EMACS_INT string_nchars;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2114
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2115 /* Start and end of a visible region; -1 if the region is not
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2116 visible in the window. */
106550
562676f8dfb2 (struct text_pos): Use EMACS_INT;
Eli Zaretskii <eliz@gnu.org>
parents: 106404
diff changeset
2117 EMACS_INT region_beg_charpos, region_end_charpos;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2118
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2119 /* Position at which redisplay end trigger functions should be run. */
106550
562676f8dfb2 (struct text_pos): Use EMACS_INT;
Eli Zaretskii <eliz@gnu.org>
parents: 106404
diff changeset
2120 EMACS_INT redisplay_end_trigger_charpos;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2121
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2122 /* 1 means multibyte characters are enabled. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2123 unsigned multibyte_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2124
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2125 /* 1 means window has a mode line at its top. */
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2126 unsigned header_line_p : 1;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2127
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2128 /* 1 means `string' is the value of a `display' property.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2129 Don't handle some `display' properties in these strings. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2130 unsigned string_from_display_prop_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2131
59268
2d8a6be1520d (struct it): New element ellipsis_p.
Richard M. Stallman <rms@gnu.org>
parents: 59146
diff changeset
2132 /* When METHOD == next_element_from_display_vector,
2d8a6be1520d (struct it): New element ellipsis_p.
Richard M. Stallman <rms@gnu.org>
parents: 59146
diff changeset
2133 this is 1 if we're doing an ellipsis. Otherwise meaningless. */
2d8a6be1520d (struct it): New element ellipsis_p.
Richard M. Stallman <rms@gnu.org>
parents: 59146
diff changeset
2134 unsigned ellipsis_p : 1;
2d8a6be1520d (struct it): New element ellipsis_p.
Richard M. Stallman <rms@gnu.org>
parents: 59146
diff changeset
2135
96470
2af6e85f13d5 Implement display-time wrap/line-prefix feature
Miles Bader <miles@gnu.org>
parents: 96234
diff changeset
2136 /* True means cursor shouldn't be displayed here. */
2af6e85f13d5 Implement display-time wrap/line-prefix feature
Miles Bader <miles@gnu.org>
parents: 96234
diff changeset
2137 unsigned avoid_cursor_p : 1;
2af6e85f13d5 Implement display-time wrap/line-prefix feature
Miles Bader <miles@gnu.org>
parents: 96234
diff changeset
2138
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2139 /* Display table in effect or null for none. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2140 struct Lisp_Char_Table *dp;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2141
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2142 /* Current display table vector to return characters from and its
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2143 end. dpvec null means we are not returning characters from a
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2144 display table entry; current.dpvec_index gives the current index
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2145 into dpvec. This same mechanism is also used to return
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2146 characters from translated control characters, i.e. `\003' or
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2147 `^C'. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2148 Lisp_Object *dpvec, *dpend;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2149
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2150 /* Length in bytes of the char that filled dpvec. A value of zero
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
2151 means that no such character is involved. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2152 int dpvec_char_len;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2153
59430
6aee7f43ad59 (struct it): New member dpvec_face_id.
Kim F. Storm <storm@cua.dk>
parents: 59268
diff changeset
2154 /* Face id to use for all characters in display vector. -1 if unused. */
6aee7f43ad59 (struct it): New member dpvec_face_id.
Kim F. Storm <storm@cua.dk>
parents: 59268
diff changeset
2155 int dpvec_face_id;
6aee7f43ad59 (struct it): New member dpvec_face_id.
Kim F. Storm <storm@cua.dk>
parents: 59268
diff changeset
2156
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2157 /* Face id of the iterator saved in case a glyph from dpvec contains
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2158 a face. The face is restored when all glyphs from dpvec have
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2159 been delivered. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2160 int saved_face_id;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2161
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2162 /* Vector of glyphs for control character translation. The pointer
25503
bbb032f48e20 (struct it): Change the size of the member `ctl_chars'.
Kenichi Handa <handa@m17n.org>
parents: 25458
diff changeset
2163 dpvec is set to ctl_chars when a control character is translated.
bbb032f48e20 (struct it): Change the size of the member `ctl_chars'.
Kenichi Handa <handa@m17n.org>
parents: 25458
diff changeset
2164 This vector is also used for incomplete multibyte character
38550
f909f7fe9a65 (struct it): Increase size of ctl_chars to 16.
Gerd Moellmann <gerd@gnu.org>
parents: 38499
diff changeset
2165 translation (e.g \222\244). Such a character is at most 4 bytes,
f909f7fe9a65 (struct it): Increase size of ctl_chars to 16.
Gerd Moellmann <gerd@gnu.org>
parents: 38499
diff changeset
2166 thus we need at most 16 bytes here. */
f909f7fe9a65 (struct it): Increase size of ctl_chars to 16.
Gerd Moellmann <gerd@gnu.org>
parents: 38499
diff changeset
2167 Lisp_Object ctl_chars[16];
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2168
53095
bebcff17499f (struct it): New member start.
Kim F. Storm <storm@cua.dk>
parents: 53077
diff changeset
2169 /* Initial buffer or string position of the iterator, before skipping
bebcff17499f (struct it): New member start.
Kim F. Storm <storm@cua.dk>
parents: 53077
diff changeset
2170 over display properties and invisible text. */
bebcff17499f (struct it): New member start.
Kim F. Storm <storm@cua.dk>
parents: 53077
diff changeset
2171 struct display_pos start;
bebcff17499f (struct it): New member start.
Kim F. Storm <storm@cua.dk>
parents: 53077
diff changeset
2172
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2173 /* Current buffer or string position of the iterator, including
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2174 position in overlay strings etc. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2175 struct display_pos current;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2176
79335
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2177 /* Total number of overlay strings to process. This can be >
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2178 OVERLAY_STRING_CHUNK_SIZE. */
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2179 int n_overlay_strings;
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2180
111912
d566763f152d Fix crash with invisible text and overlays (Bug#7016).
Chong Yidong <cyd@stupidchicken.com>
parents: 111363
diff changeset
2181 /* The charpos where n_overlay_strings was calculated. This should
d566763f152d Fix crash with invisible text and overlays (Bug#7016).
Chong Yidong <cyd@stupidchicken.com>
parents: 111363
diff changeset
2182 be set at the same time as n_overlay_strings. It is needed
d566763f152d Fix crash with invisible text and overlays (Bug#7016).
Chong Yidong <cyd@stupidchicken.com>
parents: 111363
diff changeset
2183 because we show before-strings at the start of invisible text;
d566763f152d Fix crash with invisible text and overlays (Bug#7016).
Chong Yidong <cyd@stupidchicken.com>
parents: 111363
diff changeset
2184 see handle_invisible_prop in xdisp.c. */
d566763f152d Fix crash with invisible text and overlays (Bug#7016).
Chong Yidong <cyd@stupidchicken.com>
parents: 111363
diff changeset
2185 int overlay_strings_charpos;
d566763f152d Fix crash with invisible text and overlays (Bug#7016).
Chong Yidong <cyd@stupidchicken.com>
parents: 111363
diff changeset
2186
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2187 /* Vector of overlays to process. Overlay strings are processed
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2188 OVERLAY_STRING_CHUNK_SIZE at a time. */
60251
b22562d329a7 (OVERLAY_STRING_CHUNK_SIZE): Increase from 3 to 16.
Kim F. Storm <storm@cua.dk>
parents: 60129
diff changeset
2189 #define OVERLAY_STRING_CHUNK_SIZE 16
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2190 Lisp_Object overlay_strings[OVERLAY_STRING_CHUNK_SIZE];
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2191
79335
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2192 /* For each overlay string, the overlay it came from. */
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2193 Lisp_Object string_overlays[OVERLAY_STRING_CHUNK_SIZE];
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2194
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2195 /* If non-nil, a Lisp string being processed. If
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2196 current.overlay_string_index >= 0, this is an overlay string from
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2197 pos. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2198 Lisp_Object string;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2199
79335
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2200 /* If non-nil, we are processing a string that came
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2201 from a `display' property given by an overlay. */
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2202 Lisp_Object from_overlay;
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2203
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2204 /* Stack of saved values. New entries are pushed when we begin to
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2205 process an overlay string or a string from a `glyph' property.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2206 Entries are popped when we return to deliver display elements
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2207 from what we previously had. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2208 struct iterator_stack_entry
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2209 {
71418
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2210 Lisp_Object string;
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2211 int string_nchars;
106550
562676f8dfb2 (struct text_pos): Use EMACS_INT;
Eli Zaretskii <eliz@gnu.org>
parents: 106404
diff changeset
2212 EMACS_INT end_charpos;
562676f8dfb2 (struct text_pos): Use EMACS_INT;
Eli Zaretskii <eliz@gnu.org>
parents: 106404
diff changeset
2213 EMACS_INT stop_charpos;
107604
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
2214 EMACS_INT prev_stop;
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
2215 EMACS_INT base_level_stop;
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2216 struct composition_it cmp_it;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2217 int face_id;
71418
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2218
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2219 /* Save values specific to a given method. */
71365
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2220 union {
71418
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2221 /* method == GET_FROM_IMAGE */
71365
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2222 struct {
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2223 Lisp_Object object;
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2224 struct it_slice slice;
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2225 int image_id;
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2226 } image;
71418
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2227 /* method == GET_FROM_COMPOSITION */
71365
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2228 struct {
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2229 Lisp_Object object;
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2230 } comp;
71418
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2231 /* method == GET_FROM_STRETCH */
71365
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2232 struct {
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2233 Lisp_Object object;
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2234 } stretch;
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2235 } u;
71418
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2236
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2237 /* current text and display positions. */
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2238 struct text_pos position;
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2239 struct display_pos current;
79335
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2240 Lisp_Object from_overlay;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2241 enum glyph_row_area area;
71338
cb9b414fad75 (IT_STACK_SIZE): New macro specifying size of
Kim F. Storm <storm@cua.dk>
parents: 71029
diff changeset
2242 enum it_method method;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2243 unsigned multibyte_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2244 unsigned string_from_display_prop_p : 1;
38189
770e48dacf6e (struct it): Add member display_ellipsis_p.
Gerd Moellmann <gerd@gnu.org>
parents: 37628
diff changeset
2245 unsigned display_ellipsis_p : 1;
96470
2af6e85f13d5 Implement display-time wrap/line-prefix feature
Miles Bader <miles@gnu.org>
parents: 96234
diff changeset
2246 unsigned avoid_cursor_p : 1;
102042
f0864f8938a3 (struct iterator_stack_entry): New line_wrap member.
Chong Yidong <cyd@stupidchicken.com>
parents: 100951
diff changeset
2247 enum line_wrap_method line_wrap;
71418
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2248
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2249 /* properties from display property that are reset by another display property. */
98236
1c3e02cbd63e (struct it): Move line_wrap away from the middle of
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98108
diff changeset
2250 short voffset;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2251 Lisp_Object space_width;
71418
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2252 Lisp_Object font_height;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2253 }
71338
cb9b414fad75 (IT_STACK_SIZE): New macro specifying size of
Kim F. Storm <storm@cua.dk>
parents: 71029
diff changeset
2254 stack[IT_STACK_SIZE];
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2255
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2256 /* Stack pointer. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2257 int sp;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
2258
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2259 /* -1 means selective display hides everything between a \r and the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2260 next newline; > 0 means hide lines indented more than that value. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2261 int selective;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2262
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2263 /* An enumeration describing what the next display element is
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2264 after a call to get_next_display_element. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2265 enum display_element_type what;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2266
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2267 /* Face to use. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2268 int face_id;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2269
79335
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2270 /* Setting of buffer-local variable selective-display-ellipsis. */
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2271 unsigned selective_display_ellipsis_p : 1;
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2272
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2273 /* 1 means control characters are translated into the form `^C'
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2274 where the `^' can be replaced by a display table entry. */
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2275 unsigned ctl_arrow_p : 1;
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2276
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2277 /* Non-zero means that the current face has a box. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2278 unsigned face_box_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2279
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2280 /* Non-null means that the current character is the first in a run
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2281 of characters with box face. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2282 unsigned start_of_box_run_p : 1;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
2283
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2284 /* Non-zero means that the current character is the last in a run
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2285 of characters with box face. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2286 unsigned end_of_box_run_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2287
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2288 /* 1 means overlay strings at end_charpos have been processed. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2289 unsigned overlay_strings_at_end_processed_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2290
66812
b3f0971004ea (struct it): New member ignore_overlay_strings_at_pos_p.
Kim F. Storm <storm@cua.dk>
parents: 66032
diff changeset
2291 /* 1 means to ignore overlay strings at current pos, as they have
b3f0971004ea (struct it): New member ignore_overlay_strings_at_pos_p.
Kim F. Storm <storm@cua.dk>
parents: 66032
diff changeset
2292 already been processed. */
b3f0971004ea (struct it): New member ignore_overlay_strings_at_pos_p.
Kim F. Storm <storm@cua.dk>
parents: 66032
diff changeset
2293 unsigned ignore_overlay_strings_at_pos_p : 1;
b3f0971004ea (struct it): New member ignore_overlay_strings_at_pos_p.
Kim F. Storm <storm@cua.dk>
parents: 66032
diff changeset
2294
28221
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
2295 /* 1 means the actual glyph is not available in the current
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
2296 system. */
29474
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
2297 unsigned glyph_not_available_p : 1;
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
2298
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
2299 /* 1 means the next line in display_line continues a character
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
2300 consisting of more than one glyph, and some glyphs of this
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
2301 character have been put on the previous line. */
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
2302 unsigned starts_in_middle_of_char_p : 1;
28221
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
2303
34226
2e38b27fd38b (struct it): Add face_before_selective_p.
Gerd Moellmann <gerd@gnu.org>
parents: 33460
diff changeset
2304 /* If 1, saved_face_id contains the id of the face in front of text
2e38b27fd38b (struct it): Add face_before_selective_p.
Gerd Moellmann <gerd@gnu.org>
parents: 33460
diff changeset
2305 skipped due to selective display. */
2e38b27fd38b (struct it): Add face_before_selective_p.
Gerd Moellmann <gerd@gnu.org>
parents: 33460
diff changeset
2306 unsigned face_before_selective_p : 1;
2e38b27fd38b (struct it): Add face_before_selective_p.
Gerd Moellmann <gerd@gnu.org>
parents: 33460
diff changeset
2307
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2308 /* If 1, adjust current glyph so it does not increase current row
55169
fb4f7c39404d (struct it): New member use_default_face.
Kim F. Storm <storm@cua.dk>
parents: 55020
diff changeset
2309 descent/ascent (line-height property). Reset after this glyph. */
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2310 unsigned constrain_row_ascent_descent_p : 1;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2311
98236
1c3e02cbd63e (struct it): Move line_wrap away from the middle of
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98108
diff changeset
2312 enum line_wrap_method line_wrap;
1c3e02cbd63e (struct it): Move line_wrap away from the middle of
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98108
diff changeset
2313
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2314 /* The ID of the default face to use. One of DEFAULT_FACE_ID,
34226
2e38b27fd38b (struct it): Add face_before_selective_p.
Gerd Moellmann <gerd@gnu.org>
parents: 33460
diff changeset
2315 MODE_LINE_FACE_ID, etc, depending on what we are displaying. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2316 int base_face_id;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2317
107980
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2318 /* If `what' == IT_CHARACTER, the character and the length in bytes
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2319 of its multibyte sequence. The character comes from a buffer or
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2320 a string. It may be different from the character displayed in
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2321 case that unibyte_display_via_language_environment is set.
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2322
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2323 If `what' == IT_COMPOSITION, the first component of a composition
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2324 and length in bytes of the composition.
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2325
108087
076e73b014a5 dispextern.h: Fix a typo in a comment.
Eli Zaretskii <eliz@gnu.org>
parents: 108024
diff changeset
2326 If `what' is anything else, these two are undefined (will
107980
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2327 probably hold values for the last IT_CHARACTER or IT_COMPOSITION
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2328 traversed by the iterator.
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2329
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2330 The values are updated by get_next_display_element, so they are
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2331 out of sync with the value returned by IT_CHARPOS between the
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2332 time set_iterator_to_next advances the position and the time
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2333 get_next_display_element loads the new values into c and len. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2334 int c, len;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2335
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2336 /* If what == IT_COMPOSITION, iterator substructure for the
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2337 composition. */
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2338 struct composition_it cmp_it;
26850
d00beb113ad5 (enum glyph_type): New member COMPOSITE_GLYPH.
Kenichi Handa <handa@m17n.org>
parents: 26766
diff changeset
2339
110131
cca2a663ef92 Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents: 109296
diff changeset
2340 /* The character to display, possibly translated to multibyte if
cca2a663ef92 Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents: 109296
diff changeset
2341 multibyte_p is zero or unibyte_display_via_language_environment
cca2a663ef92 Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents: 109296
diff changeset
2342 is set. This is set after get_next_display_element has been
cca2a663ef92 Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents: 109296
diff changeset
2343 called. If we are setting it->C directly before calling
cca2a663ef92 Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents: 109296
diff changeset
2344 PRODUCE_GLYPHS, this should be set beforehand too. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2345 int char_to_display;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2346
111235
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
2347 /* If what == IT_GLYPHLESS, the method to display such a
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
2348 character. */
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
2349 enum glyphless_display_method glyphless_method;
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
2350
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2351 /* If what == IT_IMAGE, the id of the image to display. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2352 int image_id;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2353
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2354 /* Values from `slice' property. */
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2355 struct it_slice slice;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2356
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2357 /* Value of the `space-width' property, if any; nil if none. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2358 Lisp_Object space_width;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2359
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2360 /* Computed from the value of the `raise' property. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2361 short voffset;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2362
98236
1c3e02cbd63e (struct it): Move line_wrap away from the middle of
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98108
diff changeset
2363 /* Number of columns per \t. */
1c3e02cbd63e (struct it): Move line_wrap away from the middle of
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98108
diff changeset
2364 short tab_width;
1c3e02cbd63e (struct it): Move line_wrap away from the middle of
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98108
diff changeset
2365
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2366 /* Value of the `height' property, if any; nil if none. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2367 Lisp_Object font_height;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2368
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2369 /* Object and position where the current display element came from.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2370 Object can be a Lisp string in case the current display element
57475
1550c9f141cc Fix comment for it->object; it may also be nil.
Kim F. Storm <storm@cua.dk>
parents: 57370
diff changeset
2371 comes from an overlay string, or it is buffer. It may also be nil
1550c9f141cc Fix comment for it->object; it may also be nil.
Kim F. Storm <storm@cua.dk>
parents: 57370
diff changeset
2372 during mode-line update. Position is a position in object. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2373 Lisp_Object object;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2374 struct text_pos position;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2375
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2376 /* Width in pixels of truncation and continuation glyphs. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2377 short truncation_pixel_width, continuation_pixel_width;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2378
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2379 /* First and last visible x-position in the display area. If window
51192
e7a9fef91d7d (struct glyph_matrix): Rename members window_left_x
Kim F. Storm <storm@cua.dk>
parents: 50356
diff changeset
2380 is hscrolled by n columns, first_visible_x == n * FRAME_COLUMN_WIDTH
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2381 (f), and last_visible_x == pixel width of W + first_visible_x. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2382 int first_visible_x, last_visible_x;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2383
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2384 /* Last visible y-position + 1 in the display area without a mode
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2385 line, if the window has one. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2386 int last_visible_y;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2387
58174
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
2388 /* Default amount of additional space in pixels between lines (for
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
2389 window systems only.) */
28684
609d4aabf72c (struct it): Remove member prompt_width, add extra_line_spacing.
Gerd Moellmann <gerd@gnu.org>
parents: 28417
diff changeset
2390 int extra_line_spacing;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2391
58174
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
2392 /* Max extra line spacing added in this row. */
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
2393 int max_extra_line_spacing;
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
2394
55243
fa2641411db1 (struct it): Remove member use_default_face.
Kim F. Storm <storm@cua.dk>
parents: 55169
diff changeset
2395 /* Override font height information for this glyph.
fa2641411db1 (struct it): Remove member use_default_face.
Kim F. Storm <storm@cua.dk>
parents: 55169
diff changeset
2396 Used if override_ascent >= 0. Cleared after this glyph. */
fa2641411db1 (struct it): Remove member use_default_face.
Kim F. Storm <storm@cua.dk>
parents: 55169
diff changeset
2397 int override_ascent, override_descent, override_boff;
fa2641411db1 (struct it): Remove member use_default_face.
Kim F. Storm <storm@cua.dk>
parents: 55169
diff changeset
2398
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2399 /* If non-null, glyphs are produced in glyph_row with each call to
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2400 produce_glyphs. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2401 struct glyph_row *glyph_row;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2402
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2403 /* The area of glyph_row to which glyphs are added. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2404 enum glyph_row_area area;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2405
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2406 /* Number of glyphs needed for the last character requested via
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2407 produce_glyphs. This is 1 except for tabs. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2408 int nglyphs;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
2409
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2410 /* Width of the display element in pixels. Result of
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2411 produce_glyphs. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2412 int pixel_width;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2413
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
2414 /* Current, maximum logical, and maximum physical line height
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
2415 information. Result of produce_glyphs. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2416 int ascent, descent, max_ascent, max_descent;
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
2417 int phys_ascent, phys_descent, max_phys_ascent, max_phys_descent;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2418
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2419 /* Current x pixel position within the display line. This value
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2420 does not include the width of continuation lines in front of the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2421 line. The value of current_x is automatically incremented by
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2422 pixel_width with each call to produce_glyphs. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2423 int current_x;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2424
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2425 /* Accumulated width of continuation lines. If > 0, this means we
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2426 are currently in a continuation line. This is initially zero and
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2427 incremented/reset by display_line, move_it_to etc. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2428 int continuation_lines_width;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2429
107641
d65c199e8bdd Continue work on cursor movement in continued lines.
Eli Zaretskii <eliz@gnu.org>
parents: 107635
diff changeset
2430 /* Buffer position that ends the buffer text line being iterated.
d65c199e8bdd Continue work on cursor movement in continued lines.
Eli Zaretskii <eliz@gnu.org>
parents: 107635
diff changeset
2431 This is normally the position after the newline at EOL. If this
d65c199e8bdd Continue work on cursor movement in continued lines.
Eli Zaretskii <eliz@gnu.org>
parents: 107635
diff changeset
2432 is the last line of the buffer and it doesn't have a newline,
d65c199e8bdd Continue work on cursor movement in continued lines.
Eli Zaretskii <eliz@gnu.org>
parents: 107635
diff changeset
2433 value is ZV/ZV_BYTE. Set and used only if IT->bidi_p, for
d65c199e8bdd Continue work on cursor movement in continued lines.
Eli Zaretskii <eliz@gnu.org>
parents: 107635
diff changeset
2434 setting the end position of glyph rows produced for continuation
d65c199e8bdd Continue work on cursor movement in continued lines.
Eli Zaretskii <eliz@gnu.org>
parents: 107635
diff changeset
2435 lines, see display_line. */
d65c199e8bdd Continue work on cursor movement in continued lines.
Eli Zaretskii <eliz@gnu.org>
parents: 107635
diff changeset
2436 struct text_pos eol_pos;
d65c199e8bdd Continue work on cursor movement in continued lines.
Eli Zaretskii <eliz@gnu.org>
parents: 107635
diff changeset
2437
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2438 /* Current y-position. Automatically incremented by the height of
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2439 glyph_row in move_it_to and display_line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2440 int current_y;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2441
53077
f832dd90f584 (struct it): New member first_vpos.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2442 /* Vertical matrix position of first text line in window. */
f832dd90f584 (struct it): New member first_vpos.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2443 int first_vpos;
f832dd90f584 (struct it): New member first_vpos.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2444
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2445 /* Current vertical matrix position, or line number. Automatically
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2446 incremented by move_it_to and display_line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2447 int vpos;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2448
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2449 /* Horizontal matrix position reached in move_it_in_display_line.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2450 Only set there, not in display_line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2451 int hpos;
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2452
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2453 /* Left fringe bitmap number (enum fringe_bitmap_type). */
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2454 unsigned left_user_fringe_bitmap : FRINGE_ID_BITS;
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2455
57276
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
2456 /* Right fringe bitmap number (enum fringe_bitmap_type). */
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
2457 unsigned right_user_fringe_bitmap : FRINGE_ID_BITS;
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
2458
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2459 /* Face of the left fringe glyph. */
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2460 unsigned left_user_fringe_face_id : FACE_ID_BITS;
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2461
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2462 /* Face of the right fringe glyph. */
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2463 unsigned right_user_fringe_face_id : FACE_ID_BITS;
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
2464
107584
e0df0337f248 Retrospective commit from 2009-08-15.
Eli Zaretskii <eliz@gnu.org>
parents: 107583
diff changeset
2465 /* Non-zero means we need to reorder bidirectional text for display
e0df0337f248 Retrospective commit from 2009-08-15.
Eli Zaretskii <eliz@gnu.org>
parents: 107583
diff changeset
2466 in the visual order. */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
2467 int bidi_p;
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
2468
107584
e0df0337f248 Retrospective commit from 2009-08-15.
Eli Zaretskii <eliz@gnu.org>
parents: 107583
diff changeset
2469 /* For iterating over bidirectional text. */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
2470 struct bidi_it bidi_it;
107595
69c12db7031d Retrospective commit from 2009-10-05.
Eli Zaretskii <eliz@gnu.org>
parents: 107594
diff changeset
2471 bidi_dir_t paragraph_embedding;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2472 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2473
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2474
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2475 /* Access to positions of iterator IT. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2476
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2477 #define IT_CHARPOS(IT) CHARPOS ((IT).current.pos)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2478 #define IT_BYTEPOS(IT) BYTEPOS ((IT).current.pos)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2479 #define IT_STRING_CHARPOS(IT) CHARPOS ((IT).current.string_pos)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2480 #define IT_STRING_BYTEPOS(IT) BYTEPOS ((IT).current.string_pos)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2481
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2482 /* Test if IT has reached the end of its buffer or string. This will
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2483 only work after get_next_display_element has been called. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2484
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2485 #define ITERATOR_AT_END_P(IT) ((IT)->what == IT_EOB)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2486
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2487 /* Non-zero means IT is at the end of a line. This is the case if it
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2488 is either on a newline or on a carriage return and selective
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2489 display hides the rest of the line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2490
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2491 #define ITERATOR_AT_END_OF_LINE_P(IT) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2492 ((IT)->what == IT_CHARACTER \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2493 && ((IT)->c == '\n' \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2494 || ((IT)->c == '\r' && (IT)->selective)))
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2495
107198
f32d789c9aab term.c, dispextern.h: Fix stale comments.
Eli Zaretskii <eliz@gnu.org>
parents: 106815
diff changeset
2496 /* Call produce_glyphs or FRAME_RIF->produce_glyphs, if set. Shortcut
f32d789c9aab term.c, dispextern.h: Fix stale comments.
Eli Zaretskii <eliz@gnu.org>
parents: 106815
diff changeset
2497 to avoid the function call overhead. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2498
82992
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 82989
diff changeset
2499 #define PRODUCE_GLYPHS(IT) \
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 82989
diff changeset
2500 do { \
107645
6e29ba4351e0 Fix glyph_row reversed_p flag in empty lines between paragraphs.
Eli Zaretskii <eliz@gnu.org>
parents: 107644
diff changeset
2501 if ((IT)->glyph_row != NULL && (IT)->bidi_p) \
6e29ba4351e0 Fix glyph_row reversed_p flag in empty lines between paragraphs.
Eli Zaretskii <eliz@gnu.org>
parents: 107644
diff changeset
2502 { \
6e29ba4351e0 Fix glyph_row reversed_p flag in empty lines between paragraphs.
Eli Zaretskii <eliz@gnu.org>
parents: 107644
diff changeset
2503 if ((IT)->bidi_it.paragraph_dir == R2L) \
6e29ba4351e0 Fix glyph_row reversed_p flag in empty lines between paragraphs.
Eli Zaretskii <eliz@gnu.org>
parents: 107644
diff changeset
2504 (IT)->glyph_row->reversed_p = 1; \
6e29ba4351e0 Fix glyph_row reversed_p flag in empty lines between paragraphs.
Eli Zaretskii <eliz@gnu.org>
parents: 107644
diff changeset
2505 else \
6e29ba4351e0 Fix glyph_row reversed_p flag in empty lines between paragraphs.
Eli Zaretskii <eliz@gnu.org>
parents: 107644
diff changeset
2506 (IT)->glyph_row->reversed_p = 0; \
6e29ba4351e0 Fix glyph_row reversed_p flag in empty lines between paragraphs.
Eli Zaretskii <eliz@gnu.org>
parents: 107644
diff changeset
2507 } \
82992
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 82989
diff changeset
2508 if (FRAME_RIF ((IT)->f) != NULL) \
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 82989
diff changeset
2509 FRAME_RIF ((IT)->f)->produce_glyphs ((IT)); \
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 82989
diff changeset
2510 else \
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 82989
diff changeset
2511 produce_glyphs ((IT)); \
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 82989
diff changeset
2512 if ((IT)->glyph_row != NULL) \
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 82989
diff changeset
2513 inhibit_free_realized_faces = 1; \
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 82989
diff changeset
2514 } while (0)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2515
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2516 /* Bit-flags indicating what operation move_it_to should perform. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2517
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2518 enum move_operation_enum
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2519 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2520 /* Stop if specified x-position is reached. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2521 MOVE_TO_X = 0x01,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2522
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2523 /* Stop if specified y-position is reached. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2524 MOVE_TO_Y = 0x02,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2525
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2526 /* Stop if specified vpos is reached. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2527 MOVE_TO_VPOS = 0x04,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2528
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2529 /* Stop if specified buffer or string position is reached. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2530 MOVE_TO_POS = 0x08
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2531 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2532
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2533
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2534
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2535 /***********************************************************************
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2536 Window-based redisplay interface
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2537 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2538
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2539 /* Structure used to describe runs of lines that must be scrolled. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2540
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2541 struct run
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2542 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2543 /* Source and destination y pixel position. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2544 int desired_y, current_y;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2545
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2546 /* Source and destination vpos in matrix. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2547 int desired_vpos, current_vpos;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2548
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2549 /* Height in pixels, number of glyph rows. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2550 int height, nrows;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2551 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2552
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2553
50356
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
2554 /* Handlers for setting frame parameters. */
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
2555
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2556 typedef void (*frame_parm_handler) (struct frame *, Lisp_Object, Lisp_Object);
50356
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
2557
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
2558
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2559 /* Structure holding system-dependent interface functions needed
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2560 for window-based redisplay. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2561
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2562 struct redisplay_interface
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2563 {
50356
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
2564 /* Handlers for setting frame parameters. */
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
2565 frame_parm_handler *frame_parm_handlers;
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
2566
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2567 /* Produce glyphs/get display metrics for the display element IT is
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2568 loaded with. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2569 void (*produce_glyphs) (struct it *it);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
2570
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2571 /* Write or insert LEN glyphs from STRING at the nominal output
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2572 position. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2573 void (*write_glyphs) (struct glyph *string, int len);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2574 void (*insert_glyphs) (struct glyph *start, int len);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2575
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2576 /* Clear from nominal output position to X. X < 0 means clear
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2577 to right end of display. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2578 void (*clear_end_of_line) (int x);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
2579
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2580 /* Function to call to scroll the display as described by RUN on
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2581 window W. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2582 void (*scroll_run_hook) (struct window *w, struct run *run);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2583
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2584 /* Function to call after a line in a display has been completely
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2585 updated. Used to draw truncation marks and alike. DESIRED_ROW
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2586 is the desired row which has been updated. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2587 void (*after_update_window_line_hook) (struct glyph_row *desired_row);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2588
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2589 /* Function to call before beginning to update window W in
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2590 window-based redisplay. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2591 void (*update_window_begin_hook) (struct window *w);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2592
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2593 /* Function to call after window W has been updated in window-based
30162
b90768fb8580 (struct redisplay_interface): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents: 30151
diff changeset
2594 redisplay. CURSOR_ON_P non-zero means switch cursor on.
b90768fb8580 (struct redisplay_interface): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents: 30151
diff changeset
2595 MOUSE_FACE_OVERWRITTEN_P non-zero means that some lines in W
b90768fb8580 (struct redisplay_interface): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents: 30151
diff changeset
2596 that contained glyphs in mouse-face were overwritten, so we
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
2597 have to update the mouse highlight. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2598 void (*update_window_end_hook) (struct window *w, int cursor_on_p,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2599 int mouse_face_overwritten_p);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
2600
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2601 /* Move cursor to row/column position VPOS/HPOS, pixel coordinates
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2602 Y/X. HPOS/VPOS are window-relative row and column numbers and X/Y
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2603 are window-relative pixel positions. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2604 void (*cursor_to) (int vpos, int hpos, int y, int x);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2605
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2606 /* Flush the display of frame F. For X, this is XFlush. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2607 void (*flush_display) (struct frame *f);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2608
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2609 /* Flush the display of frame F if non-NULL. This is called
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2610 during redisplay, and should be NULL on systems which flushes
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2611 automatically before reading input. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2612 void (*flush_display_optional) (struct frame *f);
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2613
30343
21d1c542f98e Correct a typo in a comment.
Eli Zaretskii <eliz@gnu.org>
parents: 30225
diff changeset
2614 /* Clear the mouse hightlight in window W, if there is any. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2615 void (*clear_window_mouse_face) (struct window *w);
30162
b90768fb8580 (struct redisplay_interface): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents: 30151
diff changeset
2616
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2617 /* Set *LEFT and *RIGHT to the left and right overhang of GLYPH on
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2618 frame F. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2619 void (*get_glyph_overhangs) (struct glyph *glyph, struct frame *f,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2620 int *left, int *right);
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
2621
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
2622 /* Fix the display of AREA of ROW in window W for overlapping rows.
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
2623 This function is called from redraw_overlapping_rows after
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
2624 desired rows have been made current. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2625 void (*fix_overlapping_area) (struct window *w, struct glyph_row *row,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2626 enum glyph_row_area area, int);
50095
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
2627
50193
dadd724b7ce9 Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50149
diff changeset
2628 #ifdef HAVE_WINDOW_SYSTEM
dadd724b7ce9 Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50149
diff changeset
2629
50095
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
2630 /* Draw a fringe bitmap in window W of row ROW using parameters P. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2631 void (*draw_fringe_bitmap) (struct window *w, struct glyph_row *row,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2632 struct draw_fringe_bitmap_params *p);
50095
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
2633
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2634 /* Define and destroy fringe bitmap no. WHICH. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2635 void (*define_fringe_bitmap) (int which, unsigned short *bits,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2636 int h, int wd);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2637 void (*destroy_fringe_bitmap) (int which);
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2638
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2639 /* Compute left and right overhang of glyph string S.
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
2640 A NULL pointer if platform does not support this. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2641 void (*compute_glyph_string_overhangs) (struct glyph_string *s);
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
2642
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
2643 /* Draw a glyph string S. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2644 void (*draw_glyph_string) (struct glyph_string *s);
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
2645
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2646 /* Define cursor CURSOR on frame F. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2647 void (*define_frame_cursor) (struct frame *f, Cursor cursor);
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2648
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2649 /* Clear the area at (X,Y,WIDTH,HEIGHT) of frame F. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2650 void (*clear_frame_area) (struct frame *f, int x, int y,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2651 int width, int height);
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2652
50243
3fb54e5a7201 (struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents: 50217
diff changeset
2653 /* Draw specified cursor CURSOR_TYPE of width CURSOR_WIDTH
3fb54e5a7201 (struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents: 50217
diff changeset
2654 at row GLYPH_ROW on window W if ON_P is 1. If ON_P is
3fb54e5a7201 (struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents: 50217
diff changeset
2655 0, don't draw cursor. If ACTIVE_P is 1, system caret
3fb54e5a7201 (struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents: 50217
diff changeset
2656 should track this cursor (when applicable). */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2657 void (*draw_window_cursor) (struct window *w,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2658 struct glyph_row *glyph_row,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2659 int x, int y,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2660 int cursor_type, int cursor_width,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2661 int on_p, int active_p);
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2662
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2663 /* Draw vertical border for window W from (X,Y0) to (X,Y1). */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2664 void (*draw_vertical_window_border) (struct window *w,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2665 int x, int y0, int y1);
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2666
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2667 /* Shift display of frame F to make room for inserted glyphs.
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2668 The area at pixel (X,Y) of width WIDTH and height HEIGHT is
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2669 shifted right by SHIFT_BY pixels. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2670 void (*shift_glyphs_for_insert) (struct frame *f,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2671 int x, int y, int width,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2672 int height, int shift_by);
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2673
50193
dadd724b7ce9 Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50149
diff changeset
2674 #endif /* HAVE_WINDOW_SYSTEM */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2675 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2676
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2677
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2678 /***********************************************************************
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2679 Images
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2680 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2681
27626
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
2682 #ifdef HAVE_WINDOW_SYSTEM
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2683
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2684 /* Structure forward declarations. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2685
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2686 struct image;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2687
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2688
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
2689 /* Each image format (JPEG, TIFF, ...) supported is described by
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2690 a structure of the type below. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2691
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2692 struct image_type
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2693 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2694 /* A symbol uniquely identifying the image type, .e.g `jpeg'. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2695 Lisp_Object *type;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2696
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2697 /* Check that SPEC is a valid image specification for the given
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2698 image type. Value is non-zero if SPEC is valid. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2699 int (* valid_p) (Lisp_Object spec);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2700
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2701 /* Load IMG which is used on frame F from information contained in
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2702 IMG->spec. Value is non-zero if successful. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2703 int (* load) (struct frame *f, struct image *img);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2704
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2705 /* Free resources of image IMG which is used on frame F. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2706 void (* free) (struct frame *f, struct image *img);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2707
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2708 /* Next in list of all supported image types. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2709 struct image_type *next;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2710 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2711
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2712
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2713 /* Structure describing an image. Specific image formats like XBM are
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2714 converted into this form, so that display only has to deal with
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2715 this type of image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2716
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2717 struct image
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2718 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2719 /* The time in seconds at which the image was last displayed. Set
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2720 in prepare_image_for_display. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2721 unsigned long timestamp;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2722
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2723 /* Pixmaps of the image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2724 Pixmap pixmap, mask;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2725
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2726 /* Colors allocated for this image, if any. Allocated via xmalloc. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2727 unsigned long *colors;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2728 int ncolors;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2729
40263
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2730 /* A single `background color' for this image, for the use of anyone that
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2731 cares about such a thing. Only valid if the `background_valid' field
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2732 is true. This should generally be accessed by calling the accessor
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2733 macro `IMAGE_BACKGROUND', which will heuristically calculate a value
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2734 if necessary. */
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2735 unsigned long background;
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2736
78449
820186eb8f18 (struct image): New members.
Chong Yidong <cyd@stupidchicken.com>
parents: 78260
diff changeset
2737 /* Foreground and background colors of the frame on which the image
820186eb8f18 (struct image): New members.
Chong Yidong <cyd@stupidchicken.com>
parents: 78260
diff changeset
2738 is created. */
820186eb8f18 (struct image): New members.
Chong Yidong <cyd@stupidchicken.com>
parents: 78260
diff changeset
2739 unsigned long frame_foreground, frame_background;
820186eb8f18 (struct image): New members.
Chong Yidong <cyd@stupidchicken.com>
parents: 78260
diff changeset
2740
40263
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2741 /* True if this image has a `transparent' background -- that is, is
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2742 uses an image mask. The accessor macro for this is
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2743 `IMAGE_BACKGROUND_TRANSPARENT'. */
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2744 unsigned background_transparent : 1;
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2745
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2746 /* True if the `background' and `background_transparent' fields are
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2747 valid, respectively. */
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2748 unsigned background_valid : 1, background_transparent_valid : 1;
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2749
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2750 /* Width and height of the image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2751 int width, height;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2752
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2753 /* These values are used for the rectangles displayed for images
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2754 that can't be loaded. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2755 #define DEFAULT_IMAGE_WIDTH 30
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2756 #define DEFAULT_IMAGE_HEIGHT 30
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2757
70167
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2758 /* Top/left and bottom/right corner pixel of actual image data.
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2759 Used by four_corners_best to consider the real image data,
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2760 rather than looking at the optional image margin. */
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2761 int corners[4];
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2762 #define TOP_CORNER 0
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2763 #define LEFT_CORNER 1
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2764 #define BOT_CORNER 2
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2765 #define RIGHT_CORNER 3
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2766
28786
e18bbe250122 (DEFAULT_IMAGE_HEIGHT): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 28707
diff changeset
2767 /* Percent of image height used as ascent. A value of
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
2768 CENTERED_IMAGE_ASCENT means draw the image centered on the
28786
e18bbe250122 (DEFAULT_IMAGE_HEIGHT): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 28707
diff changeset
2769 line. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2770 int ascent;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2771 #define DEFAULT_IMAGE_ASCENT 50
28786
e18bbe250122 (DEFAULT_IMAGE_HEIGHT): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 28707
diff changeset
2772 #define CENTERED_IMAGE_ASCENT -1
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2773
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2774 /* Lisp specification of this image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2775 Lisp_Object spec;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2776
92150
1c088baa9d2d Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92109
diff changeset
2777 /* List of "references" followed to build the image.
1c088baa9d2d Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92109
diff changeset
2778 Typically will just contain the name of the image file.
1c088baa9d2d Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92109
diff changeset
2779 Used to allow fine-grained cache flushing. */
1c088baa9d2d Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92109
diff changeset
2780 Lisp_Object dependencies;
1c088baa9d2d Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92109
diff changeset
2781
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2782 /* Relief to draw around the image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2783 int relief;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2784
35274
bc2b88ed2fa1 (struct image): Replace member `margin' with
Gerd Moellmann <gerd@gnu.org>
parents: 35054
diff changeset
2785 /* Optional margins around the image. This includes the relief. */
bc2b88ed2fa1 (struct image): Replace member `margin' with
Gerd Moellmann <gerd@gnu.org>
parents: 35054
diff changeset
2786 int hmargin, vmargin;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2787
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2788 /* Reference to the type of the image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2789 struct image_type *type;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2790
25954
ab0d41b6f746 (struct image): New member load_failed_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25881
diff changeset
2791 /* 1 means that loading the image failed. Don't try again. */
ab0d41b6f746 (struct image): New member load_failed_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25881
diff changeset
2792 unsigned load_failed_p;
ab0d41b6f746 (struct image): New member load_failed_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25881
diff changeset
2793
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2794 /* A place for image types to store additional data. The member
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2795 data.lisp_val is marked during GC, so it's safe to store Lisp data
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2796 there. Image types should free this data when their `free'
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2797 function is called. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2798 struct
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2799 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2800 int int_val;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2801 void *ptr_val;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2802 Lisp_Object lisp_val;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2803 } data;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2804
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2805 /* Hash value of image specification to speed up comparisons. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2806 unsigned hash;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2807
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2808 /* Image id of this image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2809 int id;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2810
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2811 /* Hash collision chain. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2812 struct image *next, *prev;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2813 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2814
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2815
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2816 /* Cache of images. Each frame has a cache. X frames with the same
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2817 x_display_info share their caches. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2818
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2819 struct image_cache
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2820 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2821 /* Hash table of images. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2822 struct image **buckets;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2823
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2824 /* Vector mapping image ids to images. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2825 struct image **images;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2826
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2827 /* Allocated size of `images'. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2828 unsigned size;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2829
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2830 /* Number of images in the cache. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2831 unsigned used;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2832
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2833 /* Reference count (number of frames sharing this cache). */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2834 int refcount;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2835 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2836
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2837
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2838 /* Value is a pointer to the image with id ID on frame F, or null if
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2839 no image with that id exists. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2840
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2841 #define IMAGE_FROM_ID(F, ID) \
92109
4d9fc08769fa Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
2842 (((ID) >= 0 && (ID) < (FRAME_IMAGE_CACHE (F)->used)) \
4d9fc08769fa Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
2843 ? FRAME_IMAGE_CACHE (F)->images[ID] \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2844 : NULL)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2845
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2846 /* Size of bucket vector of image caches. Should be prime. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2847
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2848 #define IMAGE_CACHE_BUCKETS_SIZE 1001
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2849
27626
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
2850 #endif /* HAVE_WINDOW_SYSTEM */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2851
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2852
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2853
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2854 /***********************************************************************
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2855 Tool-bars
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2856 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2857
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2858 /* Enumeration defining where to find tool-bar item information in
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2859 tool-bar items vectors stored with frames. Each tool-bar item
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2860 occupies TOOL_BAR_ITEM_NSLOTS elements in such a vector. */
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2861
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2862 enum tool_bar_item_idx
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2863 {
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2864 /* The key of the tool-bar item. Used to remove items when a binding
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2865 for `undefined' is found. */
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2866 TOOL_BAR_ITEM_KEY,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2867
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2868 /* Non-nil if item is enabled. */
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2869 TOOL_BAR_ITEM_ENABLED_P,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2870
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2871 /* Non-nil if item is selected (pressed). */
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2872 TOOL_BAR_ITEM_SELECTED_P,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2873
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2874 /* Caption. */
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2875 TOOL_BAR_ITEM_CAPTION,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2876
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2877 /* Image(s) to display. This is either a single image specification
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2878 or a vector of specifications. */
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2879 TOOL_BAR_ITEM_IMAGES,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2880
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2881 /* The binding. */
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2882 TOOL_BAR_ITEM_BINDING,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2883
111991
968255ee954a Support for menu separators in the GTK tool-bar.
Chong Yidong <cyd@stupidchicken.com>
parents: 111945
diff changeset
2884 /* Button type. One of nil (default button), t (a separator),
968255ee954a Support for menu separators in the GTK tool-bar.
Chong Yidong <cyd@stupidchicken.com>
parents: 111945
diff changeset
2885 `:radio', or `:toggle'. The latter two currently do nothing. */
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2886 TOOL_BAR_ITEM_TYPE,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2887
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2888 /* Help string. */
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2889 TOOL_BAR_ITEM_HELP,
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2890
78719
cf3310f7d4c8 (enum tool_bar_item_idx): Add TOOL_BAR_ITEM_RTL_IMAGE.
Jan Djärv <jan.h.d@swipnet.se>
parents: 78449
diff changeset
2891 /* Icon file name of right to left image when an RTL locale is used. */
cf3310f7d4c8 (enum tool_bar_item_idx): Add TOOL_BAR_ITEM_RTL_IMAGE.
Jan Djärv <jan.h.d@swipnet.se>
parents: 78449
diff changeset
2892 TOOL_BAR_ITEM_RTL_IMAGE,
cf3310f7d4c8 (enum tool_bar_item_idx): Add TOOL_BAR_ITEM_RTL_IMAGE.
Jan Djärv <jan.h.d@swipnet.se>
parents: 78449
diff changeset
2893
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 108003
diff changeset
2894 /* Label to show when text labels are enabled. */
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 108003
diff changeset
2895 TOOL_BAR_ITEM_LABEL,
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 108003
diff changeset
2896
111650
8fd0d7bcdf7d Add keyword :vert-only for tool bar items with labels not shown horizontally.
Jan D. <jan.h.d@swipnet.se>
parents: 111640
diff changeset
2897 /* If we shall show the label only below the icon and not beside it. */
8fd0d7bcdf7d Add keyword :vert-only for tool bar items with labels not shown horizontally.
Jan D. <jan.h.d@swipnet.se>
parents: 111640
diff changeset
2898 TOOL_BAR_ITEM_VERT_ONLY,
8fd0d7bcdf7d Add keyword :vert-only for tool bar items with labels not shown horizontally.
Jan D. <jan.h.d@swipnet.se>
parents: 111640
diff changeset
2899
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2900 /* Sentinel = number of slots in tool_bar_items occupied by one
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2901 tool-bar item. */
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2902 TOOL_BAR_ITEM_NSLOTS
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2903 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2904
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2905
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2906 /* An enumeration for the different images that can be specified
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2907 for a tool-bar item. */
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2908
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2909 enum tool_bar_item_image
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2910 {
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2911 TOOL_BAR_IMAGE_ENABLED_SELECTED,
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2912 TOOL_BAR_IMAGE_ENABLED_DESELECTED,
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2913 TOOL_BAR_IMAGE_DISABLED_SELECTED,
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2914 TOOL_BAR_IMAGE_DISABLED_DESELECTED
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2915 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2916
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2917 /* Margin around tool-bar buttons in pixels. */
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2918
35732
1a54c78e6452 (Vtool_bar_button_margin:): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 35335
diff changeset
2919 extern Lisp_Object Vtool_bar_button_margin;
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2920
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 108003
diff changeset
2921 /* Tool bar style */
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 108003
diff changeset
2922
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 108003
diff changeset
2923 extern Lisp_Object Vtool_bar_style;
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 108003
diff changeset
2924
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 108003
diff changeset
2925 /* Maximum number of characters a label can have to be shown. */
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 108003
diff changeset
2926
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 108003
diff changeset
2927 extern EMACS_INT tool_bar_max_label_size;
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 108003
diff changeset
2928 #define DEFAULT_TOOL_BAR_LABEL_SIZE 14
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 108003
diff changeset
2929
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2930 /* Thickness of relief to draw around tool-bar buttons. */
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2931
43713
f92c4d87863a Change defvar_int def and vars to use EMACS_INT instead of just int.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43595
diff changeset
2932 extern EMACS_INT tool_bar_button_relief;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2933
35732
1a54c78e6452 (Vtool_bar_button_margin:): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 35335
diff changeset
2934 /* Default values of the above variables. */
1a54c78e6452 (Vtool_bar_button_margin:): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 35335
diff changeset
2935
44965
d5a47b039e68 (DEFAULT_TOOL_BAR_BUTTON_MARGIN)
Pavel Janík <Pavel@Janik.cz>
parents: 44890
diff changeset
2936 #define DEFAULT_TOOL_BAR_BUTTON_MARGIN 4
d5a47b039e68 (DEFAULT_TOOL_BAR_BUTTON_MARGIN)
Pavel Janík <Pavel@Janik.cz>
parents: 44890
diff changeset
2937 #define DEFAULT_TOOL_BAR_BUTTON_RELIEF 1
35732
1a54c78e6452 (Vtool_bar_button_margin:): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 35335
diff changeset
2938
1a54c78e6452 (Vtool_bar_button_margin:): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 35335
diff changeset
2939 /* The height in pixels of the default tool-bar images. */
1a54c78e6452 (Vtool_bar_button_margin:): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 35335
diff changeset
2940
1a54c78e6452 (Vtool_bar_button_margin:): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 35335
diff changeset
2941 #define DEFAULT_TOOL_BAR_IMAGE_HEIGHT 24
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2942
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2943
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2944 /***********************************************************************
45521
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2945 Terminal Capabilities
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2946 ***********************************************************************/
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2947
45550
acd09cfa0ecd Doc fix.
Miles Bader <miles@gnu.org>
parents: 45549
diff changeset
2948 /* Each of these is a bit representing a terminal `capability' (bold,
acd09cfa0ecd Doc fix.
Miles Bader <miles@gnu.org>
parents: 45549
diff changeset
2949 inverse, etc). They are or'd together to specify the set of
acd09cfa0ecd Doc fix.
Miles Bader <miles@gnu.org>
parents: 45549
diff changeset
2950 capabilities being queried for when calling `tty_capable_p' (which
acd09cfa0ecd Doc fix.
Miles Bader <miles@gnu.org>
parents: 45549
diff changeset
2951 returns true if the terminal supports all of them). */
45549
4f321c30b7da Doc fix.
Miles Bader <miles@gnu.org>
parents: 45521
diff changeset
2952
45521
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2953 #define TTY_CAP_INVERSE 0x01
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2954 #define TTY_CAP_UNDERLINE 0x02
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2955 #define TTY_CAP_BOLD 0x04
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2956 #define TTY_CAP_DIM 0x08
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2957 #define TTY_CAP_BLINK 0x10
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2958 #define TTY_CAP_ALT_CHARSET 0x20
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2959
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2960
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2961 /***********************************************************************
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2962 Function Prototypes
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2963 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2964
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
2965 /* Defined in bidi.c */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
2966
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2967 extern void bidi_init_it (EMACS_INT, EMACS_INT, struct bidi_it *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2968 extern void bidi_move_to_visually_next (struct bidi_it *);
110412
f67e6d84ff96 Fix bug #7038 with cursor motion in paragraphs w/o strong characters.
Eli Zaretskii <eliz@gnu.org>
parents: 110133
diff changeset
2969 extern void bidi_paragraph_init (bidi_dir_t, struct bidi_it *, int);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2970 extern int bidi_mirror_char (int);
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
2971
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2972 /* Defined in xdisp.c */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2973
110645
7d7a02c19d8c Fix int/EMACS_INT use in xdisp.c and print.c.
Eli Zaretskii <eliz@gnu.org>
parents: 110600
diff changeset
2974 struct glyph_row *row_containing_pos (struct window *, EMACS_INT,
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2975 struct glyph_row *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2976 struct glyph_row *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2977 EMACS_INT string_buffer_position (struct window *, Lisp_Object,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2978 EMACS_INT);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2979 int line_bottom_y (struct it *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2980 int display_prop_intangible_p (Lisp_Object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2981 void resize_echo_area_exactly (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2982 int resize_mini_window (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2983 int try_window (Lisp_Object, struct text_pos, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2984 void window_box (struct window *, int, int *, int *, int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2985 int window_box_height (struct window *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2986 int window_text_bottom_y (struct window *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2987 int window_box_width (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2988 int window_box_left (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2989 int window_box_left_offset (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2990 int window_box_right (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2991 int window_box_right_offset (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2992 void window_box_edges (struct window *, int, int *, int *, int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2993 int estimate_mode_line_height (struct frame *, enum face_id);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2994 void pixel_to_glyph_coords (struct frame *, int, int, int *, int *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2995 NativeRectangle *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2996 int glyph_to_pixel_coords (struct window *, int, int, int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2997 void remember_mouse_glyph (struct frame *, int, int, NativeRectangle *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2998
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2999 void mark_window_display_accurate (Lisp_Object, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3000 void redisplay_preserve_echo_area (int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3001 int set_cursor_from_row (struct window *, struct glyph_row *,
110552
66f6be9b4d43 Fix int/EMACS_INT use in ccl.c, cmds.c, data.c, dispnew.c.
Eli Zaretskii <eliz@gnu.org>
parents: 110544
diff changeset
3002 struct glyph_matrix *, EMACS_INT, EMACS_INT,
66f6be9b4d43 Fix int/EMACS_INT use in ccl.c, cmds.c, data.c, dispnew.c.
Eli Zaretskii <eliz@gnu.org>
parents: 110544
diff changeset
3003 int, int);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3004 void init_iterator (struct it *, struct window *, EMACS_INT,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3005 EMACS_INT, struct glyph_row *, enum face_id);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3006 void init_iterator_to_row_start (struct it *, struct window *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3007 struct glyph_row *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3008 int get_next_display_element (struct it *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3009 void set_iterator_to_next (struct it *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3010 void start_display (struct it *, struct window *, struct text_pos);
110573
72166a5a538c Fix up some EMACS_INT/int conversion errors related to xdisp.c.
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents: 110559
diff changeset
3011 void move_it_to (struct it *, EMACS_INT, int, int, int, int);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3012 void move_it_vertically (struct it *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3013 void move_it_vertically_backward (struct it *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3014 void move_it_by_lines (struct it *, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3015 void move_it_past_eol (struct it *);
95566
b3c0438c570b * window.c (window_scroll_pixel_based_preserve_x)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95457
diff changeset
3016 void move_it_in_display_line (struct it *it,
b3c0438c570b * window.c (window_scroll_pixel_based_preserve_x)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95457
diff changeset
3017 EMACS_INT to_charpos, int to_x,
b3c0438c570b * window.c (window_scroll_pixel_based_preserve_x)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95457
diff changeset
3018 enum move_operation_enum op);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3019 int in_display_vector_p (struct it *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3020 int frame_mode_line_height (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3021 void highlight_trailing_whitespace (struct frame *, struct glyph_row *);
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
3022 extern Lisp_Object Qtool_bar;
25303
9cdb001b8bcb (struct it): Remove member
Gerd Moellmann <gerd@gnu.org>
parents: 25185
diff changeset
3023 extern Lisp_Object Vshow_trailing_whitespace;
43282
4e1019bea048 (CURRENT_MODE_LINE_FACE_ID_3): Use mode_line_in_non_selected_windows.
Kim F. Storm <storm@cua.dk>
parents: 43242
diff changeset
3024 extern int mode_line_in_non_selected_windows;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3025 extern int redisplaying_p;
31875
11ea7b711a85 (help_echo_showing_p): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 31177
diff changeset
3026 extern int help_echo_showing_p;
33460
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
3027 extern int current_mode_line_height, current_header_line_height;
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
3028 extern Lisp_Object help_echo_string, help_echo_window;
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
3029 extern Lisp_Object help_echo_object, previous_help_echo_string;
110559
9c63d46e000c Fix int/EMACS_INT use in keyboard.c.
Eli Zaretskii <eliz@gnu.org>
parents: 110552
diff changeset
3030 extern EMACS_INT help_echo_pos;
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
3031 extern struct frame *last_mouse_frame;
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
3032 extern int last_tool_bar_item;
72736
f6b18b9949d1 * xdisp.c (mouse_autoselect_window): Removed.
Chong Yidong <cyd@stupidchicken.com>
parents: 71795
diff changeset
3033 extern Lisp_Object Vmouse_autoselect_window;
68666
19e332a980f7 (unibyte_display_via_language_environment): Extern
Kenichi Handa <handa@m17n.org>
parents: 68651
diff changeset
3034 extern int unibyte_display_via_language_environment;
95792
953225ddde83 * xdisp.c (underline_minimum_offset): Rename from xterm.c's
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95566
diff changeset
3035 extern EMACS_INT underline_minimum_offset;
111235
24c75a5f002a Implement various display methods for glyphless characters.
Kenichi Handa <handa@m17n.org>
parents: 110645
diff changeset
3036 extern Lisp_Object Vglyphless_char_display;
68666
19e332a980f7 (unibyte_display_via_language_environment): Extern
Kenichi Handa <handa@m17n.org>
parents: 68651
diff changeset
3037
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3038 extern void reseat_at_previous_visible_line_start (struct it *);
111237
6788b08ca420 Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents: 111235
diff changeset
3039 extern Lisp_Object lookup_glyphless_char_display (int, struct it *);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3040 extern int calc_pixel_width_or_height (double *, struct it *, Lisp_Object,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3041 struct font *, int, int *);
54426
f3bbed2e1849 (calc_pixel_width_or_height): Add prototype.
Kim F. Storm <storm@cua.dk>
parents: 54390
diff changeset
3042
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
3043 #ifdef HAVE_WINDOW_SYSTEM
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3044
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
3045 #if GLYPH_DEBUG
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3046 extern void dump_glyph_string (struct glyph_string *);
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
3047 #endif
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
3048
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3049 extern void x_get_glyph_overhangs (struct glyph *, struct frame *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3050 int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3051 extern void x_produce_glyphs (struct it *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3052
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3053 extern void x_write_glyphs (struct glyph *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3054 extern void x_insert_glyphs (struct glyph *, int len);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3055 extern void x_clear_end_of_line (int);
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
3056
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
3057 extern int x_stretch_cursor_p;
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
3058 extern struct cursor_pos output_cursor;
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
3059
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3060 extern void x_fix_overlapping_area (struct window *, struct glyph_row *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3061 enum glyph_row_area, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3062 extern void draw_phys_cursor_glyph (struct window *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3063 struct glyph_row *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3064 enum draw_glyphs_face);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3065 extern void get_phys_cursor_geometry (struct window *, struct glyph_row *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3066 struct glyph *, int *, int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3067 extern void erase_phys_cursor (struct window *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3068 extern void display_and_set_cursor (struct window *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3069 int, int, int, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3070
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3071 extern void set_output_cursor (struct cursor_pos *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3072 extern void x_cursor_to (int, int, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3073
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3074 extern void x_update_cursor (struct frame *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3075 extern void x_clear_cursor (struct window *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3076 extern void x_draw_vertical_border (struct window *w);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3077
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3078 extern int get_glyph_string_clip_rects (struct glyph_string *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3079 NativeRectangle *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3080 extern void get_glyph_string_clip_rect (struct glyph_string *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3081 NativeRectangle *nr);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3082 extern Lisp_Object find_hot_spot (Lisp_Object, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3083
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3084 extern void handle_tool_bar_click (struct frame *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3085 int, int, int, unsigned int);
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
3086
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3087 extern void expose_frame (struct frame *, int, int, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3088 extern int x_intersect_rectangles (XRectangle *, XRectangle *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3089 XRectangle *);
111339
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
3090 #endif /* HAVE_WINDOW_SYSTEM */
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
3091
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
3092 extern void frame_to_window_pixel_xy (struct window *, int *, int *);
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
3093 extern void note_mouse_highlight (struct frame *, int, int);
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
3094 extern void x_clear_window_mouse_face (struct window *);
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
3095 extern void cancel_mouse_face (struct frame *);
111344
b775602e70c8 Cleanup fallout from redesigning mouse highlight.
Eli Zaretskii <eliz@gnu.org>
parents: 111340
diff changeset
3096 extern int clear_mouse_face (Mouse_HLInfo *);
b775602e70c8 Cleanup fallout from redesigning mouse highlight.
Eli Zaretskii <eliz@gnu.org>
parents: 111340
diff changeset
3097 extern void show_mouse_face (Mouse_HLInfo *, enum draw_glyphs_face);
111339
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
3098 extern int cursor_in_mouse_face_p (struct window *w);
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
3099 extern void draw_row_with_mouse_face (struct window *, int, struct glyph_row *,
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
3100 int, int, enum draw_glyphs_face);
111344
b775602e70c8 Cleanup fallout from redesigning mouse highlight.
Eli Zaretskii <eliz@gnu.org>
parents: 111340
diff changeset
3101 extern void tty_draw_row_with_mouse_face (struct window *, struct glyph_row *,
b775602e70c8 Cleanup fallout from redesigning mouse highlight.
Eli Zaretskii <eliz@gnu.org>
parents: 111340
diff changeset
3102 int, int, enum draw_glyphs_face);
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
3103
111363
a9fb26c764e7 Backport r99863 from trunk
Chong Yidong <cyd@stupidchicken.com>
parents: 110986
diff changeset
3104 /* Flags passed to try_window. */
a9fb26c764e7 Backport r99863 from trunk
Chong Yidong <cyd@stupidchicken.com>
parents: 110986
diff changeset
3105 #define TRY_WINDOW_CHECK_MARGINS (1 << 0)
a9fb26c764e7 Backport r99863 from trunk
Chong Yidong <cyd@stupidchicken.com>
parents: 110986
diff changeset
3106 #define TRY_WINDOW_IGNORE_FONTS_CHANGE (1 << 1)
a9fb26c764e7 Backport r99863 from trunk
Chong Yidong <cyd@stupidchicken.com>
parents: 110986
diff changeset
3107
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
3108 /* Defined in fringe.c */
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
3109
109635
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109555
diff changeset
3110 extern Lisp_Object Voverflow_newline_into_fringe;
57269
3ff2bf32d84d (lookup_fringe_bitmap): Add prototype.
Kim F. Storm <storm@cua.dk>
parents: 57259
diff changeset
3111 int lookup_fringe_bitmap (Lisp_Object);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3112 void draw_fringe_bitmap (struct window *, struct glyph_row *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3113 void draw_row_fringe_bitmaps (struct window *, struct glyph_row *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3114 int draw_window_fringes (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3115 int update_window_fringes (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3116 void compute_fringe_widths (struct frame *, int);
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
3117
87278
153b9f19471f (WINDOWS_NT): Fix incorrect spelling of WINDOWSNT.
Eli Zaretskii <eliz@gnu.org>
parents: 85973
diff changeset
3118 #ifdef WINDOWSNT
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3119 void w32_init_fringe (struct redisplay_interface *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3120 void w32_reset_fringes (void);
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
3121 #endif
54343
02a264d3657d Image consolidation:
Kim F. Storm <storm@cua.dk>
parents: 54150
diff changeset
3122 /* Defined in image.c */
02a264d3657d Image consolidation:
Kim F. Storm <storm@cua.dk>
parents: 54150
diff changeset
3123
54356
f98f5b3f382d Move image related prototypes from xfns.c section to image.c.
Kim F. Storm <storm@cua.dk>
parents: 54343
diff changeset
3124 #ifdef HAVE_WINDOW_SYSTEM
f98f5b3f382d Move image related prototypes from xfns.c section to image.c.
Kim F. Storm <storm@cua.dk>
parents: 54343
diff changeset
3125
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3126 extern int x_bitmap_height (struct frame *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3127 extern int x_bitmap_width (struct frame *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3128 extern int x_bitmap_pixmap (struct frame *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3129 extern void x_reference_bitmap (struct frame *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3130 extern int x_create_bitmap_from_data (struct frame *, char *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3131 unsigned int, unsigned int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3132 extern int x_create_bitmap_from_file (struct frame *, Lisp_Object);
73322
d0bb9a8883d1 Declare x_create_bitmap_from_xpm_data.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 72736
diff changeset
3133 #if defined (HAVE_XPM) && defined (HAVE_X_WINDOWS)
111997
a5a188ddc758 Minor clean up to silence some gcc warnings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 111991
diff changeset
3134 extern int x_create_bitmap_from_xpm_data (struct frame *f, const char **bits);
73322
d0bb9a8883d1 Declare x_create_bitmap_from_xpm_data.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 72736
diff changeset
3135 #endif
54343
02a264d3657d Image consolidation:
Kim F. Storm <storm@cua.dk>
parents: 54150
diff changeset
3136 #ifndef x_destroy_bitmap
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3137 extern void x_destroy_bitmap (struct frame *, int);
54343
02a264d3657d Image consolidation:
Kim F. Storm <storm@cua.dk>
parents: 54150
diff changeset
3138 #endif
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3139 extern void x_destroy_all_bitmaps (Display_Info *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3140 extern int x_create_bitmap_mask (struct frame * , int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3141 extern Lisp_Object x_find_image_file (Lisp_Object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3142
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3143 void x_kill_gs_process (Pixmap, struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3144 struct image_cache *make_image_cache (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3145 void free_image_cache (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3146 void clear_image_caches (Lisp_Object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3147 void mark_image_cache (struct image_cache *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3148 int valid_image_p (Lisp_Object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3149 void prepare_image_for_display (struct frame *, struct image *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3150 int lookup_image (struct frame *, Lisp_Object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3151
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3152 unsigned long image_background (struct image *, struct frame *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3153 XImagePtr_or_DC ximg);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3154 int image_background_transparent (struct image *, struct frame *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3155 XImagePtr_or_DC mask);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3156
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3157 int image_ascent (struct image *, struct face *, struct glyph_slice *);
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
3158
54356
f98f5b3f382d Move image related prototypes from xfns.c section to image.c.
Kim F. Storm <storm@cua.dk>
parents: 54343
diff changeset
3159 #endif
f98f5b3f382d Move image related prototypes from xfns.c section to image.c.
Kim F. Storm <storm@cua.dk>
parents: 54343
diff changeset
3160
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3161 /* Defined in sysdep.c */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3162
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3163 void get_tty_size (int, int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3164 void request_sigio (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3165 void unrequest_sigio (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3166 int tabs_safe_p (int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3167 void init_baud_rate (int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3168 void init_sigio (int);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3169
25881
54d9b33d9c4b (enum face_id): Add MENU_FACE_ID.
Gerd Moellmann <gerd@gnu.org>
parents: 25796
diff changeset
3170 /* Defined in xfaces.c */
54d9b33d9c4b (enum face_id): Add MENU_FACE_ID.
Gerd Moellmann <gerd@gnu.org>
parents: 25796
diff changeset
3171
27961
c6664d216f5a (x_free_colors): Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 27859
diff changeset
3172 #ifdef HAVE_X_WINDOWS
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3173 void x_free_colors (struct frame *, unsigned long *, int);
27961
c6664d216f5a (x_free_colors): Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 27859
diff changeset
3174 #endif
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3175
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3176 void update_face_from_frame_parameter (struct frame *, Lisp_Object,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3177 Lisp_Object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3178 Lisp_Object tty_color_name (struct frame *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3179 void clear_face_cache (int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3180 unsigned long load_color (struct frame *, struct face *, Lisp_Object,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3181 enum lface_attribute_index);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3182 void unload_color (struct frame *, unsigned long);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3183 char *choose_face_font (struct frame *, Lisp_Object *, Lisp_Object,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3184 int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3185 int ascii_face_of_lisp_face (struct frame *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3186 void prepare_face_for_display (struct frame *, struct face *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3187 int xstrcasecmp (const unsigned char *, const unsigned char *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3188 int lookup_named_face (struct frame *, Lisp_Object, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3189 int lookup_basic_face (struct frame *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3190 int smaller_face (struct frame *, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3191 int face_with_height (struct frame *, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3192 int lookup_derived_face (struct frame *, Lisp_Object, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3193 void init_frame_faces (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3194 void free_frame_faces (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3195 void recompute_basic_faces (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3196 int face_at_buffer_position (struct window *w, EMACS_INT pos,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3197 EMACS_INT region_beg, EMACS_INT region_end,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3198 EMACS_INT *endptr, EMACS_INT limit,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3199 int mouse, int base_face_id);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3200 int face_for_overlay_string (struct window *w, EMACS_INT pos,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3201 EMACS_INT region_beg, EMACS_INT region_end,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3202 EMACS_INT *endptr, EMACS_INT limit,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3203 int mouse, Lisp_Object overlay);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3204 int face_at_string_position (struct window *w, Lisp_Object string,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3205 EMACS_INT pos, EMACS_INT bufpos,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3206 EMACS_INT region_beg, EMACS_INT region_end,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3207 EMACS_INT *endptr, enum face_id, int mouse);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3208 int merge_faces (struct frame *, Lisp_Object, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3209 int compute_char_face (struct frame *, int, Lisp_Object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3210 void free_all_realized_faces (Lisp_Object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3211 void free_realized_face (struct frame *, struct face *);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3212 extern Lisp_Object Qforeground_color, Qbackground_color;
63641
0e9b134bfaa1 Add extern Qframe_set_background_mode.
Juri Linkov <juri@jurta.org>
parents: 63594
diff changeset
3213 extern Lisp_Object Qframe_set_background_mode;
32543
4ea276abceba (unspecified_fg, unspecified_bg): Declare.
Eli Zaretskii <eliz@gnu.org>
parents: 32459
diff changeset
3214 extern char unspecified_fg[], unspecified_bg[];
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3215
95457
415f68458e61 Implement face-remapping-alist feature
Miles Bader <miles@gnu.org>
parents: 95208
diff changeset
3216 extern Lisp_Object Vface_remapping_alist;
415f68458e61 Implement face-remapping-alist feature
Miles Bader <miles@gnu.org>
parents: 95208
diff changeset
3217
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3218 /* Defined in xfns.c */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3219
27626
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
3220 #ifdef HAVE_X_WINDOWS
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3221 void gamma_correct (struct frame *, XColor *);
27626
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
3222 #endif
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
3223 #ifdef WINDOWSNT
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3224 void gamma_correct (struct frame *, COLORREF *);
27626
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
3225 #endif
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
3226
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
3227 #ifdef HAVE_WINDOW_SYSTEM
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
3228
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3229 int x_screen_planes (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3230 void x_implicitly_set_name (struct frame *, Lisp_Object, Lisp_Object);
41061
9687641007d3 (image_background, image_background_transparent):
Richard M. Stallman <rms@gnu.org>
parents: 40556
diff changeset
3231
34447
387e9f41661e Change external declaration of tip_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 34280
diff changeset
3232 extern Lisp_Object tip_frame;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3233 extern Window tip_window;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3234 EXFUN (Fx_hide_tip, 0);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3235 extern void start_hourglass (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3236 extern void cancel_hourglass (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3237 extern int hourglass_started (void);
36250
3c4e5b3d7c4a (start_hourglass, cancel_hourglass)
Gerd Moellmann <gerd@gnu.org>
parents: 36200
diff changeset
3238 extern int display_hourglass_p;
96664
b306a69b9d7f applying patch to consolidate non-GUI portion of hourglass implementation as posted at http://thread.gmane.org/gmane.emacs.devel/98341
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96470
diff changeset
3239 extern int hourglass_shown_p;
b306a69b9d7f applying patch to consolidate non-GUI portion of hourglass implementation as posted at http://thread.gmane.org/gmane.emacs.devel/98341
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96470
diff changeset
3240 struct atimer; /* Defined in atimer.h. */
b306a69b9d7f applying patch to consolidate non-GUI portion of hourglass implementation as posted at http://thread.gmane.org/gmane.emacs.devel/98341
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96470
diff changeset
3241 /* If non-null, an asynchronous timer that, when it expires, displays
b306a69b9d7f applying patch to consolidate non-GUI portion of hourglass implementation as posted at http://thread.gmane.org/gmane.emacs.devel/98341
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96470
diff changeset
3242 an hourglass cursor on all frames. */
b306a69b9d7f applying patch to consolidate non-GUI portion of hourglass implementation as posted at http://thread.gmane.org/gmane.emacs.devel/98341
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96470
diff changeset
3243 extern struct atimer *hourglass_atimer;
b306a69b9d7f applying patch to consolidate non-GUI portion of hourglass implementation as posted at http://thread.gmane.org/gmane.emacs.devel/98341
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96470
diff changeset
3244
96763
a27390a84360 change most cases of PENDING to TODO, some to FIXME or XXX
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96675
diff changeset
3245 /* Each GUI implements these. FIXME: move into RIF. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3246 extern void show_hourglass (struct atimer *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3247 extern void hide_hourglass (void);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3248
40263
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3249 /* Returns the background color of IMG, calculating one heuristically if
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3250 necessary. If non-zero, XIMG is an existing XImage object to use for
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3251 the heuristic. */
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3252
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3253 #define IMAGE_BACKGROUND(img, f, ximg) \
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3254 ((img)->background_valid \
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3255 ? (img)->background \
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3256 : image_background (img, f, ximg))
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3257
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3258 /* Returns true if IMG has a `transparent' background, using heuristics
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3259 to decide if necessary. If non-zero, MASK is an existing XImage
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3260 object to use for the heuristic. */
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3261
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3262 #define IMAGE_BACKGROUND_TRANSPARENT(img, f, mask) \
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3263 ((img)->background_transparent_valid \
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3264 ? (img)->background_transparent \
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3265 : image_background_transparent (img, f, mask))
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3266
27626
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
3267 #endif /* HAVE_WINDOW_SYSTEM */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3268
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3269
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3270 /* Defined in xmenu.c */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3271
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3272 int popup_activated (void);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3273
25344
98eb0a0280e7 (NO_PROMPT_IN_BUFFER): Removed.
Gerd Moellmann <gerd@gnu.org>
parents: 25303
diff changeset
3274 /* Defined in dispnew.c */
98eb0a0280e7 (NO_PROMPT_IN_BUFFER): Removed.
Gerd Moellmann <gerd@gnu.org>
parents: 25303
diff changeset
3275
37609
c6d7c9d92543 (inverse_video): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 36937
diff changeset
3276 extern int inverse_video;
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3277 extern Lisp_Object buffer_posn_from_coords (struct window *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3278 int *, int *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3279 struct display_pos *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3280 Lisp_Object *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3281 int *, int *, int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3282 extern Lisp_Object mode_line_string (struct window *, enum window_part,
110552
66f6be9b4d43 Fix int/EMACS_INT use in ccl.c, cmds.c, data.c, dispnew.c.
Eli Zaretskii <eliz@gnu.org>
parents: 110544
diff changeset
3283 int *, int *, EMACS_INT *,
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3284 Lisp_Object *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3285 int *, int *, int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3286 extern Lisp_Object marginal_area_string (struct window *, enum window_part,
110552
66f6be9b4d43 Fix int/EMACS_INT use in ccl.c, cmds.c, data.c, dispnew.c.
Eli Zaretskii <eliz@gnu.org>
parents: 110544
diff changeset
3287 int *, int *, EMACS_INT *,
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3288 Lisp_Object *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3289 int *, int *, int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3290 extern void redraw_frame (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3291 extern void redraw_garbaged_frames (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3292 extern void cancel_line (int, struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3293 extern void init_desired_glyphs (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3294 extern int update_frame (struct frame *, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3295 extern int scrolling (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3296 extern void bitch_at_user (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3297 void adjust_glyphs (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3298 void free_glyphs (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3299 void free_window_matrices (struct window *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3300 void check_glyph_memory (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3301 void mirrored_line_dance (struct glyph_matrix *, int, int, int *, char *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3302 void clear_glyph_matrix (struct glyph_matrix *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3303 void clear_current_matrices (struct frame *f);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3304 void clear_desired_matrices (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3305 void shift_glyph_matrix (struct window *, struct glyph_matrix *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3306 int, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3307 void rotate_matrix (struct glyph_matrix *, int, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3308 void increment_matrix_positions (struct glyph_matrix *,
110552
66f6be9b4d43 Fix int/EMACS_INT use in ccl.c, cmds.c, data.c, dispnew.c.
Eli Zaretskii <eliz@gnu.org>
parents: 110544
diff changeset
3309 int, int, EMACS_INT, EMACS_INT);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3310 void blank_row (struct window *, struct glyph_row *, int);
110552
66f6be9b4d43 Fix int/EMACS_INT use in ccl.c, cmds.c, data.c, dispnew.c.
Eli Zaretskii <eliz@gnu.org>
parents: 110544
diff changeset
3311 void increment_row_positions (struct glyph_row *, EMACS_INT, EMACS_INT);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3312 void enable_glyph_matrix_rows (struct glyph_matrix *, int, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3313 void clear_glyph_row (struct glyph_row *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3314 void prepare_desired_row (struct glyph_row *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3315 void set_window_update_flags (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3316 void update_single_window (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3317 void do_pending_window_change (int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3318 void change_frame_size (struct frame *, int, int, int, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3319 void init_display (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3320 void syms_of_display (void);
30722
1c138ac4bf6d (Qredisplay_dont_pause): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 30475
diff changeset
3321 extern Lisp_Object Qredisplay_dont_pause;
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3322 void spec_glyph_lookup_face (struct window *, GLYPH *);
21515
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 17028
diff changeset
3323
83420
521d3f18b3d1 Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents: 83400
diff changeset
3324 /* Defined in terminal.c */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3325
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3326 extern void ring_bell (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3327 extern void update_begin (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3328 extern void update_end (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3329 extern void set_terminal_window (struct frame *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3330 extern void cursor_to (struct frame *, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3331 extern void raw_cursor_to (struct frame *, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3332 extern void clear_to_end (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3333 extern void clear_frame (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3334 extern void clear_end_of_line (struct frame *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3335 extern void write_glyphs (struct frame *, struct glyph *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3336 extern void insert_glyphs (struct frame *, struct glyph *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3337 extern void delete_glyphs (struct frame *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3338 extern void ins_del_lines (struct frame *, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3339
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3340 extern struct terminal *init_initial_terminal (void);
83420
521d3f18b3d1 Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents: 83400
diff changeset
3341
521d3f18b3d1 Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents: 83400
diff changeset
3342
521d3f18b3d1 Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents: 83400
diff changeset
3343 /* Defined in term.c */
521d3f18b3d1 Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents: 83400
diff changeset
3344
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3345 extern void tty_set_terminal_modes (struct terminal *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3346 extern void tty_reset_terminal_modes (struct terminal *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3347 extern void tty_turn_off_insert (struct tty_display_info *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3348 extern void tty_turn_off_highlight (struct tty_display_info *);
109726
64732fa6188a Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109717
diff changeset
3349 extern int string_cost (const char *);
64732fa6188a Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109717
diff changeset
3350 extern int per_line_cost (const char *);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3351 extern void calculate_costs (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3352 extern void produce_glyphs (struct it *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3353 extern void produce_special_glyphs (struct it *, enum display_element_type);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3354 extern int tty_capable_p (struct tty_display_info *, unsigned, unsigned long, unsigned long);
93883
722fdbc7a012 * xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92393
diff changeset
3355 extern void set_tty_color_mode (struct tty_display_info *, struct frame *);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3356 extern struct terminal *get_tty_terminal (Lisp_Object, int);
109726
64732fa6188a Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109717
diff changeset
3357 extern struct terminal *get_named_tty (const char *);
83431
76396de7f50a Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents: 83422
diff changeset
3358 EXFUN (Ftty_type, 1);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3359 extern void create_tty_output (struct frame *);
109726
64732fa6188a Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109717
diff changeset
3360 extern struct terminal *init_tty (const char *, const char *, int);
83033
3fed8a60d18c Trivial fixes to shut up some of the compiler warnings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83021
diff changeset
3361
21515
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 17028
diff changeset
3362
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 17028
diff changeset
3363 /* Defined in scroll.c */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3364
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3365 extern int scrolling_max_lines_saved (int, int, int *, int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3366 extern int scroll_cost (struct frame *, int, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3367 extern void do_line_insertion_deletion_costs (struct frame *, char *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3368 char *, char *, char *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3369 char *, char *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3370 void scrolling_1 (struct frame *, int, int, int, int *, int *, int *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3371 int *, int);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3372
50356
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3373 /* Defined in frame.c */
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3374
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3375 #ifdef HAVE_WINDOW_SYSTEM
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3376
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3377 /* Types we might convert a resource string into. */
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3378 enum resource_types
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3379 {
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3380 RES_TYPE_NUMBER,
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3381 RES_TYPE_FLOAT,
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3382 RES_TYPE_BOOLEAN,
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3383 RES_TYPE_STRING,
107526
af52c11fa4bd bug #5736: Allow X-resource menuBar to take on/off as documented.
Jan D. <jan.h.d@swipnet.se>
parents: 107198
diff changeset
3384 RES_TYPE_SYMBOL,
af52c11fa4bd bug #5736: Allow X-resource menuBar to take on/off as documented.
Jan D. <jan.h.d@swipnet.se>
parents: 107198
diff changeset
3385 RES_TYPE_BOOLEAN_NUMBER
50356
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3386 };
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3387
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3388 extern Lisp_Object x_get_arg (Display_Info *, Lisp_Object,
109555
05e7e7c46ff0 Use const, move declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109302
diff changeset
3389 Lisp_Object, const char *, const char *class,
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3390 enum resource_types);
109555
05e7e7c46ff0 Use const, move declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109302
diff changeset
3391 extern Lisp_Object x_frame_get_and_record_arg (struct frame *, Lisp_Object,
05e7e7c46ff0 Use const, move declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109302
diff changeset
3392 Lisp_Object,
05e7e7c46ff0 Use const, move declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109302
diff changeset
3393 const char *, const char *,
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3394 enum resource_types);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3395 extern Lisp_Object x_default_parameter (struct frame *, Lisp_Object,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3396 Lisp_Object, Lisp_Object,
109555
05e7e7c46ff0 Use const, move declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109302
diff changeset
3397 const char *, const char *,
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3398 enum resource_types);
50356
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3399
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3400 #endif /* HAVE_WINDOW_SYSTEM */
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3401
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3402 #endif /* not DISPEXTERN_H_INCLUDED */
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51192
diff changeset
3403
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51192
diff changeset
3404 /* arch-tag: c65c475f-1c1e-4534-8795-990b8509fd65
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51192
diff changeset
3405 (do not change this comment) */