annotate src/dispextern.h @ 111347:9a687477468c

Cleanup -Wall warnings. xdisp.c (get_window_cursor_type): Move inside a HAVE_WINDOW_SYSTEM-only part. Remove "#ifdef HAVE_WINDOW_SYSTEM" from body of function. (null_glyph_slice): Move declaration into HAVE_WINDOW_SYSTEM-only part.
author Eli Zaretskii <eliz@gnu.org>
date Fri, 05 Nov 2010 23:47:58 +0200
parents b775602e70c8
children d53ee71e7e89
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,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106550
diff changeset
3 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
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
111340
2186ab0af4a5 Start redesigning portable mouse highlight. Not compiled.
Eli Zaretskii <eliz@gnu.org>
parents: 111339
diff changeset
46 #ifdef MSDOS
2186ab0af4a5 Start redesigning portable mouse highlight. Not compiled.
Eli Zaretskii <eliz@gnu.org>
parents: 111339
diff changeset
47 #include "msdos.h"
2186ab0af4a5 Start redesigning portable mouse highlight. Not compiled.
Eli Zaretskii <eliz@gnu.org>
parents: 111339
diff changeset
48 #endif
2186ab0af4a5 Start redesigning portable mouse highlight. Not compiled.
Eli Zaretskii <eliz@gnu.org>
parents: 111339
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
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
287 /* Glyph describes an image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
288 IMAGE_GLYPH,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
289
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
290 /* Glyph is a space of fractional width and/or height. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
291 STRETCH_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
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
294
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
295 /* 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
296
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
297 struct glyph_slice
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
298 {
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
299 unsigned x : 16;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
300 unsigned y : 16;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
301 unsigned width : 16;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
302 unsigned height : 16;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
303 };
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
304
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
305
30040
7249274abdec Add some comments.
Gerd Moellmann <gerd@gnu.org>
parents: 29859
diff changeset
306 /* Glyphs.
7249274abdec Add some comments.
Gerd Moellmann <gerd@gnu.org>
parents: 29859
diff changeset
307
7249274abdec Add some comments.
Gerd Moellmann <gerd@gnu.org>
parents: 29859
diff changeset
308 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
309 functions producing glyphs, like append_glyph, fill ALL of the
30040
7249274abdec Add some comments.
Gerd Moellmann <gerd@gnu.org>
parents: 29859
diff changeset
310 glyph structure, and that GLYPH_EQUAL_P compares all
7249274abdec Add some comments.
Gerd Moellmann <gerd@gnu.org>
parents: 29859
diff changeset
311 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
312 only things to check when you add a member). */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
313
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
314 struct glyph
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
315 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
316 /* Position from which this glyph was drawn. If `object' below is a
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
317 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
318 buffer, this is a position in that buffer. A value of -1
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
319 together with a null object means glyph is a truncation glyph at
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
320 the start of a row. */
106550
562676f8dfb2 (struct text_pos): Use EMACS_INT;
Eli Zaretskii <eliz@gnu.org>
parents: 106404
diff changeset
321 EMACS_INT charpos;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
322
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
323 /* 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
324 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
325 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
326 for its own purposes such as padding. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
327 Lisp_Object object;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
328
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
329 /* Width in pixels. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
330 short pixel_width;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
331
53328
dc1470f3ebd7 (FACE_ID_BITS, MAX_FACE_ID): New defines.
Kim F. Storm <storm@cua.dk>
parents: 53175
diff changeset
332 /* Ascent and descent in pixels. */
dc1470f3ebd7 (FACE_ID_BITS, MAX_FACE_ID): New defines.
Kim F. Storm <storm@cua.dk>
parents: 53175
diff changeset
333 short ascent, descent;
dc1470f3ebd7 (FACE_ID_BITS, MAX_FACE_ID): New defines.
Kim F. Storm <storm@cua.dk>
parents: 53175
diff changeset
334
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
335 /* Vertical offset. If < 0, the glyph is displayed raised, if > 0
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
336 the glyph is displayed lowered. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
337 short voffset;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
338
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
339 /* Which kind of glyph this is---character, image etc. Value
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
340 should be an enumerator of type enum glyph_type. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
341 unsigned type : 2;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
342
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
343 /* 1 means this glyph was produced from multibyte text. Zero
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
344 means it was produced from unibyte text, i.e. charsets aren't
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
345 applicable, and encoding is not performed. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
346 unsigned multibyte_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
347
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
348 /* 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
349 glyph. This is part of the implementation of the face attribute
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
350 `:box'. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
351 unsigned left_box_line_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
352 unsigned right_box_line_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
353
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
354 /* 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
355 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
356 glyphs above or below it. */
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
357 unsigned overlaps_vertically_p : 1;
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
358
92188
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
359 /* 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
360 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
361 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
362 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
363 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
364 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
365
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
366 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
367 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
368 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
369 unsigned padding_p : 1;
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
370
36799
d219e9d346c4 Improve comments.
Gerd Moellmann <gerd@gnu.org>
parents: 36702
diff changeset
371 /* 1 means the actual glyph is not available, draw a box instead.
d219e9d346c4 Improve comments.
Gerd Moellmann <gerd@gnu.org>
parents: 36702
diff changeset
372 This can happen when a font couldn't be loaded, or a character
d219e9d346c4 Improve comments.
Gerd Moellmann <gerd@gnu.org>
parents: 36702
diff changeset
373 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
374 unsigned glyph_not_available_p : 1;
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
375
96470
2af6e85f13d5 Implement display-time wrap/line-prefix feature
Miles Bader <miles@gnu.org>
parents: 96234
diff changeset
376
2af6e85f13d5 Implement display-time wrap/line-prefix feature
Miles Bader <miles@gnu.org>
parents: 96234
diff changeset
377 /* 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
378 unsigned avoid_cursor_p : 1;
2af6e85f13d5 Implement display-time wrap/line-prefix feature
Miles Bader <miles@gnu.org>
parents: 96234
diff changeset
379
107604
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
380 /* 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
381 unsigned resolved_level : 5;
107598
4bad2c6338cc Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents: 107596
diff changeset
382
4bad2c6338cc Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents: 107596
diff changeset
383 /* 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
384 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
385 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
386 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
387 space for those that can. */
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
388 unsigned bidi_type : 3;
107598
4bad2c6338cc Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents: 107596
diff changeset
389
96470
2af6e85f13d5 Implement display-time wrap/line-prefix feature
Miles Bader <miles@gnu.org>
parents: 96234
diff changeset
390 #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
391
63546
119eb8c37b61 (spec_glyph_lookup_face): Add declaration.
Richard M. Stallman <rms@gnu.org>
parents: 61632
diff changeset
392 /* 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
393 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
394 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
395
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
396 /* 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
397 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
398 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
399 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
400 unsigned font_type : 3;
29311
ae557edf565b (struct glyph) [WINDOWSNT]: Add w32_font_type member.
Jason Rumney <jasonr@gnu.org>
parents: 28985
diff changeset
401
110598
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
402 /* 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
403 union
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
404 {
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
405 /* 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
406 struct glyph_slice img;
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
407 /* 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
408 composition (type == COMPOSITE_GLYPH). */
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
409 struct { int from, to; } cmp;
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
410 } slice;
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
411
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
412 /* A union of sub-structures for different glyph types. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
413 union
1409
7fd1c810daca * dispextern.h: New element of frame structure `max_ascent'.
Joseph Arceneaux <jla@gnu.org>
parents: 764
diff changeset
414 {
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
415 /* 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
416 unsigned ch;
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
417
110598
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
418 /* 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
419 struct
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
420 {
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
421 /* 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
422 unsigned automatic : 1;
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
423 /* 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
424 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
425 } cmp;
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
426
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
427 /* 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
428 unsigned img_id;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
429
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
430 /* Sub-structure for type == STRETCH_GLYPH. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
431 struct
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
432 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
433 /* 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
434 unsigned height : 16;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
435
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
436 /* 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
437 unsigned ascent : 16;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
438 }
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
439 stretch;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
440
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
441 /* Used to compare all bit-fields above in one step. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
442 unsigned val;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
443 } u;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
444 };
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
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
447 /* 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
448
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
449 #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
450
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
451 /* Is GLYPH a space? */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
452
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
453 #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
454 ((GLYPH).u.ch == SPACEGLYPH && (GLYPH).face_id == DEFAULT_FACE_ID)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
455
110598
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
456 /* 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
457 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
458
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
459 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
460 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
461 the same. */
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
462
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
463 #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
464 ((X)->type == IMAGE_GLYPH \
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
465 ? ((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
466 && (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
467 && (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
468 && (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
469 : ((X)->type != COMPOSITE_GLYPH \
ee58b36ab139 Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents: 110412
diff changeset
470 || (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
471
30040
7249274abdec Add some comments.
Gerd Moellmann <gerd@gnu.org>
parents: 29859
diff changeset
472 /* Are glyphs *X and *Y displayed equal? */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
473
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
474 #define GLYPH_EQUAL_P(X, Y) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
475 ((X)->type == (Y)->type \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
476 && (X)->u.val == (Y)->u.val \
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
477 && 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
478 && (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
479 && (X)->padding_p == (Y)->padding_p \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
480 && (X)->left_box_line_p == (Y)->left_box_line_p \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
481 && (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
482 && (X)->voffset == (Y)->voffset \
075528550112 (GLYPH_EQUAL_P): Also compare pixel widths,
Gerd Moellmann <gerd@gnu.org>
parents: 34787
diff changeset
483 && (X)->pixel_width == (Y)->pixel_width)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
484
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
485 /* 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
486
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
487 #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
488 ((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
489 && (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
490 && (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
491
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
492 /* Fill a character glyph GLYPH. CODE, FACE_ID, PADDING_P correspond
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
493 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
494
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
495 #define SET_CHAR_GLYPH(GLYPH, CODE, FACE_ID, PADDING_P) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
496 do \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
497 { \
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
498 (GLYPH).u.ch = (CODE); \
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
499 (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
500 (GLYPH).padding_p = (PADDING_P); \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
501 } \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
502 while (0)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
503
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
504 /* Fill a character type glyph GLYPH from a glyph typedef FROM as
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
505 defined in lisp.h. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
506
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
507 #define SET_CHAR_GLYPH_FROM_GLYPH(GLYPH, FROM) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
508 SET_CHAR_GLYPH ((GLYPH), \
92275
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
509 GLYPH_CHAR ((FROM)), \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
510 GLYPH_FACE ((FROM)), \
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
511 0)
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
512
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
513 /* 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
514 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
515 multibyte character. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
516
92275
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
517 #define SET_GLYPH_FROM_CHAR_GLYPH(G, GLYPH) \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
518 do \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
519 { \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
520 if ((GLYPH).u.ch < 256) \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
521 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
522 else \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
523 SET_GLYPH ((G), -1, 0); \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
524 } \
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
525 while (0)
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
526
fe4c6489cfdf (CHAR_GLYPH_SPACE_P): Simplify.
Kim F. Storm <storm@cua.dk>
parents: 92237
diff changeset
527 #define GLYPH_INVALID_P(GLYPH) (GLYPH_CHAR (GLYPH) < 0)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
528
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
529 /* Is GLYPH a padding glyph? */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
530
26997
de70d8b0de3b (struct glyph): Make face_id and padding_p the top
Kenichi Handa <handa@m17n.org>
parents: 26902
diff changeset
531 #define CHAR_GLYPH_PADDING_P(GLYPH) (GLYPH).padding_p
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
532
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
533
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
534
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
535
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
536 /***********************************************************************
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
537 Glyph Pools
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
538 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
539
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
540 /* Glyph Pool.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
541
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
542 Glyph memory for frame-based redisplay is allocated from the heap
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
543 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
544 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
545 all windows on the frame.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
546
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
547 Both frame and window glyph matrices reference memory from a glyph
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
548 pool in frame-based redisplay.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
549
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
550 In window-based redisplay, no glyphs pools exist; windows allocate
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
551 and free their glyph memory themselves. */
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 struct glyph_pool
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 /* Vector of glyphs allocated from the heap. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
556 struct glyph *glyphs;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
557
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
558 /* Allocated size of `glyphs'. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
559 int nglyphs;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
560
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
561 /* Number of rows and columns in a matrix. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
562 int nrows, ncolumns;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
563 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
564
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
565
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 /***********************************************************************
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
568 Glyph Matrix
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
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
571 /* Glyph Matrix.
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 Three kinds of glyph matrices exist:
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 1. Frame glyph matrices. These are used for terminal frames whose
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
576 redisplay needs a view of the whole screen due to limited terminal
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
577 capabilities. Frame matrices are used only in the update phase
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
578 of redisplay. They are built in update_frame and not used after
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
579 the update has been performed.
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 2. Window glyph matrices on frames having frame glyph matrices.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
582 Such matrices are sub-matrices of their corresponding frame matrix,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
583 i.e. frame glyph matrices and window glyph matrices share the same
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
584 glyph memory which is allocated in form of a glyph_pool structure.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
585 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
586
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
587 2. Free-standing window glyph matrices managing their own glyph
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
588 storage. This form is used in window-based redisplay which
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
589 includes variable width and height fonts etc.
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 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
592 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
593 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
594 the smallest possible character size. When new fonts are loaded,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
595 or window sizes change, the row vector is adjusted accordingly. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
596
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
597 struct glyph_matrix
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
598 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
599 /* The pool from which glyph memory is allocated, if any. This is
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
600 null for frame matrices and for window matrices managing their
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
601 own storage. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
602 struct glyph_pool *pool;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
603
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
604 /* Vector of glyph row structures. The row at nrows - 1 is reserved
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
605 for the mode line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
606 struct glyph_row *rows;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
607
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
608 /* Number of elements allocated for the vector rows above. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
609 int rows_allocated;
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 number of rows used by the window if all lines were displayed
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
612 with the smallest possible character height. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
613 int nrows;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
614
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
615 /* 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
616 frame having a frame matrix. Both values are zero for
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
617 window-based redisplay. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
618 int matrix_x, matrix_y;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
619
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
620 /* Width and height of the matrix in columns and rows. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
621 int matrix_w, matrix_h;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
622
34280
4a7a6cfe861d (struct glyph_matrix): Add member window_left_x.
Gerd Moellmann <gerd@gnu.org>
parents: 34226
diff changeset
623 /* 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
624 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
625 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
626 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
627 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
628 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
629 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
630 int window_height, window_width;
e7a9fef91d7d (struct glyph_matrix): Rename members window_left_x
Kim F. Storm <storm@cua.dk>
parents: 50356
diff changeset
631 int window_vscroll;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
632
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
633 /* Number of glyphs reserved for left and right marginal areas when
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
634 the matrix was last adjusted. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
635 int left_margin_glyphs, right_margin_glyphs;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
636
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
637 /* Flag indicating that scrolling should not be tried in
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
638 update_window. This flag is set by functions like try_window_id
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
639 which do their own scrolling. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
640 unsigned no_scrolling_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
641
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
642 /* Non-zero means window displayed in this matrix has a top mode
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
643 line. */
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
644 unsigned header_line_p : 1;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
645
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
646 #ifdef GLYPH_DEBUG
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
647 /* A string identifying the method used to display the matrix. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
648 char method[512];
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
649 #endif
25371
f13b05bf590b (struct glyph_matrix): Add buffer, begv, and zv.
Gerd Moellmann <gerd@gnu.org>
parents: 25344
diff changeset
650
37628
694764db81f8 Comment fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 37609
diff changeset
651 /* The buffer this matrix displays. Set in
694764db81f8 Comment fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 37609
diff changeset
652 mark_window_display_accurate_1. */
25371
f13b05bf590b (struct glyph_matrix): Add buffer, begv, and zv.
Gerd Moellmann <gerd@gnu.org>
parents: 25344
diff changeset
653 struct buffer *buffer;
f13b05bf590b (struct glyph_matrix): Add buffer, begv, and zv.
Gerd Moellmann <gerd@gnu.org>
parents: 25344
diff changeset
654
37628
694764db81f8 Comment fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 37609
diff changeset
655 /* Values of BEGV and ZV as of last redisplay. Set in
694764db81f8 Comment fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 37609
diff changeset
656 mark_window_display_accurate_1. */
25371
f13b05bf590b (struct glyph_matrix): Add buffer, begv, and zv.
Gerd Moellmann <gerd@gnu.org>
parents: 25344
diff changeset
657 int begv, zv;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
658 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
659
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
660
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
661 /* Check that glyph pointers stored in glyph rows of MATRIX are okay.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
662 This aborts if any pointer is found twice. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
663
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
664 #if GLYPH_DEBUG
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
665 void check_matrix_pointer_lossage (struct glyph_matrix *);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
666 #define CHECK_MATRIX(MATRIX) check_matrix_pointer_lossage ((MATRIX))
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
667 #else
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
668 #define CHECK_MATRIX(MATRIX) (void) 0
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
669 #endif
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
670
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
671
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
672
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
673 /***********************************************************************
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
674 Glyph Rows
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
675 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
676
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
677 /* Area in window glyph matrix. If values are added or removed, the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
678 function mark_object in alloc.c has to be changed. */
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 enum glyph_row_area
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
681 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
682 LEFT_MARGIN_AREA,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
683 TEXT_AREA,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
684 RIGHT_MARGIN_AREA,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
685 LAST_AREA
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
686 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
687
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
688
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
689 /* Rows of glyphs in a windows or frame glyph matrix.
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 Each row is partitioned into three areas. The start and end of
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
692 each area is recorded in a pointer as shown below.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
693
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
694 +--------------------+-------------+---------------------+
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
695 | left margin area | text area | right margin area |
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 | | | |
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
698 glyphs[LEFT_MARGIN_AREA] glyphs[RIGHT_MARGIN_AREA]
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 glyphs[TEXT_AREA] |
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
701 glyphs[LAST_AREA]
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
702
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
703 Rows in frame matrices reference glyph memory allocated in a frame
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
704 glyph pool (see the description of struct glyph_pool). Rows in
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
705 window matrices on frames having frame matrices reference slices of
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
706 the glyphs of corresponding rows in the frame matrix.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
707
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
708 Rows in window matrices on frames having no frame matrices point to
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
709 glyphs allocated from the heap via xmalloc;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
710 glyphs[LEFT_MARGIN_AREA] is the start address of the allocated
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
711 glyph structure array. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
712
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
713 struct glyph_row
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 /* 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
716 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
717 of the whole row.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
718
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
719 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
720 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
721 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
722 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
723 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
724 kludge is no longer used, I believe. --gerd).
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
725
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
726 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
727 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
728 removed some day, so don't use it in new code. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
729 struct glyph *glyphs[1 + LAST_AREA];
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
730
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
731 /* Number of glyphs actually filled in areas. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
732 short used[LAST_AREA];
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
733
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
734 /* 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
735 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
736 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
737 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
738 the text area of the row are invisible because the glyph is
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
739 partially visible. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
740 int x, y;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
741
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
742 /* 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
743 end of the row into account, and without counting truncation
6f8192f9ec53 Improve a comment.
Gerd Moellmann <gerd@gnu.org>
parents: 38189
diff changeset
744 and continuation glyphs at the end of a row on ttys. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
745 int pixel_width;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
746
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
747 /* 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
748 and height is 1 on terminal frames. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
749 int ascent, height;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
750
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
751 /* 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
752 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
753 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
754 int phys_ascent, phys_height;
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
755
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
756 /* Portion of row that is visible. Partially visible rows may be
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
757 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
758 frames. It may be < 0 in case of completely invisible rows. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
759 int visible_height;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
760
58174
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
761 /* 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
762 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
763 int extra_line_spacing;
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
764
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
765 /* Hash code. This hash code is available as soon as the row
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
766 is constructed, i.e. after a call to display_line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
767 unsigned hash;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
768
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
769 /* First position in this row. This is the text position, including
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
770 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
771 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
772 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
773 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
774 position is at or beyond the right edge of the row. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
775 struct display_pos start;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
776
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
777 /* 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
778 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
779 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
780 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
781 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
782 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
783 edge of the row. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
784 struct display_pos end;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
785
108656
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
786 /* 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
787 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
788 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
789 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
790 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
791 rightmost on the screen. */
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
792 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
793
61632
eaab88b49978 (struct glyph_row): New member overlay_arrow_bitmap.
Kim F. Storm <storm@cua.dk>
parents: 60833
diff changeset
794 /* 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
795 -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
796 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
797 int overlay_arrow_bitmap;
eaab88b49978 (struct glyph_row): New member overlay_arrow_bitmap.
Kim F. Storm <storm@cua.dk>
parents: 60833
diff changeset
798
53604
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
799 /* 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
800 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
801
57276
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
802 /* 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
803 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
804
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
805 /* 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
806 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
807
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
808 /* 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
809 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
810
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
811 /* 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
812 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
813
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
814 /* 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
815 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
816
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
817 /* 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
818 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
819
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
820 /* 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
821 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
822
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
823 /* 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
824 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
825
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
826 /* 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
827 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
828
53604
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
829 /* 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
830 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
831
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
832 /* 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
833 current matrix, 0 means that the row has been invalidated, i.e.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
834 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
835 screen. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
836 unsigned enabled_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
837
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
838 /* 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
839 right side. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
840 unsigned truncated_on_left_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
841 unsigned truncated_on_right_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
842
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
843 /* 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
844 continuation mark at the right side. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
845 unsigned continued_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
846
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
847 /* 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
848 a blank line at the window and buffer end. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
849 unsigned displays_text_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
850
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
851 /* 1 means that this line ends at ZV. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
852 unsigned ends_at_zv_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
853
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
854 /* 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
855 the right end of the window. This flag is used in
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
856 update_text_area to optimize clearing to the end of the area. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
857 unsigned fill_line_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
858
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
859 /* Non-zero means display a bitmap on X frames indicating that this
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
860 line contains no text and ends in ZV. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
861 unsigned indicate_empty_line_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 this row contains glyphs that overlap each other because
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
864 of lbearing or rbearing. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
865 unsigned contains_overlapping_glyphs_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
866
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
867 /* 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
868 scroll bars, fringes, and internal borders. This also
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
869 implies that the row doesn't have marginal areas. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
870 unsigned full_width_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
871
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
872 /* Non-zero means row is a mode or header-line. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
873 unsigned mode_line_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
874
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
875 /* 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
876 unsigned overlapped_p : 1;
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
877
29474
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
878 /* 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
879 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
880 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
881 unsigned ends_in_middle_of_char_p : 1;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
882
29474
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
883 /* 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
884 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
885 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
886 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
887
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
888 /* 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
889 unsigned overlapping_p : 1;
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
890
30151
de813a66787a (struct glyph_row): Add flag mouse_face_p.
Gerd Moellmann <gerd@gnu.org>
parents: 30040
diff changeset
891 /* 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
892 unsigned mouse_face_p : 1;
de813a66787a (struct glyph_row): Add flag mouse_face_p.
Gerd Moellmann <gerd@gnu.org>
parents: 30040
diff changeset
893
39521
477edfe737e3 (struct glyph_row) <ends_in_newline_from_string_p>:
Gerd Moellmann <gerd@gnu.org>
parents: 39447
diff changeset
894 /* 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
895 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
896
53604
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
897 /* 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
898 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
899 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
900
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
901 /* 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
902 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
903
59268
2d8a6be1520d (struct it): New element ellipsis_p.
Richard M. Stallman <rms@gnu.org>
parents: 59146
diff changeset
904 /* 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
905 unsigned ends_in_ellipsis_p : 1;
2d8a6be1520d (struct it): New element ellipsis_p.
Richard M. Stallman <rms@gnu.org>
parents: 59146
diff changeset
906
53604
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
907 /* 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
908 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
909 unsigned indicate_bob_p : 1;
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
910
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
911 /* 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
912 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
913 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
914
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
915 /* 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
916 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
917 unsigned indicate_eob_p : 1;
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
918
59115f5809c3 (struct glyph_row): New members left_fringe_bitmap,
Kim F. Storm <storm@cua.dk>
parents: 53513
diff changeset
919 /* 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
920 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
921 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
922
107596
866e76f8ad75 Retrospective commit from 2009-10-08.
Eli Zaretskii <eliz@gnu.org>
parents: 107595
diff changeset
923 /* 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
924 right-to-left paragraph. */
866e76f8ad75 Retrospective commit from 2009-10-08.
Eli Zaretskii <eliz@gnu.org>
parents: 107595
diff changeset
925 unsigned reversed_p : 1;
866e76f8ad75 Retrospective commit from 2009-10-08.
Eli Zaretskii <eliz@gnu.org>
parents: 107595
diff changeset
926
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
927 /* Continuation lines width at the start of the row. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
928 int continuation_lines_width;
91022
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
929
91047
1cf8ecbaa1dc Fix non-window-system compilation
Miles Bader <miles@gnu.org>
parents: 91041
diff changeset
930 #ifdef HAVE_WINDOW_SYSTEM
91022
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
931 /* 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
932 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
933 XRectangle *clip;
91047
1cf8ecbaa1dc Fix non-window-system compilation
Miles Bader <miles@gnu.org>
parents: 91041
diff changeset
934 #endif
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
935 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
936
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
937
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
938 /* 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
939 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
940 we don't try to access rows that are out of bounds. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
941
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
942 #if GLYPH_DEBUG
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
943 struct glyph_row *matrix_row (struct glyph_matrix *, int);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
944 #define MATRIX_ROW(MATRIX, ROW) matrix_row ((MATRIX), (ROW))
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
945 #else
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
946 #define MATRIX_ROW(MATRIX, ROW) ((MATRIX)->rows + (ROW))
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
947 #endif
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
948
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
949 /* 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
950 Row MATRIX->nrows - 1 is always reserved for the mode line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
951
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
952 #define MATRIX_MODE_LINE_ROW(MATRIX) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
953 ((MATRIX)->rows + (MATRIX)->nrows - 1)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
954
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
955 /* 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
956 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
957 way that works in frame-based redisplay. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
958
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
959 #define MATRIX_HEADER_LINE_ROW(MATRIX) (MATRIX)->rows
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
960
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
961 /* Return a pointer to first row in MATRIX used for text display. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
962
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
963 #define MATRIX_FIRST_TEXT_ROW(MATRIX) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
964 ((MATRIX)->rows->mode_line_p ? (MATRIX)->rows + 1 : (MATRIX)->rows)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
965
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
966 /* 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
967 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
968 MATRIX. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
969
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
970 #define MATRIX_ROW_GLYPH_START(MATRIX, ROW) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
971 (MATRIX_ROW ((MATRIX), (ROW))->glyphs[TEXT_AREA])
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
972
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
973 /* 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
974
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
975 #define MATRIX_ROW_USED(MATRIX, ROW) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
976 (MATRIX_ROW ((MATRIX), (ROW))->used[TEXT_AREA])
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
977
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
978 /* 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
979 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
980 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
981 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
982 position. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
983
108656
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
984 #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
985 #define MATRIX_ROW_START_BYTEPOS(ROW) ((ROW)->minpos.bytepos)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
986
107591
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
987 /* 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
988 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
989 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
990 is not necessarily the largest horizontal position. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
991
108656
0b28d05fa415 Initial reimplementation of calculating line edge positions in bidi lines.
Eli Zaretskii <eliz@gnu.org>
parents: 108571
diff changeset
992 #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
993 #define MATRIX_ROW_END_BYTEPOS(ROW) ((ROW)->maxpos.bytepos)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
994
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
995 /* Return the vertical position of ROW in MATRIX. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
996
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
997 #define MATRIX_ROW_VPOS(ROW, MATRIX) ((ROW) - (MATRIX)->rows)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
998
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
999 /* 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
1000 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
1001 for it. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1002
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1003 #define MATRIX_BOTTOM_TEXT_ROW(MATRIX, W) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1004 ((MATRIX)->rows \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1005 + (MATRIX)->nrows \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1006 - (WINDOW_WANTS_MODELINE_P ((W)) ? 1 : 0))
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1007
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1008 /* 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
1009 to be drawn to the end of the text area. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1010
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1011 #define MATRIX_ROW_EXTENDS_FACE_P(ROW) ((ROW)->fill_line_p)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1013 /* 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
1014
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1015 #define SET_MATRIX_ROW_ENABLED_P(MATRIX, ROW, VALUE) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1016 (MATRIX_ROW ((MATRIX), (ROW))->enabled_p = (VALUE) != 0)
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1017
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1018 #define MATRIX_ROW_ENABLED_P(MATRIX, ROW) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1019 (MATRIX_ROW ((MATRIX), (ROW))->enabled_p)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1020
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1021 /* 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
1022 blank but displays a line end. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1023
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1024 #define MATRIX_ROW_DISPLAYS_TEXT_P(ROW) ((ROW)->displays_text_p)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1025
58174
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1026
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1027 /* Helper macros */
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1028
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1029 #define MR_PARTIALLY_VISIBLE(ROW) \
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1030 ((ROW)->height != (ROW)->visible_height)
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1031
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1032 #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
1033 ((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
1034
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1035 #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
1036 (((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
1037 > 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
1038
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1039 /* 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
1040
58174
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1041 #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
1042 (MR_PARTIALLY_VISIBLE ((ROW)) \
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1043 && (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
1044 || 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
1045
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1046
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1047
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1048 /* 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
1049
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1050 #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
1051 (MR_PARTIALLY_VISIBLE ((ROW)) \
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1052 && MR_PARTIALLY_VISIBLE_AT_TOP ((W), (ROW)))
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1053
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1054 /* 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
1055
58174
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1056 #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
1057 (MR_PARTIALLY_VISIBLE ((ROW)) \
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
1058 && MR_PARTIALLY_VISIBLE_AT_BOTTOM ((W), (ROW)))
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1059
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1060 /* Return the bottom Y + 1 of ROW. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1061
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1062 #define MATRIX_ROW_BOTTOM_Y(ROW) ((ROW)->y + (ROW)->height)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1063
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1064 /* Is ROW the last visible one in the display described by the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1065 iterator structure pointed to by IT?. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1066
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1067 #define MATRIX_ROW_LAST_VISIBLE_P(ROW, IT) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1068 (MATRIX_ROW_BOTTOM_Y ((ROW)) >= (IT)->last_visible_y)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1069
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1070 /* Non-zero if ROW displays a continuation line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1071
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1072 #define MATRIX_ROW_CONTINUATION_LINE_P(ROW) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1073 ((ROW)->continuation_lines_width > 0)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1074
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1075 /* 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
1076 case for continued lines showing only part of a display table entry
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1077 or a control char, or an overlay string. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1078
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1079 #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
1080 ((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
1081 || (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
1082 || (ROW)->ends_in_middle_of_char_p)
25012
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 /* Non-zero if ROW ends in the middle of an overlay string. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1085
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1086 #define MATRIX_ROW_ENDS_IN_OVERLAY_STRING_P(ROW) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1087 ((ROW)->end.overlay_string_index >= 0)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1088
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1089 /* 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
1090
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1091 #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
1092 ((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
1093 || (ROW)->starts_in_middle_of_char_p \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1094 || ((ROW)->start.overlay_string_index >= 0 \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1095 && (ROW)->start.string_pos.charpos > 0))
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1096
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1097 /* Non-zero means ROW overlaps its predecessor. */
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1098
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1099 #define MATRIX_ROW_OVERLAPS_PRED_P(ROW) \
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1100 ((ROW)->phys_ascent > (ROW)->ascent)
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1101
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1102 /* Non-zero means ROW overlaps its successor. */
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1103
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1104 #define MATRIX_ROW_OVERLAPS_SUCC_P(ROW) \
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1105 ((ROW)->phys_height - (ROW)->phys_ascent \
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1106 > (ROW)->height - (ROW)->ascent)
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
1107
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1108 /* Non-zero means that fonts have been loaded since the last glyph
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1109 matrix adjustments. The function redisplay_internal adjusts glyph
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1110 matrices when this flag is non-zero. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1111
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1112 extern int fonts_changed_p;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1113
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1114 /* A glyph for a space. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1115
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1116 extern struct glyph space_glyph;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1117
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1118 /* 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
1119 update_window has not finished, and null otherwise. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1120
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1121 extern struct window *updated_window;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1122
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1123 /* Glyph row and area updated by update_window_line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1124
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1125 extern struct glyph_row *updated_row;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1126 extern int updated_area;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1127
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1128 /* Non-zero means reading single-character input with prompt so put
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1129 cursor on mini-buffer after the prompt. Positive means at end of
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1130 text in echo area; negative means at beginning of line. */
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 cursor_in_echo_area;
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 /* Non-zero means last display completed. Zero means it was
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1135 preempted. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1136
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1137 extern int display_completed;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1138
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1139 /* A temporary storage area, including a row of glyphs. Initialized
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1140 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
1141 get_overlay_arrow_glyph_row. */
25012
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 extern struct glyph_row scratch_glyph_row;
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
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1146
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1147 /************************************************************************
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1148 Glyph Strings
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1149 ************************************************************************/
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1150
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1151 /* 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
1152 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
1153
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1154 enum draw_glyphs_face
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1155 {
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1156 DRAW_NORMAL_TEXT,
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1157 DRAW_INVERSE_VIDEO,
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1158 DRAW_CURSOR,
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1159 DRAW_MOUSE_FACE,
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1160 DRAW_IMAGE_RAISED,
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1161 DRAW_IMAGE_SUNKEN
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1162 };
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1163
50193
dadd724b7ce9 Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50149
diff changeset
1164 #ifdef HAVE_WINDOW_SYSTEM
dadd724b7ce9 Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50149
diff changeset
1165
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1166 /* 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
1167
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1168 struct glyph_string
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 /* 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
1171 int x;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1172
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1173 /* 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
1174 int y, ybase;
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 /* 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
1177 int width;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1178
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1179 /* 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
1180 int background_width;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1181
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1182 /* 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
1183 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
1184 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
1185 int height;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1186
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1187 /* 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
1188 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
1189 -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
1190 int left_overhang;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1191
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1192 /* 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
1193 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
1194 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
1195 int right_overhang;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1196
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1197 /* 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
1198 struct frame *f;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1199
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1200 /* 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
1201 struct window *w;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1202
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1203 /* 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
1204 Display *display;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1205 Window window;
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 /* 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
1208 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
1209 struct glyph_row *row;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1210
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1211 /* The area within row. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1212 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
1213
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1214 /* 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
1215 XChar2b *char2b;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1216 int nchars;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1217
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1218 /* 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
1219 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
1220
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1221 /* 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
1222 struct face *face;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1223
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1224 /* 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
1225 struct font *font;
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1226
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1227 /* 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
1228 composition. */
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1229 struct composition *cmp;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1230
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1231 /* 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
1232 int cmp_id;
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1233
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1234 /* 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
1235 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
1236
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1237 /* 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
1238 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
1239 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
1240
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1241 /* 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
1242 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
1243
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1244 /* 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
1245 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
1246
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1247 /* 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
1248 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
1249 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
1250 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
1251
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1252 /* 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
1253 stipple pattern. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1254 unsigned stippled_p : 1;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1255
65889
bc4f9a64328d (struct glyph_string): Rename member for_overlaps_p
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 65764
diff changeset
1256 #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
1257 #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
1258 #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
1259 #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
1260 /* 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
1261 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
1262 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
1263 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
1264 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
1265 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
1266 respectively. */
bc4f9a64328d (struct glyph_string): Rename member for_overlaps_p
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 65764
diff changeset
1267 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
1268
92188
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
1269 /* 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
1270 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
1271 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
1272 unsigned padding_p : 1;
579a729e2f9f (struct glyph_string): New member padding_p.
Kenichi Handa <handa@m17n.org>
parents: 92150
diff changeset
1273
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1274 /* 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
1275 #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
1276 GC gc;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1277 #endif
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1278 #if defined(HAVE_NTGUI)
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1279 XGCValues *gc;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1280 HDC hdc;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1281 #endif
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1282
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1283 /* 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
1284 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
1285 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
1286 struct glyph *first_glyph;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1287
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1288 /* Image, if any. */
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1289 struct image *img;
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1290
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1291 /* Slice */
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1292 struct glyph_slice slice;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1293
59718
d4cb255b034d * dispextern.h (struct glyph_string): New members clip_head and
Steven Tamm <steventamm@mac.com>
parents: 59456
diff changeset
1294 /* 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
1295 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
1296 *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
1297 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
1298
91022
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
1299 /* The current clipping areas. */
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
1300 NativeRectangle clip[2];
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
1301
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
1302 /* Number of clipping areas. */
7e1dd3878c0b (struct glyph_row): New member clip.
Kenichi Handa <handa@m17n.org>
parents: 91015
diff changeset
1303 int num_clips;
90406
205c3ef62243 (struct glyph_string) [USE_FONT_BACKEND]: New
Kenichi Handa <handa@m17n.org>
parents: 90386
diff changeset
1304
94923
cf772caaa5f5 (struct glyph_string): Change type of `font' to
Kenichi Handa <handa@m17n.org>
parents: 93883
diff changeset
1305 int underline_position;
cf772caaa5f5 (struct glyph_string): Change type of `font' to
Kenichi Handa <handa@m17n.org>
parents: 93883
diff changeset
1306
cf772caaa5f5 (struct glyph_string): Change type of `font' to
Kenichi Handa <handa@m17n.org>
parents: 93883
diff changeset
1307 int underline_thickness;
cf772caaa5f5 (struct glyph_string): Change type of `font' to
Kenichi Handa <handa@m17n.org>
parents: 93883
diff changeset
1308
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1309 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
1310 };
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1311
50193
dadd724b7ce9 Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50149
diff changeset
1312 #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
1313
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1314
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
1315 /************************************************************************
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1316 Display Dimensions
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1317 ************************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1318
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1319 /* 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
1320 if not known. This macro is called under circumstances where
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1321 MATRIX might not have been allocated yet. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1322
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1323 #define MATRIX_MODE_LINE_HEIGHT(MATRIX) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1324 ((MATRIX) && (MATRIX)->rows \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1325 ? MATRIX_MODE_LINE_ROW (MATRIX)->height \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1326 : 0)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1327
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
1328 /* 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
1329 if not known. This macro is called under circumstances where
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1330 MATRIX might not have been allocated yet. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1331
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1332 #define MATRIX_HEADER_LINE_HEIGHT(MATRIX) \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1333 ((MATRIX) && (MATRIX)->rows \
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1334 ? MATRIX_HEADER_LINE_ROW (MATRIX)->height \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1335 : 0)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1336
43242
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1337 /* 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
1338 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
1339 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
1340
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1341 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
1342 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
1343 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
1344 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
1345 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
1346
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1347 #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
1348 ((!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
1349 || (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
1350 || (minibuf_level > 0 \
43595
b7964dae2379 (minibuf_selected_window): Renamed from Vminibuf_selected_window.
Kim F. Storm <storm@cua.dk>
parents: 43574
diff changeset
1351 && !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
1352 && (MBW) == XWINDOW (minibuf_window) \
43595
b7964dae2379 (minibuf_selected_window): Renamed from Vminibuf_selected_window.
Kim F. Storm <storm@cua.dk>
parents: 43574
diff changeset
1353 && (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
1354 ? MODE_LINE_FACE_ID \
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1355 : MODE_LINE_INACTIVE_FACE_ID)
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1356
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1357
e7ec5804aa1a (CURRENT_MODE_LINE_FACE_ID_3): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43211
diff changeset
1358 /* 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
1359
d3a48ed9857d (CURRENT_MODE_LINE_FACE_ID): New macro.
Kim F. Storm <storm@cua.dk>
parents: 42955
diff changeset
1360 #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
1361 (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
1362
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1363 /* 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
1364 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
1365 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
1366 face `mode-line'. */
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1367
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1368 #define CURRENT_MODE_LINE_HEIGHT(W) \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1369 (current_mode_line_height >= 0 \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1370 ? current_mode_line_height \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1371 : (MATRIX_MODE_LINE_HEIGHT ((W)->current_matrix) \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1372 ? MATRIX_MODE_LINE_HEIGHT ((W)->current_matrix) \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1373 : 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
1374 CURRENT_MODE_LINE_FACE_ID (W))))
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1375
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
1376 /* 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
1377 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
1378 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
1379 the face `header-line'. */
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1380
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1381 #define CURRENT_HEADER_LINE_HEIGHT(W) \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1382 (current_header_line_height >= 0 \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1383 ? current_header_line_height \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1384 : (MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix) \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1385 ? MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix) \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1386 : estimate_mode_line_height (XFRAME ((W)->frame), \
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
1387 HEADER_LINE_FACE_ID)))
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1388
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1389 /* Return the height of the desired mode line of window W. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1390
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1391 #define DESIRED_MODE_LINE_HEIGHT(W) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1392 MATRIX_MODE_LINE_HEIGHT ((W)->desired_matrix)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1393
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
1394 /* Return the height of the desired header line of window W. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1395
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1396 #define DESIRED_HEADER_LINE_HEIGHT(W) \
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1397 MATRIX_HEADER_LINE_HEIGHT ((W)->desired_matrix)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1398
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
1399 /* Value is non-zero if window W wants a mode line. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1400
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1401 #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
1402 (!MINI_WINDOW_P ((W)) \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1403 && !(W)->pseudo_window_p \
42828
48dd83c34137 (WINDOW_WANTS_MODELINE_P): Check window height > 1.
Richard M. Stallman <rms@gnu.org>
parents: 42753
diff changeset
1404 && 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
1405 && BUFFERP ((W)->buffer) \
42828
48dd83c34137 (WINDOW_WANTS_MODELINE_P): Check window height > 1.
Richard M. Stallman <rms@gnu.org>
parents: 42753
diff changeset
1406 && !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
1407 && WINDOW_TOTAL_LINES (W) > 1)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1408
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
1409 /* Value is non-zero if window W wants a header line. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1410
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1411 #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
1412 (!MINI_WINDOW_P ((W)) \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1413 && !(W)->pseudo_window_p \
42828
48dd83c34137 (WINDOW_WANTS_MODELINE_P): Check window height > 1.
Richard M. Stallman <rms@gnu.org>
parents: 42753
diff changeset
1414 && 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
1415 && BUFFERP ((W)->buffer) \
42828
48dd83c34137 (WINDOW_WANTS_MODELINE_P): Check window height > 1.
Richard M. Stallman <rms@gnu.org>
parents: 42753
diff changeset
1416 && !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
1417 && 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
1418
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1419
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1420 /* 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
1421 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
1422 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
1423
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1424 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
1425
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1426 -------------------------+-----------+-
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1427 -+-+---------+-+ | |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1428 | | | | | |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1429 | | | | F_ASCENT F_HEIGHT
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1430 | | | ASCENT | |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1431 HEIGHT | | | | |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1432 | | |-|-+------+-----------|------- baseline
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1433 | | | | BOFF | |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1434 | |---------|-+-+ | |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1435 | | | DESCENT | |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1436 -+-+---------+-+ F_DESCENT |
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1437 -------------------------+-----------+-
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1438
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1439 -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
1440 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
1441 DESCENT = FONT->descent
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1442 HEIGHT = FONT_HEIGHT (FONT)
51192
e7a9fef91d7d (struct glyph_matrix): Rename members window_left_x
Kim F. Storm <storm@cua.dk>
parents: 50356
diff changeset
1443 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
1444 - 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
1445 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
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 #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
1449 (FONT_DESCENT (FONT) \
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
1450 + (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
1451 + (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
1452 - (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
1453
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1454
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1455 /***********************************************************************
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1456 Faces
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1457 ***********************************************************************/
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1458
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1459 /* Indices of face attributes in Lisp face vectors. Slot zero is the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1460 symbol `face'. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1461
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1462 enum lface_attribute_index
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1463 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1464 LFACE_FAMILY_INDEX = 1,
95868
13c926fbc8ed (enum lface_attribute_index): New member
Kenichi Handa <handa@m17n.org>
parents: 95792
diff changeset
1465 LFACE_FOUNDRY_INDEX,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1466 LFACE_SWIDTH_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1467 LFACE_HEIGHT_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1468 LFACE_WEIGHT_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1469 LFACE_SLANT_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1470 LFACE_UNDERLINE_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1471 LFACE_INVERSE_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1472 LFACE_FOREGROUND_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1473 LFACE_BACKGROUND_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1474 LFACE_STIPPLE_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1475 LFACE_OVERLINE_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1476 LFACE_STRIKE_THROUGH_INDEX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1477 LFACE_BOX_INDEX,
28221
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1478 LFACE_FONT_INDEX,
31177
24a1d86d0ee8 (enum lface_attribute_index): Add LFACE_INHERIT_INDEX.
Miles Bader <miles@gnu.org>
parents: 30722
diff changeset
1479 LFACE_INHERIT_INDEX,
89048
87c6cb535c03 (enum lface_attribute_index): New member LFACE_FONTSET_INDEX.
Kenichi Handa <handa@m17n.org>
parents: 88901
diff changeset
1480 LFACE_FONTSET_INDEX,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1481 LFACE_VECTOR_SIZE
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1482 };
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
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1485 /* Box types of faces. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1486
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1487 enum face_box_type
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1488 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1489 /* No box around text. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1490 FACE_NO_BOX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1491
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1492 /* Simple box of specified width and color. Default width is 1, and
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1493 default color is the foreground color of the face. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1494 FACE_SIMPLE_BOX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1495
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1496 /* Boxes with 3D shadows. Color equals the background color of the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1497 face. Width is specified. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1498 FACE_RAISED_BOX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1499 FACE_SUNKEN_BOX
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1500 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1501
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 /* Structure describing a realized face.
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 For each Lisp face, 0..N realized faces can exist for different
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1506 frames and different charsets. Realized faces are built from Lisp
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1507 faces and text properties/overlays by merging faces and adding
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1508 unspecified attributes from the `default' face. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1509
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1510 struct face
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 /* 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
1513 vector faces_by_id of its face cache. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1514 int id;
247
8b9aa51c8a69 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1515
13407
5ebb99bc06bb [HAVE_NTGUI]: Include win32.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 9572
diff changeset
1516 #ifdef HAVE_WINDOW_SYSTEM
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1517
42709
0b6760fd748e Fix wording of a comment.
Eli Zaretskii <eliz@gnu.org>
parents: 41119
diff changeset
1518 /* 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
1519 drawing the characters in this face. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1520 GC gc;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1521
38499
a4baa9de015f (struct face): Change type of `stipple' to
Gerd Moellmann <gerd@gnu.org>
parents: 38266
diff changeset
1522 /* 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
1523 an id as returned from load_pixmap. */
a4baa9de015f (struct face): Change type of `stipple' to
Gerd Moellmann <gerd@gnu.org>
parents: 38266
diff changeset
1524 int stipple;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1525
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1526 #else /* not HAVE_WINDOW_SYSTEM */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1527
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1528 /* Dummy. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1529 int stipple;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1530
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1531 #endif /* not HAVE_WINDOW_SYSTEM */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1532
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1533 /* Pixel value of foreground color for X frames. Color index
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1534 for tty frames. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1535 unsigned long foreground;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1536
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1537 /* Pixel value or color index of background color. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1538 unsigned long background;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1539
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1540 /* Pixel value or color index of underline color. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1541 unsigned long underline_color;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1542
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1543 /* Pixel value or color index of overlined, strike-through, or box
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1544 color. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1545 unsigned long overline_color;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1546 unsigned long strike_through_color;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1547 unsigned long box_color;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1548
94923
cf772caaa5f5 (struct glyph_string): Change type of `font' to
Kenichi Handa <handa@m17n.org>
parents: 93883
diff changeset
1549 struct font *font;
90406
205c3ef62243 (struct glyph_string) [USE_FONT_BACKEND]: New
Kenichi Handa <handa@m17n.org>
parents: 90386
diff changeset
1550
88901
bcf253c370e8 (struct face): Member `charset' deleted.
Kenichi Handa <handa@m17n.org>
parents: 88825
diff changeset
1551 /* 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
1552 from the same ASCII face have the same fontset. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1553 int fontset;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1554
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1555 /* Pixmap width and height. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1556 unsigned int pixmap_w, pixmap_h;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1557
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1558 /* 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
1559 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
1560 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
1561 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
1562 (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
1563 value is positive. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1564 int box_line_width;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1565
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1566 /* 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
1567 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
1568 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
1569 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
1570 shadow colors derived from the background color of the face. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1571 enum face_box_type box;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1572
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1573 /* 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
1574 drawing shadows. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1575 unsigned use_box_color_for_shadows_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1576
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1577 /* Non-zero if text in this face should be underlined, overlined,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1578 strike-through or have a box drawn around it. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1579 unsigned underline_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1580 unsigned overline_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1581 unsigned strike_through_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1582
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1583 /* 1 means that the colors specified for this face could not be
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1584 loaded, and were replaced by default colors, so they shouldn't be
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1585 freed. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1586 unsigned foreground_defaulted_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1587 unsigned background_defaulted_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1588
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1589 /* 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
1590 the specified color couldn't be loaded. Use the foreground
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1591 color when drawing in that case. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1592 unsigned underline_defaulted_p : 1;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1593
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1594 /* 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
1595 attribute or that the specified color couldn't be loaded.
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1596 Use the foreground color when drawing in that case. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1597 unsigned overline_color_defaulted_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1598 unsigned strike_through_color_defaulted_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1599 unsigned box_color_defaulted_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1600
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1601 /* TTY appearances. Blinking is not yet implemented. Colors are
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1602 found in `lface' with empty color string meaning the default
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1603 color of the TTY. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1604 unsigned tty_bold_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1605 unsigned tty_dim_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1606 unsigned tty_underline_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1607 unsigned tty_alt_charset_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1608 unsigned tty_reverse_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1609 unsigned tty_blinking_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1610
40556
69558454a8f9 (struct face) <colors_copied_bitwise_p>: New
Gerd Moellmann <gerd@gnu.org>
parents: 40552
diff changeset
1611 /* 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
1612 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
1613 realize_x_face). */
69558454a8f9 (struct face) <colors_copied_bitwise_p>: New
Gerd Moellmann <gerd@gnu.org>
parents: 40552
diff changeset
1614 unsigned colors_copied_bitwise_p : 1;
69558454a8f9 (struct face) <colors_copied_bitwise_p>: New
Gerd Moellmann <gerd@gnu.org>
parents: 40552
diff changeset
1615
48382
d4986198a59a (struct face): Add `overstrike' field.
Miles Bader <miles@gnu.org>
parents: 47996
diff changeset
1616 /* If non-zero, use overstrike (to simulate bold-face). */
d4986198a59a (struct face): Add `overstrike' field.
Miles Bader <miles@gnu.org>
parents: 47996
diff changeset
1617 unsigned overstrike : 1;
d4986198a59a (struct face): Add `overstrike' field.
Miles Bader <miles@gnu.org>
parents: 47996
diff changeset
1618
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
1619 /* 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
1620 similarly to overstrike */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
1621 #ifdef HAVE_NS
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
1622 /* 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
1623 unsigned synth_ital : 1;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
1624 #endif
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96664
diff changeset
1625
100750
a3ae6efdd65b (struct face): Move lface and hash from the middle
Dan Nicolaescu <dann@ics.uci.edu>
parents: 99513
diff changeset
1626 /* 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
1627 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
1628 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
1629
a3ae6efdd65b (struct face): Move lface and hash from the middle
Dan Nicolaescu <dann@ics.uci.edu>
parents: 99513
diff changeset
1630 /* 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
1631 unsigned hash;
a3ae6efdd65b (struct face): Move lface and hash from the middle
Dan Nicolaescu <dann@ics.uci.edu>
parents: 99513
diff changeset
1632
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1633 /* Next and previous face in hash collision list of face cache. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1634 struct face *next, *prev;
28221
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1635
88901
bcf253c370e8 (struct face): Member `charset' deleted.
Kenichi Handa <handa@m17n.org>
parents: 88825
diff changeset
1636 /* 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
1637 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
1638 attributes except the font. */
28221
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1639 struct face *ascii_face;
90406
205c3ef62243 (struct glyph_string) [USE_FONT_BACKEND]: New
Kenichi Handa <handa@m17n.org>
parents: 90386
diff changeset
1640
205c3ef62243 (struct glyph_string) [USE_FONT_BACKEND]: New
Kenichi Handa <handa@m17n.org>
parents: 90386
diff changeset
1641 /* 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
1642 void *extra;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1643 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1644
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1645
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1646 /* Color index indicating that face uses a terminal's default color. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1647
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1648 #define FACE_TTY_DEFAULT_COLOR ((unsigned long) -1)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1649
26902
264b83a3a688 Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents: 26850
diff changeset
1650 /* 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
1651
264b83a3a688 Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents: 26850
diff changeset
1652 #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
1653
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
1654 /* 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
1655
264b83a3a688 Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents: 26850
diff changeset
1656 #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
1657
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1658 /* Non-zero if FACE was realized for unibyte use. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1659
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1660 #define FACE_UNIBYTE_P(FACE) ((FACE)->charset < 0)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1661
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1662
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1663 /* 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
1664 of the faces for CHARSET_ASCII. */
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 enum face_id
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 DEFAULT_FACE_ID,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1669 MODE_LINE_FACE_ID,
43202
d3a48ed9857d (CURRENT_MODE_LINE_FACE_ID): New macro.
Kim F. Storm <storm@cua.dk>
parents: 42955
diff changeset
1670 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
1671 TOOL_BAR_FACE_ID,
41119
615c460b28c7 Fringe cleanup.
Kim F. Storm <storm@cua.dk>
parents: 41061
diff changeset
1672 FRINGE_FACE_ID,
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1673 HEADER_LINE_FACE_ID,
25589
0ef06feb96ab (SCROLL_BAR_FACE_ID, BORDER_FACE_ID,
Gerd Moellmann <gerd@gnu.org>
parents: 25546
diff changeset
1674 SCROLL_BAR_FACE_ID,
0ef06feb96ab (SCROLL_BAR_FACE_ID, BORDER_FACE_ID,
Gerd Moellmann <gerd@gnu.org>
parents: 25546
diff changeset
1675 BORDER_FACE_ID,
0ef06feb96ab (SCROLL_BAR_FACE_ID, BORDER_FACE_ID,
Gerd Moellmann <gerd@gnu.org>
parents: 25546
diff changeset
1676 CURSOR_FACE_ID,
0ef06feb96ab (SCROLL_BAR_FACE_ID, BORDER_FACE_ID,
Gerd Moellmann <gerd@gnu.org>
parents: 25546
diff changeset
1677 MOUSE_FACE_ID,
25881
54d9b33d9c4b (enum face_id): Add MENU_FACE_ID.
Gerd Moellmann <gerd@gnu.org>
parents: 25796
diff changeset
1678 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
1679 VERTICAL_BORDER_FACE_ID,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1680 BASIC_FACE_ID_SENTINEL
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
53328
dc1470f3ebd7 (FACE_ID_BITS, MAX_FACE_ID): New defines.
Kim F. Storm <storm@cua.dk>
parents: 53175
diff changeset
1683 #define MAX_FACE_ID ((1 << FACE_ID_BITS) - 1)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1684
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1685 /* A cache of realized faces. Each frame has its own cache because
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1686 Emacs allows different frame-local face definitions. */
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 struct face_cache
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1689 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1690 /* Hash table of cached realized faces. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1691 struct face **buckets;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1692
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1693 /* Back-pointer to the frame this cache belongs to. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1694 struct frame *f;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1695
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1696 /* 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
1697 struct face **faces_by_id;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1698
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1699 /* The allocated size, and number of used slots of faces_by_id. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1700 int size, used;
38904
db6c2951e6a7 (struct face_cache): Add member
Gerd Moellmann <gerd@gnu.org>
parents: 38630
diff changeset
1701
db6c2951e6a7 (struct face_cache): Add member
Gerd Moellmann <gerd@gnu.org>
parents: 38630
diff changeset
1702 /* 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
1703 changed. */
db6c2951e6a7 (struct face_cache): Add member
Gerd Moellmann <gerd@gnu.org>
parents: 38630
diff changeset
1704 unsigned menu_face_changed_p : 1;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1705 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1706
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 /* 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
1709 using X resources of FACE. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1710
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1711 #define PREPARE_FACE_FOR_DISPLAY(F, FACE) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1712 if ((FACE)->gc == 0) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1713 prepare_face_for_display ((F), (FACE)); \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1714 else \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1715 (void) 0
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1716
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1717 /* 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
1718 face doesn't exist. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1719
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1720 #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
1721 (((unsigned) (ID) < FRAME_FACE_CACHE (F)->used) \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1722 ? FRAME_FACE_CACHE (F)->faces_by_id[ID] \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1723 : NULL)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1724
28254
bc79dbcca2a1 [!HAVE_WINDOW_SYSTEM] (FACE_SUITABLE_FOR_CHAR_P,
Kenichi Handa <handa@m17n.org>
parents: 28221
diff changeset
1725 #ifdef HAVE_WINDOW_SYSTEM
bc79dbcca2a1 [!HAVE_WINDOW_SYSTEM] (FACE_SUITABLE_FOR_CHAR_P,
Kenichi Handa <handa@m17n.org>
parents: 28221
diff changeset
1726
28221
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1727 /* 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
1728
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1729 #define FACE_SUITABLE_FOR_CHAR_P(FACE, CHAR) \
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89351
diff changeset
1730 (ASCII_CHAR_P (CHAR) \
28221
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1731 ? (FACE) == (FACE)->ascii_face \
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
1732 : 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
1733
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1734 /* 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
1735 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
1736 This macro is only meaningful for multibyte character CHAR. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
1737
89697
e3cedd99e51a (FACE_FOR_CHAR): New args POS and OBJECT.
Kenichi Handa <handa@m17n.org>
parents: 89483
diff changeset
1738 #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
1739 ((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
1740 ? (FACE)->ascii_face->id \
e3cedd99e51a (FACE_FOR_CHAR): New args POS and OBJECT.
Kenichi Handa <handa@m17n.org>
parents: 89483
diff changeset
1741 : face_for_char ((F), (FACE), (CHAR), (POS), (OBJECT)))
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1742
28254
bc79dbcca2a1 [!HAVE_WINDOW_SYSTEM] (FACE_SUITABLE_FOR_CHAR_P,
Kenichi Handa <handa@m17n.org>
parents: 28221
diff changeset
1743 #else /* not HAVE_WINDOW_SYSTEM */
bc79dbcca2a1 [!HAVE_WINDOW_SYSTEM] (FACE_SUITABLE_FOR_CHAR_P,
Kenichi Handa <handa@m17n.org>
parents: 28221
diff changeset
1744
bc79dbcca2a1 [!HAVE_WINDOW_SYSTEM] (FACE_SUITABLE_FOR_CHAR_P,
Kenichi Handa <handa@m17n.org>
parents: 28221
diff changeset
1745 #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
1746 #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
1747
bc79dbcca2a1 [!HAVE_WINDOW_SYSTEM] (FACE_SUITABLE_FOR_CHAR_P,
Kenichi Handa <handa@m17n.org>
parents: 28221
diff changeset
1748 #endif /* not HAVE_WINDOW_SYSTEM */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1749
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1750 /* Non-zero means face attributes have been changed since the last
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1751 redisplay. Used in redisplay_internal. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1752
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1753 extern int face_change_count;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1754
107604
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
1755 /* For reordering of bidirectional text. */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1756 #define BIDI_MAXLEVEL 64
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1757
107599
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
1758 /* 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
1759 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
1760 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
1761 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
1762 typedef enum {
107599
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
1763 UNKNOWN_BT = 0,
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1764 STRONG_L, /* strong left-to-right */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1765 STRONG_R, /* strong right-to-left */
107599
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
1766 WEAK_EN, /* european number */
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
1767 WEAK_AN, /* arabic number */
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
1768 WEAK_BN, /* boundary neutral */
23f8a579b56e Retrospective commit from 2009-10-24.
Eli Zaretskii <eliz@gnu.org>
parents: 107598
diff changeset
1769 NEUTRAL_B, /* paragraph separator */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1770 STRONG_AL, /* arabic right-to-left letter */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1771 LRE, /* left-to-right embedding */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1772 LRO, /* left-to-right override */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1773 RLE, /* right-to-left embedding */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1774 RLO, /* right-to-left override */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1775 PDF, /* pop directional format */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1776 WEAK_ES, /* european number separator */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1777 WEAK_ET, /* european number terminator */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1778 WEAK_CS, /* common separator */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1779 WEAK_NSM, /* non-spacing mark */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1780 NEUTRAL_S, /* segment separator */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1781 NEUTRAL_WS, /* whitespace */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1782 NEUTRAL_ON /* other neutrals */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1783 } bidi_type_t;
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1784
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1785 /* The basic directionality data type. */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1786 typedef enum { NEUTRAL_DIR, L2R, R2L } bidi_dir_t;
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1787
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1788 /* Data type for storing information about characters we need to
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1789 remember. */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1790 struct bidi_saved_info {
110544
bb46575a984d Fix int/EMACS_INT in bidi.c.
Eli Zaretskii <eliz@gnu.org>
parents: 110412
diff changeset
1791 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
1792 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
1793 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
1794 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
1795 };
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1796
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1797 /* Data type for keeping track of saved embedding levels and override
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1798 status information. */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1799 struct bidi_stack {
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1800 int level;
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1801 bidi_dir_t override;
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1802 };
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1803
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1804 /* Data type for iterating over bidi text. */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1805 struct bidi_it {
107593
a551e4109c04 Retrospective commit from 2009-10-03.
Eli Zaretskii <eliz@gnu.org>
parents: 107592
diff changeset
1806 EMACS_INT bytepos; /* iterator's position in buffer */
a551e4109c04 Retrospective commit from 2009-10-03.
Eli Zaretskii <eliz@gnu.org>
parents: 107592
diff changeset
1807 EMACS_INT charpos;
107591
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1808 int ch; /* character itself */
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1809 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
1810 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
1811 resolving weak and neutral types */
84267baa779b Retrospective commit from 2009-09-19.
Eli Zaretskii <eliz@gnu.org>
parents: 107588
diff changeset
1812 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
1813 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
1814 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
1815 int invalid_levels; /* how many PDFs to ignore */
86eec24bee2c Retrospective commit from 2009-09-26.
Eli Zaretskii <eliz@gnu.org>
parents: 107589
diff changeset
1816 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
1817 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
1818 struct bidi_saved_info prev; /* info about previous character */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1819 struct bidi_saved_info last_strong; /* last-seen strong directional char */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1820 struct bidi_saved_info next_for_neutral; /* surrounding characters for... */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1821 struct bidi_saved_info prev_for_neutral; /* ...resolving neutrals */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1822 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
1823 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
1824 EMACS_INT ignore_bn_limit; /* position until which to ignore BNs */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1825 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
1826 int scan_dir; /* direction of text scan, 1: forw, -1: back */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1827 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
1828 /* 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
1829 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
1830 stuff that is not part of the bidi iterator's state! */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1831 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
1832 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
1833 bidi_dir_t paragraph_dir; /* current paragraph direction */
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
1834 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
1835 EMACS_INT separator_limit; /* where paragraph separator should end */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1836 };
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
1837
107604
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
1838 /* 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
1839 embedding level. */
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
1840 #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
1841 ((BIDI_IT).resolved_level == (BIDI_IT).level_stack[0].level)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1842
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1843
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1844 /***********************************************************************
50095
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1845 Fringes
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1846 ***********************************************************************/
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1847
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1848 /* 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
1849 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
1850 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
1851 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
1852 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
1853 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
1854 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
1855
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1856 struct draw_fringe_bitmap_params
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1857 {
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
1858 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
1859 unsigned short *bits;
50095
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1860 int wd, h, dh;
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1861 int x, y;
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1862 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
1863 unsigned cursor_p : 1;
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
1864 unsigned overlay_p : 1;
50095
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1865 struct face *face;
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
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
1868 #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
1869
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1870
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
1871 /***********************************************************************
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1872 Display Iterator
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1873 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1874
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1875 /* Iteration over things to display in current_buffer or in a string.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1876
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1877 The iterator handles:
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1878
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1879 1. Overlay strings (after-string, before-string).
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1880 2. Face properties.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1881 3. Invisible text properties.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1882 4. Selective display.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1883 5. Translation of characters via display tables.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1884 6. Translation of control characters to the forms `\003' or `^C'.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1885 7. `glyph' and `space-width' properties.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1886
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1887 Iterators are initialized by calling init_iterator or one of the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1888 equivalent functions below. A call to get_next_display_element
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1889 loads the iterator structure with information about what next to
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1890 display. A call to set_iterator_to_next increments the iterator's
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1891 position.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1892
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1893 Characters from overlay strings, display table entries or control
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1894 character translations are returned one at a time. For example, if
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1895 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
1896 of `cd' and the control character is displayed with a leading
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1897 arrow, then the iterator will return:
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 Call Return Source Call next
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1900 -----------------------------------------------------------------
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1901 next c display table move
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1902 next d display table move
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1903 next ^ control char move
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1904 next A control char move
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1905
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1906 The same mechanism is also used to return characters for ellipses
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1907 displayed at the end of invisible text.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1908
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1909 CAVEAT: Under some circumstances, move_.* functions can be called
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1910 asynchronously, e.g. when computing a buffer position from an x and
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1911 y pixel position. This means that these functions and functions
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1912 called from them SHOULD NOT USE xmalloc and alike. See also the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1913 comment at the start of xdisp.c. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1914
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1915 /* Enumeration describing what kind of display element an iterator is
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1916 loaded with after a call to get_next_display_element. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1917
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1918 enum display_element_type
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1919 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1920 /* A normal character. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1921 IT_CHARACTER,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1922
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1923 /* A composition (static and automatic). */
26850
d00beb113ad5 (enum glyph_type): New member COMPOSITE_GLYPH.
Kenichi Handa <handa@m17n.org>
parents: 26766
diff changeset
1924 IT_COMPOSITION,
d00beb113ad5 (enum glyph_type): New member COMPOSITE_GLYPH.
Kenichi Handa <handa@m17n.org>
parents: 26766
diff changeset
1925
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1926 /* An image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1927 IT_IMAGE,
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 /* A flexible width and height space. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1930 IT_STRETCH,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1931
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1932 /* End of buffer or string. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1933 IT_EOB,
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 /* Truncation glyphs. Never returned by get_next_display_element.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1936 Used to get display information about truncation glyphs via
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1937 produce_glyphs. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1938 IT_TRUNCATION,
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 /* Continuation glyphs. See the comment for IT_TRUNCATION. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1941 IT_CONTINUATION
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1942 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1943
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1944
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1945 /* An enumerator for each text property that has a meaning for display
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1946 purposes. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1947
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1948 enum prop_idx
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1949 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1950 FONTIFIED_PROP_IDX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1951 FACE_PROP_IDX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1952 INVISIBLE_PROP_IDX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1953 DISPLAY_PROP_IDX,
26850
d00beb113ad5 (enum glyph_type): New member COMPOSITE_GLYPH.
Kenichi Handa <handa@m17n.org>
parents: 26766
diff changeset
1954 COMPOSITION_PROP_IDX,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1955
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1956 /* Not a property. Used to indicate changes in overlays. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1957 OVERLAY_PROP_IDX,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1958
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1959 /* Sentinel. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1960 LAST_PROP_IDX
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1961 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1962
96234
d83f0f57503f (struct it): Replace bool truncate_lines_p with a line_wrap enum
Chong Yidong <cyd@stupidchicken.com>
parents: 96019
diff changeset
1963 /* 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
1964
d83f0f57503f (struct it): Replace bool truncate_lines_p with a line_wrap enum
Chong Yidong <cyd@stupidchicken.com>
parents: 96019
diff changeset
1965 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
1966 {
d83f0f57503f (struct it): Replace bool truncate_lines_p with a line_wrap enum
Chong Yidong <cyd@stupidchicken.com>
parents: 96019
diff changeset
1967 TRUNCATE,
d83f0f57503f (struct it): Replace bool truncate_lines_p with a line_wrap enum
Chong Yidong <cyd@stupidchicken.com>
parents: 96019
diff changeset
1968 WORD_WRAP,
d83f0f57503f (struct it): Replace bool truncate_lines_p with a line_wrap enum
Chong Yidong <cyd@stupidchicken.com>
parents: 96019
diff changeset
1969 WINDOW_WRAP
d83f0f57503f (struct it): Replace bool truncate_lines_p with a line_wrap enum
Chong Yidong <cyd@stupidchicken.com>
parents: 96019
diff changeset
1970 };
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
1971
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1972 struct it_slice
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1973 {
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1974 Lisp_Object x;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1975 Lisp_Object y;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1976 Lisp_Object width;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1977 Lisp_Object height;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1978 };
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1979
79328
fcf9272ec241 (face_at_buffer_position_no_overlays): Add decl.
Richard M. Stallman <rms@gnu.org>
parents: 78719
diff changeset
1980 /* 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
1981 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
1982
60129
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
1983 enum it_method {
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
1984 GET_FROM_BUFFER = 0,
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
1985 GET_FROM_DISPLAY_VECTOR,
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
1986 GET_FROM_STRING,
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
1987 GET_FROM_C_STRING,
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
1988 GET_FROM_IMAGE,
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
1989 GET_FROM_STRETCH,
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
1990 NUM_IT_METHODS
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
1991 };
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
1992
108003
4b71850034e6 * buffer.h (struct buffer): Remove unused var `direction_reversed'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107980
diff changeset
1993 /* FIXME: What is this? Why 5? */
107587
0ff1b8888f6b Retrospective commit from 2009-08-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107584
diff changeset
1994 #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
1995
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1996 /* 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
1997 struct composition_it
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1998 {
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
1999 /* 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
2000 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
2001 /* 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
2002 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
2003 int id;
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2004 /* If non-negative, character that triggers the automatic
108759
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2005 composition at `stop_pos', and this is an automatic composition.
98108
7b2adb63b556 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 97981
diff changeset
2006 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
2007 temporarily if searching of composition reach a limit or a
7b2adb63b556 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 97981
diff changeset
2008 newline. */
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2009 int ch;
108759
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2010 /* 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
2011 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
2012 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
2013 rule for the composition. */
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2014 int rule_idx;
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2015 /* 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
2016 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
2017 composition exists. */
97981
4ca1e7cb50ea (struct composition_it): New member lookback.
Kenichi Handa <handa@m17n.org>
parents: 97821
diff changeset
2018 int lookback;
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2019 /* 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
2020 int nglyphs;
108759
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2021 /* 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
2022 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
2023 from the last to the first. */
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2024 int reversed_p;
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2025
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2026 /** The following members contain information about the current
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2027 grapheme cluster. */
0bb727f1d547 Fix bidi-composition interaction in backward scanning..
Kenichi Handa <handa@etlken>
parents: 108571
diff changeset
2028 /* 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
2029 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
2030 /* 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
2031 int nchars, nbytes;
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2032 /* 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
2033 int from, to;
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2034 /* 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
2035 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
2036 terminal display. */
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2037 int width;
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2038 };
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2039
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2040 struct it
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2041 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2042 /* The window in which we iterate over current_buffer (or a string). */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2043 Lisp_Object window;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2044 struct window *w;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2045
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2046 /* The window's frame. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2047 struct frame *f;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2048
60129
cd9e37256a95 (enum it_method): New enum.
Kim F. Storm <storm@cua.dk>
parents: 59870
diff changeset
2049 /* 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
2050 enum it_method method;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2051
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2052 /* The next position at which to check for face changes, invisible
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2053 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
2054 EMACS_INT stop_charpos;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2055
107604
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
2056 /* 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
2057 iterator position in `current'. */
107604
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
2058 EMACS_INT prev_stop;
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
2059
107641
d65c199e8bdd Continue work on cursor movement in continued lines.
Eli Zaretskii <eliz@gnu.org>
parents: 107635
diff changeset
2060 /* 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
2061 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
2062 EMACS_INT base_level_stop;
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
2063
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2064 /* Maximum string or buffer position + 1. ZV when iterating over
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2065 current_buffer. */
106550
562676f8dfb2 (struct text_pos): Use EMACS_INT;
Eli Zaretskii <eliz@gnu.org>
parents: 106404
diff changeset
2066 EMACS_INT end_charpos;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2067
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2068 /* C string to iterate over. Non-null means get characters from
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2069 this string, otherwise characters are read from current_buffer
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2070 or it->string. */
109717
8949aad5e992 Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109673
diff changeset
2071 const unsigned char *s;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2072
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2073 /* Number of characters in the string (s, or it->string) we iterate
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2074 over. */
110645
7d7a02c19d8c Fix int/EMACS_INT use in xdisp.c and print.c.
Eli Zaretskii <eliz@gnu.org>
parents: 110600
diff changeset
2075 EMACS_INT string_nchars;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2076
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2077 /* 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
2078 visible in the window. */
106550
562676f8dfb2 (struct text_pos): Use EMACS_INT;
Eli Zaretskii <eliz@gnu.org>
parents: 106404
diff changeset
2079 EMACS_INT region_beg_charpos, region_end_charpos;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2080
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2081 /* 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
2082 EMACS_INT redisplay_end_trigger_charpos;
25012
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 /* 1 means multibyte characters are enabled. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2085 unsigned multibyte_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2086
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2087 /* 1 means window has a mode line at its top. */
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2088 unsigned header_line_p : 1;
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 /* 1 means `string' is the value of a `display' property.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2091 Don't handle some `display' properties in these strings. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2092 unsigned string_from_display_prop_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2093
59268
2d8a6be1520d (struct it): New element ellipsis_p.
Richard M. Stallman <rms@gnu.org>
parents: 59146
diff changeset
2094 /* When METHOD == next_element_from_display_vector,
2d8a6be1520d (struct it): New element ellipsis_p.
Richard M. Stallman <rms@gnu.org>
parents: 59146
diff changeset
2095 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
2096 unsigned ellipsis_p : 1;
2d8a6be1520d (struct it): New element ellipsis_p.
Richard M. Stallman <rms@gnu.org>
parents: 59146
diff changeset
2097
96470
2af6e85f13d5 Implement display-time wrap/line-prefix feature
Miles Bader <miles@gnu.org>
parents: 96234
diff changeset
2098 /* 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
2099 unsigned avoid_cursor_p : 1;
2af6e85f13d5 Implement display-time wrap/line-prefix feature
Miles Bader <miles@gnu.org>
parents: 96234
diff changeset
2100
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2101 /* Display table in effect or null for none. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2102 struct Lisp_Char_Table *dp;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2103
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2104 /* Current display table vector to return characters from and its
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2105 end. dpvec null means we are not returning characters from a
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2106 display table entry; current.dpvec_index gives the current index
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2107 into dpvec. This same mechanism is also used to return
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2108 characters from translated control characters, i.e. `\003' or
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2109 `^C'. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2110 Lisp_Object *dpvec, *dpend;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2111
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2112 /* 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
2113 means that no such character is involved. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2114 int dpvec_char_len;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2115
59430
6aee7f43ad59 (struct it): New member dpvec_face_id.
Kim F. Storm <storm@cua.dk>
parents: 59268
diff changeset
2116 /* 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
2117 int dpvec_face_id;
6aee7f43ad59 (struct it): New member dpvec_face_id.
Kim F. Storm <storm@cua.dk>
parents: 59268
diff changeset
2118
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2119 /* 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
2120 a face. The face is restored when all glyphs from dpvec have
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2121 been delivered. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2122 int saved_face_id;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2123
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2124 /* 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
2125 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
2126 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
2127 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
2128 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
2129 Lisp_Object ctl_chars[16];
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2130
53095
bebcff17499f (struct it): New member start.
Kim F. Storm <storm@cua.dk>
parents: 53077
diff changeset
2131 /* 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
2132 over display properties and invisible text. */
bebcff17499f (struct it): New member start.
Kim F. Storm <storm@cua.dk>
parents: 53077
diff changeset
2133 struct display_pos start;
bebcff17499f (struct it): New member start.
Kim F. Storm <storm@cua.dk>
parents: 53077
diff changeset
2134
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2135 /* Current buffer or string position of the iterator, including
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2136 position in overlay strings etc. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2137 struct display_pos current;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2138
79335
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2139 /* 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
2140 OVERLAY_STRING_CHUNK_SIZE. */
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2141 int n_overlay_strings;
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2142
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2143 /* Vector of overlays to process. Overlay strings are processed
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2144 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
2145 #define OVERLAY_STRING_CHUNK_SIZE 16
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2146 Lisp_Object overlay_strings[OVERLAY_STRING_CHUNK_SIZE];
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2147
79335
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2148 /* 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
2149 Lisp_Object string_overlays[OVERLAY_STRING_CHUNK_SIZE];
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2150
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2151 /* If non-nil, a Lisp string being processed. If
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2152 current.overlay_string_index >= 0, this is an overlay string from
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2153 pos. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2154 Lisp_Object string;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2155
79335
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2156 /* 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
2157 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
2158 Lisp_Object from_overlay;
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2159
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2160 /* Stack of saved values. New entries are pushed when we begin to
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2161 process an overlay string or a string from a `glyph' property.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2162 Entries are popped when we return to deliver display elements
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2163 from what we previously had. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2164 struct iterator_stack_entry
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2165 {
71418
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2166 Lisp_Object string;
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2167 int string_nchars;
106550
562676f8dfb2 (struct text_pos): Use EMACS_INT;
Eli Zaretskii <eliz@gnu.org>
parents: 106404
diff changeset
2168 EMACS_INT end_charpos;
562676f8dfb2 (struct text_pos): Use EMACS_INT;
Eli Zaretskii <eliz@gnu.org>
parents: 106404
diff changeset
2169 EMACS_INT stop_charpos;
107604
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
2170 EMACS_INT prev_stop;
9e8415b885ee Retrospective commit from 2009-12-12.
Eli Zaretskii <eliz@gnu.org>
parents: 107599
diff changeset
2171 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
2172 struct composition_it cmp_it;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2173 int face_id;
71418
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2174
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2175 /* 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
2176 union {
71418
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2177 /* 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
2178 struct {
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2179 Lisp_Object object;
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2180 struct it_slice slice;
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2181 int image_id;
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2182 } image;
71418
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2183 /* 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
2184 struct {
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2185 Lisp_Object object;
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2186 } comp;
71418
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2187 /* 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
2188 struct {
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2189 Lisp_Object object;
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2190 } stretch;
245925ebe6d0 (struct it): Add union to iterator stack to save
Kim F. Storm <storm@cua.dk>
parents: 71338
diff changeset
2191 } u;
71418
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2192
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2193 /* current text and display positions. */
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2194 struct text_pos position;
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2195 struct display_pos current;
79335
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2196 Lisp_Object from_overlay;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2197 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
2198 enum it_method method;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2199 unsigned multibyte_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2200 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
2201 unsigned display_ellipsis_p : 1;
96470
2af6e85f13d5 Implement display-time wrap/line-prefix feature
Miles Bader <miles@gnu.org>
parents: 96234
diff changeset
2202 unsigned avoid_cursor_p : 1;
102042
f0864f8938a3 (struct iterator_stack_entry): New line_wrap member.
Chong Yidong <cyd@stupidchicken.com>
parents: 100951
diff changeset
2203 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
2204
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2205 /* 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
2206 short voffset;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2207 Lisp_Object space_width;
71418
d108fd44c6fc (struct it): Add `position' member to iterator stack.
Kim F. Storm <storm@cua.dk>
parents: 71365
diff changeset
2208 Lisp_Object font_height;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2209 }
71338
cb9b414fad75 (IT_STACK_SIZE): New macro specifying size of
Kim F. Storm <storm@cua.dk>
parents: 71029
diff changeset
2210 stack[IT_STACK_SIZE];
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2211
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2212 /* Stack pointer. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2213 int sp;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
2214
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2215 /* -1 means selective display hides everything between a \r and the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2216 next newline; > 0 means hide lines indented more than that value. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2217 int selective;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2218
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2219 /* An enumeration describing what the next display element is
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2220 after a call to get_next_display_element. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2221 enum display_element_type what;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2222
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2223 /* Face to use. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2224 int face_id;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2225
79335
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2226 /* 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
2227 unsigned selective_display_ellipsis_p : 1;
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2228
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2229 /* 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
2230 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
2231 unsigned ctl_arrow_p : 1;
e92ea7511121 (struct it): New elt string_overlays.
Richard M. Stallman <rms@gnu.org>
parents: 79328
diff changeset
2232
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2233 /* Non-zero means that the current face has a box. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2234 unsigned face_box_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2235
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2236 /* 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
2237 of characters with box face. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2238 unsigned start_of_box_run_p : 1;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
2239
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2240 /* 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
2241 of characters with box face. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2242 unsigned end_of_box_run_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2243
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2244 /* 1 means overlay strings at end_charpos have been processed. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2245 unsigned overlay_strings_at_end_processed_p : 1;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2246
66812
b3f0971004ea (struct it): New member ignore_overlay_strings_at_pos_p.
Kim F. Storm <storm@cua.dk>
parents: 66032
diff changeset
2247 /* 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
2248 already been processed. */
b3f0971004ea (struct it): New member ignore_overlay_strings_at_pos_p.
Kim F. Storm <storm@cua.dk>
parents: 66032
diff changeset
2249 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
2250
28221
6622698b83d6 (struct glyph): New member glyph_not_available_p.
Kenichi Handa <handa@m17n.org>
parents: 27961
diff changeset
2251 /* 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
2252 system. */
29474
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
2253 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
2254
a4a198e7b4e5 (struct it): Add starts_in_middle_of_char_p.
Gerd Moellmann <gerd@gnu.org>
parents: 29311
diff changeset
2255 /* 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
2256 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
2257 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
2258 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
2259
34226
2e38b27fd38b (struct it): Add face_before_selective_p.
Gerd Moellmann <gerd@gnu.org>
parents: 33460
diff changeset
2260 /* 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
2261 skipped due to selective display. */
2e38b27fd38b (struct it): Add face_before_selective_p.
Gerd Moellmann <gerd@gnu.org>
parents: 33460
diff changeset
2262 unsigned face_before_selective_p : 1;
2e38b27fd38b (struct it): Add face_before_selective_p.
Gerd Moellmann <gerd@gnu.org>
parents: 33460
diff changeset
2263
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2264 /* 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
2265 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
2266 unsigned constrain_row_ascent_descent_p : 1;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2267
98236
1c3e02cbd63e (struct it): Move line_wrap away from the middle of
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98108
diff changeset
2268 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
2269
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2270 /* 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
2271 MODE_LINE_FACE_ID, etc, depending on what we are displaying. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2272 int base_face_id;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2273
107980
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2274 /* 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
2275 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
2276 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
2277 case that unibyte_display_via_language_environment is set.
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2278
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2279 If `what' == IT_COMPOSITION, the first component of a composition
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2280 and length in bytes of the composition.
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2281
108087
076e73b014a5 dispextern.h: Fix a typo in a comment.
Eli Zaretskii <eliz@gnu.org>
parents: 108024
diff changeset
2282 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
2283 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
2284 traversed by the iterator.
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2285
c2eddf34eaf2 Improve commentary regarding redisplay.
Eli Zaretskii <eliz@gnu.org>
parents: 107818
diff changeset
2286 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
2287 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
2288 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
2289 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
2290 int c, len;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2291
97821
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2292 /* 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
2293 composition. */
9d12856db185 * dispextern.h (struct glyph): New union u.cmp. Delete the member
Kenichi Handa <handa@m17n.org>
parents: 97043
diff changeset
2294 struct composition_it cmp_it;
26850
d00beb113ad5 (enum glyph_type): New member COMPOSITE_GLYPH.
Kenichi Handa <handa@m17n.org>
parents: 26766
diff changeset
2295
110131
cca2a663ef92 Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents: 109296
diff changeset
2296 /* 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
2297 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
2298 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
2299 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
2300 PRODUCE_GLYPHS, this should be set beforehand too. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2301 int char_to_display;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2302
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2303 /* If what == IT_IMAGE, the id of the image to display. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2304 int image_id;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2305
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2306 /* Values from `slice' property. */
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2307 struct it_slice slice;
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2308
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2309 /* Value of the `space-width' property, if any; nil if none. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2310 Lisp_Object space_width;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2311
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2312 /* Computed from the value of the `raise' property. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2313 short voffset;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2314
98236
1c3e02cbd63e (struct it): Move line_wrap away from the middle of
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98108
diff changeset
2315 /* 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
2316 short tab_width;
1c3e02cbd63e (struct it): Move line_wrap away from the middle of
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98108
diff changeset
2317
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2318 /* Value of the `height' property, if any; nil if none. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2319 Lisp_Object font_height;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2320
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2321 /* Object and position where the current display element came from.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2322 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
2323 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
2324 during mode-line update. Position is a position in object. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2325 Lisp_Object object;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2326 struct text_pos position;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2327
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2328 /* Width in pixels of truncation and continuation glyphs. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2329 short truncation_pixel_width, continuation_pixel_width;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2330
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2331 /* 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
2332 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
2333 (f), and last_visible_x == pixel width of W + first_visible_x. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2334 int first_visible_x, last_visible_x;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2335
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2336 /* Last visible y-position + 1 in the display area without a mode
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2337 line, if the window has one. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2338 int last_visible_y;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2339
58174
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
2340 /* 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
2341 window systems only.) */
28684
609d4aabf72c (struct it): Remove member prompt_width, add extra_line_spacing.
Gerd Moellmann <gerd@gnu.org>
parents: 28417
diff changeset
2342 int extra_line_spacing;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2343
58174
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
2344 /* 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
2345 int max_extra_line_spacing;
1e3a9e2d4cad (struct glyph_row): New member extra_line_spacing.
Kim F. Storm <storm@cua.dk>
parents: 57475
diff changeset
2346
55243
fa2641411db1 (struct it): Remove member use_default_face.
Kim F. Storm <storm@cua.dk>
parents: 55169
diff changeset
2347 /* 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
2348 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
2349 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
2350
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2351 /* 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
2352 produce_glyphs. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2353 struct glyph_row *glyph_row;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2354
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2355 /* The area of glyph_row to which glyphs are added. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2356 enum glyph_row_area area;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2357
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2358 /* Number of glyphs needed for the last character requested via
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2359 produce_glyphs. This is 1 except for tabs. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2360 int nglyphs;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
2361
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2362 /* Width of the display element in pixels. Result of
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2363 produce_glyphs. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2364 int pixel_width;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2365
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
2366 /* Current, maximum logical, and maximum physical line height
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
2367 information. Result of produce_glyphs. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2368 int ascent, descent, max_ascent, max_descent;
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
2369 int phys_ascent, phys_descent, max_phys_ascent, max_phys_descent;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2370
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2371 /* Current x pixel position within the display line. This value
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2372 does not include the width of continuation lines in front of the
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2373 line. The value of current_x is automatically incremented by
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2374 pixel_width with each call to produce_glyphs. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2375 int current_x;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2376
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2377 /* Accumulated width of continuation lines. If > 0, this means we
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2378 are currently in a continuation line. This is initially zero and
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2379 incremented/reset by display_line, move_it_to etc. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2380 int continuation_lines_width;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2381
107641
d65c199e8bdd Continue work on cursor movement in continued lines.
Eli Zaretskii <eliz@gnu.org>
parents: 107635
diff changeset
2382 /* 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
2383 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
2384 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
2385 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
2386 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
2387 lines, see display_line. */
d65c199e8bdd Continue work on cursor movement in continued lines.
Eli Zaretskii <eliz@gnu.org>
parents: 107635
diff changeset
2388 struct text_pos eol_pos;
d65c199e8bdd Continue work on cursor movement in continued lines.
Eli Zaretskii <eliz@gnu.org>
parents: 107635
diff changeset
2389
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2390 /* Current y-position. Automatically incremented by the height of
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2391 glyph_row in move_it_to and display_line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2392 int current_y;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2393
53077
f832dd90f584 (struct it): New member first_vpos.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2394 /* 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
2395 int first_vpos;
f832dd90f584 (struct it): New member first_vpos.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
2396
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2397 /* Current vertical matrix position, or line number. Automatically
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2398 incremented by move_it_to and display_line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2399 int vpos;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2400
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2401 /* Horizontal matrix position reached in move_it_in_display_line.
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2402 Only set there, not in display_line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2403 int hpos;
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2404
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2405 /* 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
2406 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
2407
57276
db333b320b67 (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
Kim F. Storm <storm@cua.dk>
parents: 57269
diff changeset
2408 /* 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
2409 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
2410
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2411 /* 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
2412 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
2413
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2414 /* 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
2415 unsigned right_user_fringe_face_id : FACE_ID_BITS;
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
2416
107584
e0df0337f248 Retrospective commit from 2009-08-15.
Eli Zaretskii <eliz@gnu.org>
parents: 107583
diff changeset
2417 /* 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
2418 in the visual order. */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
2419 int bidi_p;
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
2420
107584
e0df0337f248 Retrospective commit from 2009-08-15.
Eli Zaretskii <eliz@gnu.org>
parents: 107583
diff changeset
2421 /* For iterating over bidirectional text. */
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
2422 struct bidi_it bidi_it;
107595
69c12db7031d Retrospective commit from 2009-10-05.
Eli Zaretskii <eliz@gnu.org>
parents: 107594
diff changeset
2423 bidi_dir_t paragraph_embedding;
25012
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
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2426
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2427 /* Access to positions of iterator IT. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2428
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2429 #define IT_CHARPOS(IT) CHARPOS ((IT).current.pos)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2430 #define IT_BYTEPOS(IT) BYTEPOS ((IT).current.pos)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2431 #define IT_STRING_CHARPOS(IT) CHARPOS ((IT).current.string_pos)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2432 #define IT_STRING_BYTEPOS(IT) BYTEPOS ((IT).current.string_pos)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2433
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2434 /* 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
2435 only work after get_next_display_element has been called. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2436
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2437 #define ITERATOR_AT_END_P(IT) ((IT)->what == IT_EOB)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2438
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2439 /* 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
2440 is either on a newline or on a carriage return and selective
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2441 display hides the rest of the line. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2442
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2443 #define ITERATOR_AT_END_OF_LINE_P(IT) \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2444 ((IT)->what == IT_CHARACTER \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2445 && ((IT)->c == '\n' \
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2446 || ((IT)->c == '\r' && (IT)->selective)))
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2447
107198
f32d789c9aab term.c, dispextern.h: Fix stale comments.
Eli Zaretskii <eliz@gnu.org>
parents: 106815
diff changeset
2448 /* 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
2449 to avoid the function call overhead. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2450
82992
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 82989
diff changeset
2451 #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
2452 do { \
107645
6e29ba4351e0 Fix glyph_row reversed_p flag in empty lines between paragraphs.
Eli Zaretskii <eliz@gnu.org>
parents: 107644
diff changeset
2453 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
2454 { \
6e29ba4351e0 Fix glyph_row reversed_p flag in empty lines between paragraphs.
Eli Zaretskii <eliz@gnu.org>
parents: 107644
diff changeset
2455 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
2456 (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
2457 else \
6e29ba4351e0 Fix glyph_row reversed_p flag in empty lines between paragraphs.
Eli Zaretskii <eliz@gnu.org>
parents: 107644
diff changeset
2458 (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
2459 } \
82992
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 82989
diff changeset
2460 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
2461 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
2462 else \
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 82989
diff changeset
2463 produce_glyphs ((IT)); \
5de4189e659d Got rid of the rif (window-based redisplay interface) global variable.
Karoly Lorentey <lorentey@elte.hu>
parents: 82989
diff changeset
2464 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
2465 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
2466 } while (0)
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2467
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2468 /* Bit-flags indicating what operation move_it_to should perform. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2469
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2470 enum move_operation_enum
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2471 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2472 /* Stop if specified x-position is reached. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2473 MOVE_TO_X = 0x01,
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 /* Stop if specified y-position is reached. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2476 MOVE_TO_Y = 0x02,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2477
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2478 /* Stop if specified vpos is reached. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2479 MOVE_TO_VPOS = 0x04,
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2480
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2481 /* Stop if specified buffer or string position is reached. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2482 MOVE_TO_POS = 0x08
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2483 };
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
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 /***********************************************************************
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2488 Window-based redisplay interface
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2489 ***********************************************************************/
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 /* Structure used to describe runs of lines that must be scrolled. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2492
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2493 struct run
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2494 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2495 /* Source and destination y pixel position. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2496 int desired_y, current_y;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2497
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2498 /* Source and destination vpos in matrix. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2499 int desired_vpos, current_vpos;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2500
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2501 /* Height in pixels, number of glyph rows. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2502 int height, nrows;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2503 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2504
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2505
50356
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
2506 /* Handlers for setting frame parameters. */
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
2507
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2508 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
2509
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
2510
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2511 /* Structure holding system-dependent interface functions needed
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2512 for window-based redisplay. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2513
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2514 struct redisplay_interface
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2515 {
50356
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
2516 /* Handlers for setting frame parameters. */
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
2517 frame_parm_handler *frame_parm_handlers;
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
2518
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2519 /* Produce glyphs/get display metrics for the display element IT is
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2520 loaded with. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2521 void (*produce_glyphs) (struct it *it);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
2522
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2523 /* Write or insert LEN glyphs from STRING at the nominal output
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2524 position. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2525 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
2526 void (*insert_glyphs) (struct glyph *start, int len);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2527
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2528 /* Clear from nominal output position to X. X < 0 means clear
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2529 to right end of display. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2530 void (*clear_end_of_line) (int x);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
2531
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2532 /* Function to call to scroll the display as described by RUN on
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2533 window W. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2534 void (*scroll_run_hook) (struct window *w, struct run *run);
25012
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 /* Function to call after a line in a display has been completely
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2537 updated. Used to draw truncation marks and alike. DESIRED_ROW
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2538 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
2539 void (*after_update_window_line_hook) (struct glyph_row *desired_row);
25012
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 /* Function to call before beginning to update window W in
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2542 window-based redisplay. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2543 void (*update_window_begin_hook) (struct window *w);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2544
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2545 /* 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
2546 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
2547 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
2548 that contained glyphs in mouse-face were overwritten, so we
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
2549 have to update the mouse highlight. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2550 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
2551 int mouse_face_overwritten_p);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48382
diff changeset
2552
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2553 /* Move cursor to row/column position VPOS/HPOS, pixel coordinates
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2554 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
2555 are window-relative pixel positions. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2556 void (*cursor_to) (int vpos, int hpos, int y, int x);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2557
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2558 /* 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
2559 void (*flush_display) (struct frame *f);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2560
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2561 /* 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
2562 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
2563 automatically before reading input. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2564 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
2565
30343
21d1c542f98e Correct a typo in a comment.
Eli Zaretskii <eliz@gnu.org>
parents: 30225
diff changeset
2566 /* 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
2567 void (*clear_window_mouse_face) (struct window *w);
30162
b90768fb8580 (struct redisplay_interface): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents: 30151
diff changeset
2568
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2569 /* 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
2570 frame F. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2571 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
2572 int *left, int *right);
25185
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
2573
d3614d7b7583 (struct glyph_row): Add overlapping_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25119
diff changeset
2574 /* 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
2575 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
2576 desired rows have been made current. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2577 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
2578 enum glyph_row_area area, int);
50095
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
2579
50193
dadd724b7ce9 Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50149
diff changeset
2580 #ifdef HAVE_WINDOW_SYSTEM
dadd724b7ce9 Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50149
diff changeset
2581
50095
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
2582 /* 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
2583 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
2584 struct draw_fringe_bitmap_params *p);
50095
a9f9d27374b3 (enum fringe_bitmap_type): Define here.
Kim F. Storm <storm@cua.dk>
parents: 49834
diff changeset
2585
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
2586 /* 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
2587 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
2588 int h, int wd);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2589 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
2590
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2591 /* 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
2592 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
2593 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
2594
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
2595 /* Draw a glyph string S. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2596 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
2597
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2598 /* Define cursor CURSOR on frame F. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2599 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
2600
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2601 /* 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
2602 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
2603 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
2604
50243
3fb54e5a7201 (struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents: 50217
diff changeset
2605 /* 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
2606 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
2607 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
2608 should track this cursor (when applicable). */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2609 void (*draw_window_cursor) (struct window *w,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2610 struct glyph_row *glyph_row,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2611 int x, int y,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2612 int cursor_type, int cursor_width,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2613 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
2614
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2615 /* 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
2616 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
2617 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
2618
55020
e09f199d1b5b (struct glyph_slice): New struct.
Kim F. Storm <storm@cua.dk>
parents: 54426
diff changeset
2619 /* 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
2620 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
2621 shifted right by SHIFT_BY pixels. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2622 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
2623 int x, int y, int width,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2624 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
2625
50193
dadd724b7ce9 Fix compilation with --with-x=no.
Kim F. Storm <storm@cua.dk>
parents: 50149
diff changeset
2626 #endif /* HAVE_WINDOW_SYSTEM */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2627 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2628
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2629
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2630 /***********************************************************************
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2631 Images
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2632 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2633
27626
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
2634 #ifdef HAVE_WINDOW_SYSTEM
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2635
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2636 /* Structure forward declarations. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2637
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2638 struct image;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2639
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2640
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
2641 /* Each image format (JPEG, TIFF, ...) supported is described by
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2642 a structure of the type below. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2643
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2644 struct image_type
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2645 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2646 /* A symbol uniquely identifying the image type, .e.g `jpeg'. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2647 Lisp_Object *type;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2648
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2649 /* Check that SPEC is a valid image specification for the given
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2650 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
2651 int (* valid_p) (Lisp_Object spec);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2652
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2653 /* Load IMG which is used on frame F from information contained in
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2654 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
2655 int (* load) (struct frame *f, struct image *img);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2656
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2657 /* 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
2658 void (* free) (struct frame *f, struct image *img);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2659
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2660 /* Next in list of all supported image types. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2661 struct image_type *next;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2662 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2663
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2664
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2665 /* Structure describing an image. Specific image formats like XBM are
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2666 converted into this form, so that display only has to deal with
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2667 this type of image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2668
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2669 struct image
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2670 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2671 /* The time in seconds at which the image was last displayed. Set
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2672 in prepare_image_for_display. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2673 unsigned long timestamp;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2674
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2675 /* Pixmaps of the image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2676 Pixmap pixmap, mask;
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 /* Colors allocated for this image, if any. Allocated via xmalloc. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2679 unsigned long *colors;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2680 int ncolors;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2681
40263
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2682 /* 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
2683 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
2684 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
2685 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
2686 if necessary. */
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2687 unsigned long background;
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2688
78449
820186eb8f18 (struct image): New members.
Chong Yidong <cyd@stupidchicken.com>
parents: 78260
diff changeset
2689 /* 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
2690 is created. */
820186eb8f18 (struct image): New members.
Chong Yidong <cyd@stupidchicken.com>
parents: 78260
diff changeset
2691 unsigned long frame_foreground, frame_background;
820186eb8f18 (struct image): New members.
Chong Yidong <cyd@stupidchicken.com>
parents: 78260
diff changeset
2692
40263
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2693 /* 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
2694 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
2695 `IMAGE_BACKGROUND_TRANSPARENT'. */
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2696 unsigned background_transparent : 1;
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2697
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2698 /* 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
2699 valid, respectively. */
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
2700 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
2701
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2702 /* Width and height of the image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2703 int width, height;
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 /* These values are used for the rectangles displayed for images
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2706 that can't be loaded. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2707 #define DEFAULT_IMAGE_WIDTH 30
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2708 #define DEFAULT_IMAGE_HEIGHT 30
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2709
70167
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2710 /* 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
2711 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
2712 rather than looking at the optional image margin. */
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2713 int corners[4];
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2714 #define TOP_CORNER 0
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2715 #define LEFT_CORNER 1
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2716 #define BOT_CORNER 2
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2717 #define RIGHT_CORNER 3
fd8a5c0f1290 (struct image): New member `corners'.
Kim F. Storm <storm@cua.dk>
parents: 69486
diff changeset
2718
28786
e18bbe250122 (DEFAULT_IMAGE_HEIGHT): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 28707
diff changeset
2719 /* Percent of image height used as ascent. A value of
42753
895aff55e46c Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 42709
diff changeset
2720 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
2721 line. */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2722 int ascent;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2723 #define DEFAULT_IMAGE_ASCENT 50
28786
e18bbe250122 (DEFAULT_IMAGE_HEIGHT): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 28707
diff changeset
2724 #define CENTERED_IMAGE_ASCENT -1
25012
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 /* Lisp specification of this image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2727 Lisp_Object spec;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2728
92150
1c088baa9d2d Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92109
diff changeset
2729 /* 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
2730 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
2731 Used to allow fine-grained cache flushing. */
1c088baa9d2d Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92109
diff changeset
2732 Lisp_Object dependencies;
1c088baa9d2d Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92109
diff changeset
2733
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2734 /* Relief to draw around the image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2735 int relief;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2736
35274
bc2b88ed2fa1 (struct image): Replace member `margin' with
Gerd Moellmann <gerd@gnu.org>
parents: 35054
diff changeset
2737 /* 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
2738 int hmargin, vmargin;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2739
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2740 /* Reference to the type of the image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2741 struct image_type *type;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2742
25954
ab0d41b6f746 (struct image): New member load_failed_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25881
diff changeset
2743 /* 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
2744 unsigned load_failed_p;
ab0d41b6f746 (struct image): New member load_failed_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25881
diff changeset
2745
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2746 /* A place for image types to store additional data. The member
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2747 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
2748 there. Image types should free this data when their `free'
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2749 function is called. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2750 struct
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2751 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2752 int int_val;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2753 void *ptr_val;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2754 Lisp_Object lisp_val;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2755 } data;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2756
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2757 /* Hash value of image specification to speed up comparisons. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2758 unsigned hash;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2759
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2760 /* Image id of this image. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2761 int id;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2762
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2763 /* Hash collision chain. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2764 struct image *next, *prev;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2765 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2766
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2767
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2768 /* 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
2769 x_display_info share their caches. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2770
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2771 struct image_cache
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2772 {
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2773 /* Hash table of images. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2774 struct image **buckets;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2775
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2776 /* Vector mapping image ids to images. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2777 struct image **images;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2778
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2779 /* Allocated size of `images'. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2780 unsigned size;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2781
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2782 /* Number of images in the cache. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2783 unsigned used;
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2784
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2785 /* Reference count (number of frames sharing this cache). */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2786 int refcount;
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
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2789
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2790 /* 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
2791 no image with that id exists. */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2792
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2793 #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
2794 (((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
2795 ? FRAME_IMAGE_CACHE (F)->images[ID] \
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2796 : NULL)
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2797
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2798 /* Size of bucket vector of image caches. Should be prime. */
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 #define IMAGE_CACHE_BUCKETS_SIZE 1001
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2801
27626
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
2802 #endif /* HAVE_WINDOW_SYSTEM */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2803
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
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2806 /***********************************************************************
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2807 Tool-bars
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2808 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2809
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2810 /* 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
2811 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
2812 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
2813
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2814 enum tool_bar_item_idx
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2815 {
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2816 /* 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
2817 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
2818 TOOL_BAR_ITEM_KEY,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2819
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2820 /* 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
2821 TOOL_BAR_ITEM_ENABLED_P,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2822
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2823 /* 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
2824 TOOL_BAR_ITEM_SELECTED_P,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2825
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2826 /* Caption. */
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2827 TOOL_BAR_ITEM_CAPTION,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2828
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2829 /* Image(s) to display. This is either a single image specification
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2830 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
2831 TOOL_BAR_ITEM_IMAGES,
25012
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 /* The binding. */
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2834 TOOL_BAR_ITEM_BINDING,
25012
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 /* Button type. One of nil, `:radio' or `:toggle'. */
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2837 TOOL_BAR_ITEM_TYPE,
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2838
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2839 /* Help string. */
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2840 TOOL_BAR_ITEM_HELP,
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2841
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
2842 /* 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
2843 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
2844
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
2845 /* 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
2846 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
2847
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2848 /* 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
2849 tool-bar item. */
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2850 TOOL_BAR_ITEM_NSLOTS
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 /* 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
2855 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
2856
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2857 enum tool_bar_item_image
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2858 {
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2859 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
2860 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
2861 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
2862 TOOL_BAR_IMAGE_DISABLED_DESELECTED
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2863 };
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2864
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2865 /* 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
2866
35732
1a54c78e6452 (Vtool_bar_button_margin:): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 35335
diff changeset
2867 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
2868
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
2869 /* 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
2870
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 108003
diff changeset
2871 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
2872
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 108003
diff changeset
2873 /* 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
2874
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 108003
diff changeset
2875 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
2876 #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
2877
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25520
diff changeset
2878 /* 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
2879
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
2880 extern EMACS_INT tool_bar_button_relief;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2881
35732
1a54c78e6452 (Vtool_bar_button_margin:): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 35335
diff changeset
2882 /* Default values of the above variables. */
1a54c78e6452 (Vtool_bar_button_margin:): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 35335
diff changeset
2883
44965
d5a47b039e68 (DEFAULT_TOOL_BAR_BUTTON_MARGIN)
Pavel Janík <Pavel@Janik.cz>
parents: 44890
diff changeset
2884 #define DEFAULT_TOOL_BAR_BUTTON_MARGIN 4
d5a47b039e68 (DEFAULT_TOOL_BAR_BUTTON_MARGIN)
Pavel Janík <Pavel@Janik.cz>
parents: 44890
diff changeset
2885 #define DEFAULT_TOOL_BAR_BUTTON_RELIEF 1
35732
1a54c78e6452 (Vtool_bar_button_margin:): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 35335
diff changeset
2886
1a54c78e6452 (Vtool_bar_button_margin:): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 35335
diff changeset
2887 /* 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
2888
1a54c78e6452 (Vtool_bar_button_margin:): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 35335
diff changeset
2889 #define DEFAULT_TOOL_BAR_IMAGE_HEIGHT 24
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2890
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2891
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2892 /***********************************************************************
45521
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2893 Terminal Capabilities
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2894 ***********************************************************************/
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2895
45550
acd09cfa0ecd Doc fix.
Miles Bader <miles@gnu.org>
parents: 45549
diff changeset
2896 /* Each of these is a bit representing a terminal `capability' (bold,
acd09cfa0ecd Doc fix.
Miles Bader <miles@gnu.org>
parents: 45549
diff changeset
2897 inverse, etc). They are or'd together to specify the set of
acd09cfa0ecd Doc fix.
Miles Bader <miles@gnu.org>
parents: 45549
diff changeset
2898 capabilities being queried for when calling `tty_capable_p' (which
acd09cfa0ecd Doc fix.
Miles Bader <miles@gnu.org>
parents: 45549
diff changeset
2899 returns true if the terminal supports all of them). */
45549
4f321c30b7da Doc fix.
Miles Bader <miles@gnu.org>
parents: 45521
diff changeset
2900
45521
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2901 #define TTY_CAP_INVERSE 0x01
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2902 #define TTY_CAP_UNDERLINE 0x02
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2903 #define TTY_CAP_BOLD 0x04
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2904 #define TTY_CAP_DIM 0x08
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2905 #define TTY_CAP_BLINK 0x10
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2906 #define TTY_CAP_ALT_CHARSET 0x20
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2907
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2908
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2909 /***********************************************************************
d60b0f201386 (tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents: 44965
diff changeset
2910 Function Prototypes
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2911 ***********************************************************************/
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2912
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
2913 /* Defined in bidi.c */
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
2914
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2915 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
2916 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
2917 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
2918 extern int bidi_mirror_char (int);
107583
f35e7896a0fe Retrospective commit.
Eli Zaretskii <eliz@gnu.org>
parents: 106550
diff changeset
2919
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2920 /* Defined in xdisp.c */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2921
110645
7d7a02c19d8c Fix int/EMACS_INT use in xdisp.c and print.c.
Eli Zaretskii <eliz@gnu.org>
parents: 110600
diff changeset
2922 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
2923 struct glyph_row *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2924 struct glyph_row *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2925 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
2926 EMACS_INT);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2927 int line_bottom_y (struct it *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2928 int display_prop_intangible_p (Lisp_Object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2929 void resize_echo_area_exactly (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2930 int resize_mini_window (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2931 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
2932 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
2933 int window_box_height (struct window *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2934 int window_text_bottom_y (struct window *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2935 int window_box_width (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2936 int window_box_left (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2937 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
2938 int window_box_right (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2939 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
2940 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
2941 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
2942 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
2943 NativeRectangle *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2944 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
2945 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
2946
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2947 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
2948 void redisplay_preserve_echo_area (int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2949 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
2950 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
2951 int, int);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2952 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
2953 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
2954 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
2955 struct glyph_row *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2956 int get_next_display_element (struct it *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2957 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
2958 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
2959 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
2960 void move_it_vertically (struct it *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2961 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
2962 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
2963 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
2964 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
2965 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
2966 enum move_operation_enum op);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2967 int in_display_vector_p (struct it *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2968 int frame_mode_line_height (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2969 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
2970 extern Lisp_Object Qtool_bar;
25303
9cdb001b8bcb (struct it): Remove member
Gerd Moellmann <gerd@gnu.org>
parents: 25185
diff changeset
2971 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
2972 extern int mode_line_in_non_selected_windows;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2973 extern int redisplaying_p;
31875
11ea7b711a85 (help_echo_showing_p): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 31177
diff changeset
2974 extern int help_echo_showing_p;
33460
c80efdb9cea9 (CURRENT_MODE_LINE_HEIGHT)
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
2975 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
2976 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
2977 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
2978 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
2979 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
2980 extern int last_tool_bar_item;
72736
f6b18b9949d1 * xdisp.c (mouse_autoselect_window): Removed.
Chong Yidong <cyd@stupidchicken.com>
parents: 71795
diff changeset
2981 extern Lisp_Object Vmouse_autoselect_window;
68666
19e332a980f7 (unibyte_display_via_language_environment): Extern
Kenichi Handa <handa@m17n.org>
parents: 68651
diff changeset
2982 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
2983 extern EMACS_INT underline_minimum_offset;
68666
19e332a980f7 (unibyte_display_via_language_environment): Extern
Kenichi Handa <handa@m17n.org>
parents: 68651
diff changeset
2984
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2985 extern void reseat_at_previous_visible_line_start (struct it *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2986
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2987 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
2988 struct font *, int, int *);
54426
f3bbed2e1849 (calc_pixel_width_or_height): Add prototype.
Kim F. Storm <storm@cua.dk>
parents: 54390
diff changeset
2989
50217
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
2990 #ifdef HAVE_WINDOW_SYSTEM
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
2991
50149
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
2992 #if GLYPH_DEBUG
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2993 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
2994 #endif
5d83d663737a (struct glyph): Reduce face_id member from 22 to
Kim F. Storm <storm@cua.dk>
parents: 50095
diff changeset
2995
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2996 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
2997 int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2998 extern void x_produce_glyphs (struct it *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
2999
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3000 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
3001 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
3002 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
3003
10510d1bf1b6 * dispextern.h (Display_Info): Generic typedef for *_display_info.
Kim F. Storm <storm@cua.dk>
parents: 50193
diff changeset
3004 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
3005 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
3006
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3007 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
3008 enum glyph_row_area, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3009 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
3010 struct glyph_row *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3011 enum draw_glyphs_face);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3012 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
3013 struct glyph *, int *, int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3014 extern void erase_phys_cursor (struct window *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3015 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
3016 int, int, int, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3017
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3018 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
3019 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
3020
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3021 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
3022 extern void x_clear_cursor (struct window *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3023 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
3024
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3025 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
3026 NativeRectangle *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3027 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
3028 NativeRectangle *nr);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3029 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
3030
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3031 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
3032 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
3033
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3034 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
3035 extern int x_intersect_rectangles (XRectangle *, XRectangle *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3036 XRectangle *);
111339
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
3037 #endif /* HAVE_WINDOW_SYSTEM */
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
3038
e302712538dc Unify mouse highlight code of MSDOS and GUI sessions.
Eli Zaretskii <eliz@gnu.org>
parents: 110645
diff changeset
3039 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
3040 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
3041 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
3042 extern void cancel_mouse_face (struct frame *);
111344
b775602e70c8 Cleanup fallout from redesigning mouse highlight.
Eli Zaretskii <eliz@gnu.org>
parents: 111340
diff changeset
3043 extern int clear_mouse_face (Mouse_HLInfo *);
b775602e70c8 Cleanup fallout from redesigning mouse highlight.
Eli Zaretskii <eliz@gnu.org>
parents: 111340
diff changeset
3044 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
3045 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
3046 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
3047 int, int, enum draw_glyphs_face);
111344
b775602e70c8 Cleanup fallout from redesigning mouse highlight.
Eli Zaretskii <eliz@gnu.org>
parents: 111340
diff changeset
3048 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
3049 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
3050
107818
c7670de45d8a Don't abort try_window with fonts change when showing tooltip (Bug#2423).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 107713
diff changeset
3051 /* Flags passed to try_window. */
c7670de45d8a Don't abort try_window with fonts change when showing tooltip (Bug#2423).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 107713
diff changeset
3052 #define TRY_WINDOW_CHECK_MARGINS (1 << 0)
c7670de45d8a Don't abort try_window with fonts change when showing tooltip (Bug#2423).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 107713
diff changeset
3053 #define TRY_WINDOW_IGNORE_FONTS_CHANGE (1 << 1)
c7670de45d8a Don't abort try_window with fonts change when showing tooltip (Bug#2423).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 107713
diff changeset
3054
53880
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
3055 /* Defined in fringe.c */
c3e8576e5ba2 (FRINGE_ID_BITS): New definition for number of
Kim F. Storm <storm@cua.dk>
parents: 53604
diff changeset
3056
109635
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109555
diff changeset
3057 extern Lisp_Object Voverflow_newline_into_fringe;
57269
3ff2bf32d84d (lookup_fringe_bitmap): Add prototype.
Kim F. Storm <storm@cua.dk>
parents: 57259
diff changeset
3058 int lookup_fringe_bitmap (Lisp_Object);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3059 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
3060 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
3061 int draw_window_fringes (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3062 int update_window_fringes (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3063 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
3064
87278
153b9f19471f (WINDOWS_NT): Fix incorrect spelling of WINDOWSNT.
Eli Zaretskii <eliz@gnu.org>
parents: 85973
diff changeset
3065 #ifdef WINDOWSNT
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3066 void w32_init_fringe (struct redisplay_interface *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3067 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
3068 #endif
54343
02a264d3657d Image consolidation:
Kim F. Storm <storm@cua.dk>
parents: 54150
diff changeset
3069 /* Defined in image.c */
02a264d3657d Image consolidation:
Kim F. Storm <storm@cua.dk>
parents: 54150
diff changeset
3070
54356
f98f5b3f382d Move image related prototypes from xfns.c section to image.c.
Kim F. Storm <storm@cua.dk>
parents: 54343
diff changeset
3071 #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
3072
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3073 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
3074 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
3075 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
3076 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
3077 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
3078 unsigned int, unsigned int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3079 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
3080 #if defined (HAVE_XPM) && defined (HAVE_X_WINDOWS)
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3081 extern int x_create_bitmap_from_xpm_data (struct frame *f, char **bits);
73322
d0bb9a8883d1 Declare x_create_bitmap_from_xpm_data.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 72736
diff changeset
3082 #endif
54343
02a264d3657d Image consolidation:
Kim F. Storm <storm@cua.dk>
parents: 54150
diff changeset
3083 #ifndef x_destroy_bitmap
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3084 extern void x_destroy_bitmap (struct frame *, int);
54343
02a264d3657d Image consolidation:
Kim F. Storm <storm@cua.dk>
parents: 54150
diff changeset
3085 #endif
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3086 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
3087 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
3088 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
3089
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3090 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
3091 struct image_cache *make_image_cache (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3092 void free_image_cache (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3093 void clear_image_caches (Lisp_Object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3094 void mark_image_cache (struct image_cache *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3095 int valid_image_p (Lisp_Object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3096 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
3097 int lookup_image (struct frame *, Lisp_Object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3098
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3099 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
3100 XImagePtr_or_DC ximg);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3101 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
3102 XImagePtr_or_DC mask);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3103
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3104 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
3105
54356
f98f5b3f382d Move image related prototypes from xfns.c section to image.c.
Kim F. Storm <storm@cua.dk>
parents: 54343
diff changeset
3106 #endif
f98f5b3f382d Move image related prototypes from xfns.c section to image.c.
Kim F. Storm <storm@cua.dk>
parents: 54343
diff changeset
3107
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3108 /* Defined in sysdep.c */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3109
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3110 void get_tty_size (int, int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3111 void request_sigio (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3112 void unrequest_sigio (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3113 int tabs_safe_p (int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3114 void init_baud_rate (int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3115 void init_sigio (int);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3116
25881
54d9b33d9c4b (enum face_id): Add MENU_FACE_ID.
Gerd Moellmann <gerd@gnu.org>
parents: 25796
diff changeset
3117 /* Defined in xfaces.c */
54d9b33d9c4b (enum face_id): Add MENU_FACE_ID.
Gerd Moellmann <gerd@gnu.org>
parents: 25796
diff changeset
3118
27961
c6664d216f5a (x_free_colors): Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 27859
diff changeset
3119 #ifdef HAVE_X_WINDOWS
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3120 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
3121 #endif
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3122
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3123 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
3124 Lisp_Object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3125 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
3126 void clear_face_cache (int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3127 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
3128 enum lface_attribute_index);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3129 void unload_color (struct frame *, unsigned long);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3130 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
3131 int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3132 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
3133 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
3134 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
3135 int lookup_face (struct frame *, Lisp_Object *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3136 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
3137 int lookup_basic_face (struct frame *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3138 int smaller_face (struct frame *, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3139 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
3140 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
3141 void init_frame_faces (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3142 void free_frame_faces (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3143 void recompute_basic_faces (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3144 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
3145 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
3146 EMACS_INT *endptr, EMACS_INT limit,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3147 int mouse, int base_face_id);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3148 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
3149 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
3150 EMACS_INT *endptr, EMACS_INT limit,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3151 int mouse, Lisp_Object overlay);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3152 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
3153 EMACS_INT pos, EMACS_INT bufpos,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3154 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
3155 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
3156 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
3157 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
3158 void free_all_realized_faces (Lisp_Object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3159 void free_realized_face (struct frame *, struct face *);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3160 extern Lisp_Object Qforeground_color, Qbackground_color;
63641
0e9b134bfaa1 Add extern Qframe_set_background_mode.
Juri Linkov <juri@jurta.org>
parents: 63594
diff changeset
3161 extern Lisp_Object Qframe_set_background_mode;
32543
4ea276abceba (unspecified_fg, unspecified_bg): Declare.
Eli Zaretskii <eliz@gnu.org>
parents: 32459
diff changeset
3162 extern char unspecified_fg[], unspecified_bg[];
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3163
95457
415f68458e61 Implement face-remapping-alist feature
Miles Bader <miles@gnu.org>
parents: 95208
diff changeset
3164 extern Lisp_Object Vface_remapping_alist;
415f68458e61 Implement face-remapping-alist feature
Miles Bader <miles@gnu.org>
parents: 95208
diff changeset
3165
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3166 /* Defined in xfns.c */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3167
27626
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
3168 #ifdef HAVE_X_WINDOWS
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3169 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
3170 #endif
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
3171 #ifdef WINDOWSNT
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3172 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
3173 #endif
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
3174
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
3175 #ifdef HAVE_WINDOW_SYSTEM
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
3176
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3177 int x_screen_planes (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3178 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
3179
34447
387e9f41661e Change external declaration of tip_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 34280
diff changeset
3180 extern Lisp_Object tip_frame;
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3181 extern Window tip_window;
30225
2e0e027ab8f8 (Fx_show_tip): Adjust number of parameters
Gerd Moellmann <gerd@gnu.org>
parents: 30162
diff changeset
3182 EXFUN (Fx_show_tip, 6);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3183 EXFUN (Fx_hide_tip, 0);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3184 extern void start_hourglass (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3185 extern void cancel_hourglass (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3186 extern int hourglass_started (void);
36250
3c4e5b3d7c4a (start_hourglass, cancel_hourglass)
Gerd Moellmann <gerd@gnu.org>
parents: 36200
diff changeset
3187 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
3188 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
3189 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
3190 /* 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
3191 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
3192 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
3193
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
3194 /* 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
3195 extern void show_hourglass (struct atimer *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3196 extern void hide_hourglass (void);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3197
40263
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3198 /* 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
3199 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
3200 the heuristic. */
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3201
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3202 #define IMAGE_BACKGROUND(img, f, ximg) \
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3203 ((img)->background_valid \
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3204 ? (img)->background \
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3205 : image_background (img, f, ximg))
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3206
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3207 /* 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
3208 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
3209 object to use for the heuristic. */
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3210
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3211 #define IMAGE_BACKGROUND_TRANSPARENT(img, f, mask) \
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3212 ((img)->background_transparent_valid \
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3213 ? (img)->background_transparent \
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3214 : image_background_transparent (img, f, mask))
3657a6c97b2f (struct image): Add `background', `background_valid', and
Miles Bader <miles@gnu.org>
parents: 40243
diff changeset
3215
27626
79dc811783de Change HAVE_X_WINDOWS to HAVE_WINDOW_SYSTEM,
Andrew Innes <andrewi@gnu.org>
parents: 27002
diff changeset
3216 #endif /* HAVE_WINDOW_SYSTEM */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3217
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3218
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3219 /* Defined in xmenu.c */
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3220
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3221 int popup_activated (void);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3222
25344
98eb0a0280e7 (NO_PROMPT_IN_BUFFER): Removed.
Gerd Moellmann <gerd@gnu.org>
parents: 25303
diff changeset
3223 /* Defined in dispnew.c */
98eb0a0280e7 (NO_PROMPT_IN_BUFFER): Removed.
Gerd Moellmann <gerd@gnu.org>
parents: 25303
diff changeset
3224
37609
c6d7c9d92543 (inverse_video): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 36937
diff changeset
3225 extern int inverse_video;
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3226 extern int required_matrix_width (struct window *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3227 extern int required_matrix_height (struct window *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3228 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
3229 int *, int *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3230 struct display_pos *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3231 Lisp_Object *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3232 int *, int *, int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3233 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
3234 int *, int *, EMACS_INT *,
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3235 Lisp_Object *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3236 int *, int *, int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3237 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
3238 int *, int *, EMACS_INT *,
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3239 Lisp_Object *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3240 int *, int *, int *, int *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3241 extern void redraw_frame (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3242 extern void redraw_garbaged_frames (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3243 extern void cancel_line (int, struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3244 extern void init_desired_glyphs (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3245 extern int scroll_frame_lines (struct frame *, int, int, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3246 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
3247 extern int scrolling (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3248 extern void bitch_at_user (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3249 void adjust_glyphs (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3250 void free_glyphs (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3251 void free_window_matrices (struct window *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3252 void check_glyph_memory (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3253 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
3254 void clear_glyph_matrix (struct glyph_matrix *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3255 void clear_current_matrices (struct frame *f);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3256 void clear_desired_matrices (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3257 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
3258 int, int, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3259 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
3260 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
3261 int, int, EMACS_INT, EMACS_INT);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3262 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
3263 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
3264 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
3265 void clear_glyph_row (struct glyph_row *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3266 void prepare_desired_row (struct glyph_row *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3267 int line_hash_code (struct glyph_row *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3268 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
3269 void update_single_window (struct window *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3270 void do_pending_window_change (int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3271 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
3272 void init_display (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3273 void syms_of_display (void);
30722
1c138ac4bf6d (Qredisplay_dont_pause): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 30475
diff changeset
3274 extern Lisp_Object Qredisplay_dont_pause;
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3275 void spec_glyph_lookup_face (struct window *, GLYPH *);
21515
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 17028
diff changeset
3276
83420
521d3f18b3d1 Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents: 83400
diff changeset
3277 /* Defined in terminal.c */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3278
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3279 extern void ring_bell (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3280 extern void update_begin (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3281 extern void update_end (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3282 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
3283 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
3284 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
3285 extern void clear_to_end (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3286 extern void clear_frame (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3287 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
3288 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
3289 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
3290 extern void delete_glyphs (struct frame *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3291 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
3292
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3293 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
3294
521d3f18b3d1 Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents: 83400
diff changeset
3295
521d3f18b3d1 Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents: 83400
diff changeset
3296 /* 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
3297
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3298 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
3299 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
3300 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
3301 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
3302 extern int string_cost (const char *);
64732fa6188a Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109717
diff changeset
3303 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
3304 extern void calculate_costs (struct frame *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3305 extern void produce_glyphs (struct it *);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3306 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
3307 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
3308 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
3309 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
3310 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
3311 EXFUN (Ftty_type, 1);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3312 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
3313 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
3314
21515
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 17028
diff changeset
3315
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 17028
diff changeset
3316 /* Defined in scroll.c */
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3317
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3318 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
3319 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
3320 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
3321 char *, char *, char *,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3322 char *, char *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3323 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
3324 int *, int);
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3325
50356
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3326 /* Defined in frame.c */
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3327
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3328 #ifdef HAVE_WINDOW_SYSTEM
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3329
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3330 /* Types we might convert a resource string into. */
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3331 enum resource_types
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3332 {
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3333 RES_TYPE_NUMBER,
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3334 RES_TYPE_FLOAT,
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3335 RES_TYPE_BOOLEAN,
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3336 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
3337 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
3338 RES_TYPE_BOOLEAN_NUMBER
50356
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3339 };
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3340
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3341 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
3342 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
3343 enum resource_types);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3344 extern Lisp_Object x_frame_get_arg (struct frame *, Lisp_Object,
109555
05e7e7c46ff0 Use const, move declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109302
diff changeset
3345 Lisp_Object, const char *, const char *,
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3346 enum resource_types);
109555
05e7e7c46ff0 Use const, move declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109302
diff changeset
3347 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
3348 Lisp_Object,
05e7e7c46ff0 Use const, move declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109302
diff changeset
3349 const char *, const char *,
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3350 enum resource_types);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3351 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
3352 Lisp_Object, Lisp_Object,
109555
05e7e7c46ff0 Use const, move declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109302
diff changeset
3353 const char *, const char *,
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 108760
diff changeset
3354 enum resource_types);
50356
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3355
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3356 #endif /* HAVE_WINDOW_SYSTEM */
933b5f877c91 (frame_parm_handler): New typedef.
Kim F. Storm <storm@cua.dk>
parents: 50301
diff changeset
3357
25012
583c6bc7fe82 Complete rewrite.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
3358 #endif /* not DISPEXTERN_H_INCLUDED */
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51192
diff changeset
3359
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51192
diff changeset
3360 /* arch-tag: c65c475f-1c1e-4534-8795-990b8509fd65
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51192
diff changeset
3361 (do not change this comment) */