annotate src/dispextern.h @ 110964:388aaaced495

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