annotate src/dispextern.h @ 111237:6788b08ca420

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