annotate src/fringe.c @ 53879:e3771c262410

New file. Move original fringe related declarations and code from dispextern.h and xdisp.c here. Rework code to support user defined fringe bitmaps, redefining standard bitmaps, ability to overlay user defined bitmap with overlay arrow bitmap, and add faces to bitmaps. (Voverflow_newline_into_fringe): Declare here. (enum fringe_bitmap_align): New enum. (..._bits): All bitmaps are now defined without bitswapping; that is now done in init_fringe_once (if necessary). (standard_bitmaps): New array with specifications for the standard fringe bitmaps. (fringe_faces): New array. (valid_fringe_bitmap_id_p): New function. (draw_fringe_bitmap_1): Rename from draw_fringe_bitmap. (draw_fringe_bitmap): New function which draws fringe bitmap, possibly overlaying bitmap with cursor in right fringe or the overlay arrow in the left fringe. (update_window_fringes): Do not handle overlay arrow here. Compare and copy fringe bitmap faces. (init_fringe_bitmap): New function. (Fdefine_fringe_bitmap, Fdestroy_fringe_bitmap): New DEFUNs to define and destroy user defined fringe bitmaps. (Fset_fringe_bitmap_face): New DEFUN to set face for a fringe bitmap. (Ffringe_bitmaps_at_pos): New DEFUN to read current fringe bitmaps. (syms_of_fringe): New function. Defsubr new DEFUNs. DEFVAR_LISP Voverflow_newline_into_fringe. (init_fringe_once, init_fringe): New functions. (w32_init_fringe, w32_reset_fringes) [WINDOWS_NT]: New functions.
author Kim F. Storm <storm@cua.dk>
date Sun, 08 Feb 2004 23:18:16 +0000
parents
children 5d607f751ba3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
53879
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1 /* Fringe handling (split from xdisp.c).
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
2 Copyright (C) 1985,86,87,88,93,94,95,97,98,99,2000,01,02,03,04
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
3 Free Software Foundation, Inc.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
4
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
5 This file is part of GNU Emacs.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
6
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
7 GNU Emacs is free software; you can redistribute it and/or modify
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
8 it under the terms of the GNU General Public License as published by
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
9 the Free Software Foundation; either version 2, or (at your option)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
10 any later version.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
11
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
12 GNU Emacs is distributed in the hope that it will be useful,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
15 GNU General Public License for more details.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
16
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
18 along with GNU Emacs; see the file COPYING. If not, write to
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
20 Boston, MA 02111-1307, USA. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
21
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
22 #include <config.h>
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
23 #include <stdio.h>
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
24
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
25 #include "lisp.h"
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
26 #include "frame.h"
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
27 #include "window.h"
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
28 #include "dispextern.h"
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
29 #include "buffer.h"
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
30 #include "blockinput.h"
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
31
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
32 #ifdef HAVE_WINDOW_SYSTEM
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
33
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
34 extern Lisp_Object Qtop, Qbottom, Qcenter;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
35
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
36 /* Non-nil means that newline may flow into the right fringe. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
37
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
38 Lisp_Object Voverflow_newline_into_fringe;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
39
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
40
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
41 enum fringe_bitmap_type
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
42 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
43 NO_FRINGE_BITMAP = 0,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
44 UNDEF_FRINGE_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
45 LEFT_TRUNCATION_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
46 RIGHT_TRUNCATION_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
47 UP_ARROW_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
48 DOWN_ARROW_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
49 CONTINUED_LINE_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
50 CONTINUATION_LINE_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
51 OVERLAY_ARROW_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
52 TOP_LEFT_ANGLE_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
53 TOP_RIGHT_ANGLE_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
54 BOTTOM_LEFT_ANGLE_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
55 BOTTOM_RIGHT_ANGLE_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
56 LEFT_BRACKET_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
57 RIGHT_BRACKET_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
58 FILLED_BOX_CURSOR_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
59 HOLLOW_BOX_CURSOR_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
60 HOLLOW_SQUARE_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
61 BAR_CURSOR_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
62 HBAR_CURSOR_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
63 ZV_LINE_BITMAP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
64 MAX_STANDARD_FRINGE_BITMAPS
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
65 };
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
66
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
67 enum fringe_bitmap_align
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
68 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
69 ALIGN_BITMAP_CENTER = 0,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
70 ALIGN_BITMAP_TOP,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
71 ALIGN_BITMAP_BOTTOM
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
72 };
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
73
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
74 struct fringe_bitmap
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
75 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
76 unsigned char *bits;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
77 unsigned height : 8;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
78 unsigned width : 8;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
79 unsigned period : 8;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
80 unsigned align : 2;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
81 unsigned dynamic : 1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
82 };
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
83
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
84
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
85 /***********************************************************************
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
86 Fringe bitmaps
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
87 ***********************************************************************/
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
88
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
89 /* Undefined bitmap. A question mark. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
90 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
91 ..xxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
92 .xxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
93 xx....xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
94 xx....xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
95 ....xx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
96 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
97 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
98 ........
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
99 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
100 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
101 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
102 static unsigned char unknown_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
103 0x3c, 0x7e, 0x7e, 0x0c, 0x18, 0x18, 0x00, 0x18, 0x18};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
104
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
105 /* An arrow like this: `<-'. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
106 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
107 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
108 ..xx....
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
109 .xx.....
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
110 xxxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
111 xxxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
112 .xx.....
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
113 ..xx....
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
114 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
115 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
116 static unsigned char left_arrow_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
117 0x18, 0x30, 0x60, 0xfc, 0xfc, 0x60, 0x30, 0x18};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
118
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
119
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
120 /* Right truncation arrow bitmap `->'. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
121 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
122 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
123 ....xx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
124 .....xx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
125 ..xxxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
126 ..xxxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
127 .....xx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
128 ....xx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
129 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
130 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
131 static unsigned char right_arrow_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
132 0x18, 0x0c, 0x06, 0x3f, 0x3f, 0x06, 0x0c, 0x18};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
133
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
134
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
135 /* Up arrow bitmap. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
136 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
137 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
138 ..xxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
139 .xxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
140 xxxxxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
141 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
142 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
143 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
144 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
145 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
146 static unsigned char up_arrow_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
147 0x18, 0x3c, 0x7e, 0xff, 0x18, 0x18, 0x18, 0x18};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
148
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
149
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
150 /* Down arrow bitmap. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
151 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
152 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
153 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
154 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
155 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
156 xxxxxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
157 .xxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
158 ..xxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
159 ...xx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
160 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
161 static unsigned char down_arrow_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
162 0x18, 0x18, 0x18, 0x18, 0xff, 0x7e, 0x3c, 0x18};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
163
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
164 /* Marker for continued lines. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
165 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
166 ..xxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
167 ..xxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
168 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
169 ..x..xxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
170 ..xxxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
171 ..xxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
172 ..xxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
173 ..xxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
174 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
175 static unsigned char continued_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
176 0x3c, 0x3e, 0x03, 0x27, 0x3f, 0x3e, 0x3c, 0x3e};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
177
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
178 /* Marker for continuation lines. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
179 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
180 ..xxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
181 .xxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
182 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
183 xxx..x..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
184 xxxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
185 .xxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
186 ..xxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
187 .xxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
188 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
189 static unsigned char continuation_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
190 0x3c, 0x7c, 0xc0, 0xe4, 0xfc, 0x7c, 0x3c, 0x7c};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
191
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
192 /* Overlay arrow bitmap. A triangular arrow. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
193 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
194 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
195 xxxx....
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
196 xxxxx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
197 xxxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
198 xxxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
199 xxxxx...
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
200 xxxx....
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
201 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
202 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
203 static unsigned char ov_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
204 0xc0, 0xf0, 0xf8, 0xfc, 0xfc, 0xf8, 0xf0, 0xc0};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
205
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
206 #if 0
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
207 /* Reverse Overlay arrow bitmap. A triangular arrow. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
208 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
209 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
210 ....xxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
211 ...xxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
212 ..xxxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
213 ..xxxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
214 ...xxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
215 ....xxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
216 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
217 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
218 static unsigned char rev_ov_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
219 0x03, 0x0f, 0x1f, 0x3f, 0x3f, 0x1f, 0x0f, 0x03};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
220 #endif
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
221
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
222 /* First line bitmap. An top-left angle. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
223 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
224 xxxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
225 xxxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
226 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
227 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
228 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
229 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
230 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
231 ........
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
232 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
233 static unsigned char top_left_angle_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
234 0xfc, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
235
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
236 /* First line bitmap. An right-up angle. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
237 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
238 ..xxxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
239 ..xxxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
240 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
241 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
242 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
243 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
244 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
245 ........
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
246 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
247 static unsigned char top_right_angle_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
248 0x3f, 0x3f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
249
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
250 /* Last line bitmap. An left-down angle. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
251 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
252 ........
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
253 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
254 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
255 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
256 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
257 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
258 xxxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
259 xxxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
260 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
261 static unsigned char bottom_left_angle_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
262 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xfc};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
263
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
264 /* Last line bitmap. An right-down angle. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
265 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
266 ........
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
267 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
268 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
269 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
270 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
271 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
272 ..xxxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
273 ..xxxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
274 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
275 static unsigned char bottom_right_angle_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
276 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x3f, 0x3f};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
277
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
278 /* First/last line bitmap. An left bracket. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
279 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
280 xxxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
281 xxxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
282 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
283 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
284 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
285 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
286 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
287 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
288 xxxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
289 xxxxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
290 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
291 static unsigned char left_bracket_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
292 0xfc, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xfc};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
293
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
294 /* First/last line bitmap. An right bracket. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
295 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
296 ..xxxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
297 ..xxxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
298 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
299 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
300 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
301 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
302 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
303 ......xx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
304 ..xxxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
305 ..xxxxxx
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
306 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
307 static unsigned char right_bracket_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
308 0x3f, 0x3f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x3f, 0x3f};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
309
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
310 /* Filled box cursor bitmap. A filled box; max 13 pixels high. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
311 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
312 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
313 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
314 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
315 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
316 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
317 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
318 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
319 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
320 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
321 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
322 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
323 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
324 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
325 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
326 static unsigned char filled_box_cursor_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
327 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
328
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
329 /* Hollow box cursor bitmap. A hollow box; max 13 pixels high. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
330 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
331 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
332 x.....x.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
333 x.....x.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
334 x.....x.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
335 x.....x.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
336 x.....x.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
337 x.....x.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
338 x.....x.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
339 x.....x.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
340 x.....x.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
341 x.....x.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
342 x.....x.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
343 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
344 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
345 static unsigned char hollow_box_cursor_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
346 0xfe, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0xfe};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
347
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
348 /* Bar cursor bitmap. A vertical bar; max 13 pixels high. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
349 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
350 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
351 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
352 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
353 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
354 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
355 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
356 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
357 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
358 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
359 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
360 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
361 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
362 xx......
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
363 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
364 static unsigned char bar_cursor_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
365 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
366
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
367 /* HBar cursor bitmap. A horisontal bar; 2 pixels high. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
368 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
369 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
370 xxxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
371 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
372 static unsigned char hbar_cursor_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
373 0xfe, 0xfe};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
374
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
375
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
376 /* Bitmap drawn to indicate lines not displaying text if
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
377 `indicate-empty-lines' is non-nil. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
378 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
379 ........
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
380 ..xxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
381 ........
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
382 ........
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
383 ..xxxx..
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
384 ........
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
385 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
386 static unsigned char zv_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
387 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
388 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
389 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
390 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
391 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
392 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
393 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
394 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
395
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
396 /* Hollow square bitmap. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
397 /*
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
398 .xxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
399 .x....x.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
400 .x....x.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
401 .x....x.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
402 .x....x.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
403 .xxxxxx.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
404 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
405 static unsigned char hollow_square_bits[] = {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
406 0x7e, 0x42, 0x42, 0x42, 0x42, 0x7e};
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
407
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
408
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
409
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
410 #define FRBITS(bits) bits, sizeof bits
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
411 struct fringe_bitmap standard_bitmaps[MAX_STANDARD_FRINGE_BITMAPS] =
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
412 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
413 { NULL, 0, 0, 0, 0, 0 }, /* NO_FRINGE_BITMAP */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
414 { FRBITS (unknown_bits), 8, 0, ALIGN_BITMAP_CENTER, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
415 { FRBITS (left_arrow_bits), 8, 0, ALIGN_BITMAP_CENTER, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
416 { FRBITS (right_arrow_bits), 8, 0, ALIGN_BITMAP_CENTER, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
417 { FRBITS (up_arrow_bits), 8, 0, ALIGN_BITMAP_TOP, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
418 { FRBITS (down_arrow_bits), 8, 0, ALIGN_BITMAP_BOTTOM, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
419 { FRBITS (continued_bits), 8, 0, ALIGN_BITMAP_CENTER, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
420 { FRBITS (continuation_bits), 8, 0, ALIGN_BITMAP_CENTER, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
421 { FRBITS (ov_bits), 8, 0, ALIGN_BITMAP_CENTER, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
422 { FRBITS (top_left_angle_bits), 8, 0, ALIGN_BITMAP_TOP, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
423 { FRBITS (top_right_angle_bits), 8, 0, ALIGN_BITMAP_TOP, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
424 { FRBITS (bottom_left_angle_bits), 8, 0, ALIGN_BITMAP_BOTTOM, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
425 { FRBITS (bottom_right_angle_bits), 8, 0, ALIGN_BITMAP_BOTTOM, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
426 { FRBITS (left_bracket_bits), 8, 0, ALIGN_BITMAP_CENTER, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
427 { FRBITS (right_bracket_bits), 8, 0, ALIGN_BITMAP_CENTER, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
428 { FRBITS (filled_box_cursor_bits), 8, 0, ALIGN_BITMAP_CENTER, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
429 { FRBITS (hollow_box_cursor_bits), 8, 0, ALIGN_BITMAP_CENTER, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
430 { FRBITS (hollow_square_bits), 8, 0, ALIGN_BITMAP_CENTER, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
431 { FRBITS (bar_cursor_bits), 8, 0, ALIGN_BITMAP_CENTER, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
432 { FRBITS (hbar_cursor_bits), 8, 0, ALIGN_BITMAP_BOTTOM, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
433 { FRBITS (zv_bits), 8, 3, ALIGN_BITMAP_TOP, 0 },
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
434 };
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
435
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
436 static struct fringe_bitmap *fringe_bitmaps[MAX_FRINGE_BITMAPS];
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
437 static unsigned fringe_faces[MAX_FRINGE_BITMAPS];
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
438
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
439 static int max_used_fringe_bitmap = MAX_STANDARD_FRINGE_BITMAPS;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
440
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
441 /* Return 1 if FRINGE_ID is a valid fringe bitmap id. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
442
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
443 int
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
444 valid_fringe_bitmap_id_p (fringe_id)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
445 int fringe_id;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
446 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
447 return (fringe_id >= NO_FRINGE_BITMAP
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
448 && fringe_id < max_used_fringe_bitmap
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
449 && (fringe_id < MAX_STANDARD_FRINGE_BITMAPS
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
450 || fringe_bitmaps[fringe_id] != NULL));
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
451 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
452
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
453 /* Draw the bitmap WHICH in one of the left or right fringes of
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
454 window W. ROW is the glyph row for which to display the bitmap; it
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
455 determines the vertical position at which the bitmap has to be
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
456 drawn.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
457 LEFT_P is 1 for left fringe, 0 for right fringe.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
458 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
459
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
460 void
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
461 draw_fringe_bitmap_1 (w, row, left_p, overlay, which)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
462 struct window *w;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
463 struct glyph_row *row;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
464 int left_p, overlay;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
465 enum fringe_bitmap_type which;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
466 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
467 struct frame *f = XFRAME (WINDOW_FRAME (w));
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
468 struct draw_fringe_bitmap_params p;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
469 struct fringe_bitmap *fb;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
470 int period;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
471 int face_id = DEFAULT_FACE_ID;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
472
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
473 p.cursor_p = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
474 p.overlay_p = (overlay & 1) == 1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
475 p.cursor_p = (overlay & 2) == 2;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
476
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
477 if (which != NO_FRINGE_BITMAP)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
478 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
479 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
480 else if (left_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
481 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
482 which = row->left_fringe_bitmap;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
483 face_id = row->left_fringe_face_id;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
484 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
485 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
486 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
487 which = row->right_fringe_bitmap;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
488 face_id = row->right_fringe_face_id;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
489 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
490
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
491 if (face_id == DEFAULT_FACE_ID)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
492 face_id = fringe_faces[which];
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
493
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
494 fb = fringe_bitmaps[which];
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
495 if (fb == NULL)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
496 fb = &standard_bitmaps[which < MAX_STANDARD_FRINGE_BITMAPS
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
497 ? which : UNDEF_FRINGE_BITMAP];
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
498
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
499 period = fb->period;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
500
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
501 /* Convert row to frame coordinates. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
502 p.y = WINDOW_TO_FRAME_PIXEL_Y (w, row->y);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
503
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
504 p.which = which;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
505 p.bits = fb->bits;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
506 p.wd = fb->width;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
507
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
508 p.h = fb->height;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
509 p.dh = (period > 0 ? (p.y % period) : 0);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
510 p.h -= p.dh;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
511 /* Clip bitmap if too high. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
512 if (p.h > row->height)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
513 p.h = row->height;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
514
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
515 p.face = FACE_FROM_ID (f, face_id);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
516
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
517 if (p.face == NULL)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
518 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
519 /* Why does this happen? ++kfs */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
520 return;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
521 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
522
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
523 PREPARE_FACE_FOR_DISPLAY (f, p.face);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
524
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
525 /* Clear left fringe if no bitmap to draw or if bitmap doesn't fill
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
526 the fringe. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
527 p.bx = -1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
528 if (left_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
529 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
530 int wd = WINDOW_LEFT_FRINGE_WIDTH (w);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
531 int x = window_box_left (w, (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
532 ? LEFT_MARGIN_AREA
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
533 : TEXT_AREA));
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
534 if (p.wd > wd)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
535 p.wd = wd;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
536 p.x = x - p.wd - (wd - p.wd) / 2;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
537
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
538 if (p.wd < wd || row->height > p.h)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
539 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
540 /* If W has a vertical border to its left, don't draw over it. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
541 wd -= ((!WINDOW_LEFTMOST_P (w)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
542 && !WINDOW_HAS_VERTICAL_SCROLL_BAR (w))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
543 ? 1 : 0);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
544 p.bx = x - wd;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
545 p.nx = wd;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
546 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
547 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
548 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
549 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
550 int x = window_box_right (w,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
551 (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
552 ? RIGHT_MARGIN_AREA
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
553 : TEXT_AREA));
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
554 int wd = WINDOW_RIGHT_FRINGE_WIDTH (w);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
555 if (p.wd > wd)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
556 p.wd = wd;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
557 p.x = x + (wd - p.wd) / 2;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
558 /* Clear right fringe if no bitmap to draw of if bitmap doesn't fill
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
559 the fringe. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
560 if (p.wd < wd || row->height > p.h)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
561 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
562 p.bx = x;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
563 p.nx = wd;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
564 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
565 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
566
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
567 if (p.bx >= 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
568 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
569 int header_line_height = WINDOW_HEADER_LINE_HEIGHT (w);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
570
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
571 p.by = WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height, row->y));
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
572 p.ny = row->visible_height;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
573 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
574
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
575 /* Adjust y to the offset in the row to start drawing the bitmap. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
576 switch (fb->align)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
577 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
578 case ALIGN_BITMAP_CENTER:
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
579 p.y += (row->height - p.h) / 2;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
580 break;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
581 case ALIGN_BITMAP_BOTTOM:
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
582 p.h = fb->height;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
583 p.y += (row->visible_height - p.h);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
584 break;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
585 case ALIGN_BITMAP_TOP:
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
586 break;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
587 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
588
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
589 rif->draw_fringe_bitmap (w, row, &p);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
590 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
591
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
592 void
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
593 draw_fringe_bitmap (w, row, left_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
594 struct window *w;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
595 struct glyph_row *row;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
596 int left_p;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
597 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
598 int overlay = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
599
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
600 if (!left_p && row->cursor_in_fringe_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
601 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
602 int cursor = NO_FRINGE_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
603
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
604 switch (w->phys_cursor_type)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
605 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
606 case HOLLOW_BOX_CURSOR:
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
607 if (row->visible_height >= sizeof(hollow_box_cursor_bits))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
608 cursor = HOLLOW_BOX_CURSOR_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
609 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
610 cursor = HOLLOW_SQUARE_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
611 break;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
612 case FILLED_BOX_CURSOR:
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
613 cursor = FILLED_BOX_CURSOR_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
614 break;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
615 case BAR_CURSOR:
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
616 cursor = BAR_CURSOR_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
617 break;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
618 case HBAR_CURSOR:
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
619 cursor = HBAR_CURSOR_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
620 break;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
621 case NO_CURSOR:
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
622 default:
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
623 w->phys_cursor_on_p = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
624 row->cursor_in_fringe_p = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
625 break;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
626 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
627 if (cursor != NO_FRINGE_BITMAP)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
628 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
629 draw_fringe_bitmap_1 (w, row, 0, 2, cursor);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
630 overlay = cursor == FILLED_BOX_CURSOR_BITMAP ? 3 : 1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
631 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
632 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
633
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
634 draw_fringe_bitmap_1 (w, row, left_p, overlay, NO_FRINGE_BITMAP);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
635
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
636 if (left_p && row->overlay_arrow_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
637 draw_fringe_bitmap_1 (w, row, 1, 1, OVERLAY_ARROW_BITMAP);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
638 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
639
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
640
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
641 /* Draw fringe bitmaps for glyph row ROW on window W. Call this
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
642 function with input blocked. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
643
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
644 void
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
645 draw_row_fringe_bitmaps (w, row)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
646 struct window *w;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
647 struct glyph_row *row;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
648 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
649 xassert (interrupt_input_blocked);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
650
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
651 /* If row is completely invisible, because of vscrolling, we
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
652 don't have to draw anything. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
653 if (row->visible_height <= 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
654 return;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
655
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
656 if (WINDOW_LEFT_FRINGE_WIDTH (w) != 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
657 draw_fringe_bitmap (w, row, 1);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
658
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
659 if (WINDOW_RIGHT_FRINGE_WIDTH (w) != 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
660 draw_fringe_bitmap (w, row, 0);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
661 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
662
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
663 /* Draw the fringes of window W. Only fringes for rows marked for
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
664 update in redraw_fringe_bitmaps_p are drawn. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
665
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
666 void
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
667 draw_window_fringes (w)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
668 struct window *w;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
669 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
670 struct glyph_row *row;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
671 int yb = window_text_bottom_y (w);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
672 int nrows = w->current_matrix->nrows;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
673 int y = 0, rn;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
674
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
675 if (w->pseudo_window_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
676 return;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
677
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
678 for (y = 0, rn = 0, row = w->current_matrix->rows;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
679 y < yb && rn < nrows;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
680 y += row->height, ++row, ++rn)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
681 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
682 if (!row->redraw_fringe_bitmaps_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
683 continue;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
684 draw_row_fringe_bitmaps (w, row);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
685 row->redraw_fringe_bitmaps_p = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
686 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
687 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
688
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
689
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
690 /* Recalculate the bitmaps to show in the fringes of window W.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
691 If FORCE_P is 0, only mark rows with modified bitmaps for update in
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
692 redraw_fringe_bitmaps_p; else mark all rows for update. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
693
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
694 int
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
695 update_window_fringes (w, force_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
696 struct window *w;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
697 int force_p;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
698 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
699 struct glyph_row *row, *cur = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
700 int yb = window_text_bottom_y (w);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
701 int rn, nrows = w->current_matrix->nrows;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
702 int y;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
703 int redraw_p = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
704 Lisp_Object ind;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
705 int boundary_pos = 0, arrow_pos = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
706 int empty_pos = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
707
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
708 if (w->pseudo_window_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
709 return 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
710
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
711 if (!MINI_WINDOW_P (w)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
712 && (ind = XBUFFER (w->buffer)->indicate_buffer_boundaries, !NILP (ind)))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
713 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
714 int do_eob = 1, do_bob = 1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
715 Lisp_Object arrows;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
716
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
717 if (CONSP (ind))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
718 arrows = XCDR (ind), ind = XCAR (ind);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
719 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
720 arrows = ind;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
721
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
722 if (EQ (ind, Qleft))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
723 boundary_pos = -1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
724 else if (EQ (ind, Qright))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
725 boundary_pos = 1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
726
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
727 if (EQ (arrows, Qleft))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
728 arrow_pos = -1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
729 else if (EQ (arrows, Qright))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
730 arrow_pos = 1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
731
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
732 for (y = 0, rn = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
733 y < yb && rn < nrows;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
734 y += row->height, ++rn)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
735 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
736 unsigned indicate_bob_p, indicate_top_line_p;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
737 unsigned indicate_eob_p, indicate_bottom_line_p;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
738
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
739 row = w->desired_matrix->rows + rn;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
740 if (!row->enabled_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
741 row = w->current_matrix->rows + rn;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
742
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
743 indicate_bob_p = row->indicate_bob_p;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
744 indicate_top_line_p = row->indicate_top_line_p;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
745 indicate_eob_p = row->indicate_eob_p;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
746 indicate_bottom_line_p = row->indicate_bottom_line_p;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
747
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
748 row->indicate_bob_p = row->indicate_top_line_p = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
749 row->indicate_eob_p = row->indicate_bottom_line_p = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
750
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
751 if (!NILP (ind)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
752 && MATRIX_ROW_START_CHARPOS (row) <= BUF_BEGV (XBUFFER (w->buffer)))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
753 row->indicate_bob_p = do_bob, do_bob = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
754 else if (!NILP (arrows)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
755 && (WINDOW_WANTS_HEADER_LINE_P (w) ? 1 : 0) == rn)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
756 row->indicate_top_line_p = 1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
757
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
758 if (!NILP (ind)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
759 && MATRIX_ROW_END_CHARPOS (row) >= BUF_ZV (XBUFFER (w->buffer)))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
760 row->indicate_eob_p = do_eob, do_eob = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
761 else if (!NILP (arrows)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
762 && y + row->height >= yb)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
763 row->indicate_bottom_line_p = 1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
764
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
765 if (indicate_bob_p != row->indicate_bob_p
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
766 || indicate_top_line_p != row->indicate_top_line_p
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
767 || indicate_eob_p != row->indicate_eob_p
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
768 || indicate_bottom_line_p != row->indicate_bottom_line_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
769 row->redraw_fringe_bitmaps_p = 1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
770 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
771 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
772
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
773 if (EQ (XBUFFER (w->buffer)->indicate_empty_lines, Qright))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
774 empty_pos = 1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
775 else if (EQ (XBUFFER (w->buffer)->indicate_empty_lines, Qleft))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
776 empty_pos = -1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
777
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
778 for (y = 0, rn = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
779 y < yb && rn < nrows;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
780 y += row->height, rn++)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
781 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
782 enum fringe_bitmap_type left, right;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
783 unsigned left_face_id, right_face_id;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
784
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
785 row = w->desired_matrix->rows + rn;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
786 cur = w->current_matrix->rows + rn;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
787 if (!row->enabled_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
788 row = cur;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
789
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
790 left_face_id = right_face_id = DEFAULT_FACE_ID;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
791
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
792 /* Decide which bitmap to draw in the left fringe. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
793 if (WINDOW_LEFT_FRINGE_WIDTH (w) == 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
794 left = NO_FRINGE_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
795 else if (row->left_user_fringe_bitmap != NO_FRINGE_BITMAP)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
796 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
797 left = row->left_user_fringe_bitmap;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
798 left_face_id = row->left_user_fringe_face_id;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
799 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
800 #if 0 /* this is now done via an overlay */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
801 else if (row->overlay_arrow_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
802 left = OVERLAY_ARROW_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
803 #endif
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
804 else if (row->indicate_bob_p && boundary_pos <= 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
805 left = ((row->indicate_eob_p && boundary_pos < 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
806 ? LEFT_BRACKET_BITMAP : TOP_LEFT_ANGLE_BITMAP);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
807 else if (row->indicate_eob_p && boundary_pos < 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
808 left = BOTTOM_LEFT_ANGLE_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
809 else if (row->truncated_on_left_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
810 left = LEFT_TRUNCATION_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
811 else if (MATRIX_ROW_CONTINUATION_LINE_P (row))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
812 left = CONTINUATION_LINE_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
813 else if (row->indicate_empty_line_p && empty_pos <= 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
814 left = ZV_LINE_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
815 else if (row->indicate_top_line_p && arrow_pos <= 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
816 left = UP_ARROW_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
817 else if (row->indicate_bottom_line_p && arrow_pos < 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
818 left = DOWN_ARROW_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
819 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
820 left = NO_FRINGE_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
821
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
822 /* Decide which bitmap to draw in the right fringe. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
823 if (WINDOW_RIGHT_FRINGE_WIDTH (w) == 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
824 right = NO_FRINGE_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
825 else if (row->right_user_fringe_bitmap != NO_FRINGE_BITMAP)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
826 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
827 right = row->right_user_fringe_bitmap;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
828 right_face_id = row->right_user_fringe_face_id;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
829 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
830 else if (row->indicate_bob_p && boundary_pos > 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
831 right = ((row->indicate_eob_p && boundary_pos >= 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
832 ? RIGHT_BRACKET_BITMAP : TOP_RIGHT_ANGLE_BITMAP);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
833 else if (row->indicate_eob_p && boundary_pos >= 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
834 right = BOTTOM_RIGHT_ANGLE_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
835 else if (row->truncated_on_right_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
836 right = RIGHT_TRUNCATION_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
837 else if (row->continued_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
838 right = CONTINUED_LINE_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
839 else if (row->indicate_top_line_p && arrow_pos > 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
840 right = UP_ARROW_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
841 else if (row->indicate_bottom_line_p && arrow_pos >= 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
842 right = DOWN_ARROW_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
843 else if (row->indicate_empty_line_p
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
844 && (empty_pos > 0
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
845 || (WINDOW_LEFT_FRINGE_WIDTH (w) == 0 && empty_pos == 0)))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
846 right = ZV_LINE_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
847 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
848 right = NO_FRINGE_BITMAP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
849
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
850 if (force_p
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
851 || row->y != cur->y
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
852 || row->visible_height != cur->visible_height
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
853 || left != cur->left_fringe_bitmap
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
854 || right != cur->right_fringe_bitmap
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
855 || left_face_id != cur->left_fringe_face_id
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
856 || right_face_id != cur->right_fringe_face_id
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
857 || cur->redraw_fringe_bitmaps_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
858 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
859 redraw_p = row->redraw_fringe_bitmaps_p = cur->redraw_fringe_bitmaps_p = 1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
860 cur->left_fringe_bitmap = left;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
861 cur->right_fringe_bitmap = right;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
862 cur->left_fringe_face_id = left_face_id;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
863 cur->right_fringe_face_id = right_face_id;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
864 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
865
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
866 if (row->overlay_arrow_p != cur->overlay_arrow_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
867 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
868 redraw_p = row->redraw_fringe_bitmaps_p = cur->redraw_fringe_bitmaps_p = 1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
869 cur->overlay_arrow_p = row->overlay_arrow_p;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
870 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
871
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
872 row->left_fringe_bitmap = left;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
873 row->right_fringe_bitmap = right;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
874 row->left_fringe_face_id = left_face_id;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
875 row->right_fringe_face_id = right_face_id;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
876 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
877
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
878 return redraw_p;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
879 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
880
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
881
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
882 /* Compute actual fringe widths for frame F.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
883
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
884 If REDRAW is 1, redraw F if the fringe settings was actually
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
885 modified and F is visible.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
886
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
887 Since the combined left and right fringe must occupy an integral
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
888 number of columns, we may need to add some pixels to each fringe.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
889 Typically, we add an equal amount (+/- 1 pixel) to each fringe,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
890 but a negative width value is taken literally (after negating it).
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
891
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
892 We never make the fringes narrower than specified. It is planned
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
893 to make fringe bitmaps customizable and expandable, and at that
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
894 time, the user will typically specify the minimum number of pixels
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
895 needed for his bitmaps, so we shouldn't select anything less than
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
896 what is specified.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
897 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
898
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
899 void
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
900 compute_fringe_widths (f, redraw)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
901 struct frame *f;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
902 int redraw;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
903 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
904 int o_left = FRAME_LEFT_FRINGE_WIDTH (f);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
905 int o_right = FRAME_RIGHT_FRINGE_WIDTH (f);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
906 int o_cols = FRAME_FRINGE_COLS (f);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
907
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
908 Lisp_Object left_fringe = Fassq (Qleft_fringe, f->param_alist);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
909 Lisp_Object right_fringe = Fassq (Qright_fringe, f->param_alist);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
910 int left_fringe_width, right_fringe_width;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
911
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
912 if (!NILP (left_fringe))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
913 left_fringe = Fcdr (left_fringe);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
914 if (!NILP (right_fringe))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
915 right_fringe = Fcdr (right_fringe);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
916
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
917 left_fringe_width = ((NILP (left_fringe) || !INTEGERP (left_fringe)) ? 8 :
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
918 XINT (left_fringe));
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
919 right_fringe_width = ((NILP (right_fringe) || !INTEGERP (right_fringe)) ? 8 :
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
920 XINT (right_fringe));
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
921
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
922 if (left_fringe_width || right_fringe_width)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
923 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
924 int left_wid = left_fringe_width >= 0 ? left_fringe_width : -left_fringe_width;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
925 int right_wid = right_fringe_width >= 0 ? right_fringe_width : -right_fringe_width;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
926 int conf_wid = left_wid + right_wid;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
927 int font_wid = FRAME_COLUMN_WIDTH (f);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
928 int cols = (left_wid + right_wid + font_wid-1) / font_wid;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
929 int real_wid = cols * font_wid;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
930 if (left_wid && right_wid)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
931 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
932 if (left_fringe_width < 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
933 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
934 /* Left fringe width is fixed, adjust right fringe if necessary */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
935 FRAME_LEFT_FRINGE_WIDTH (f) = left_wid;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
936 FRAME_RIGHT_FRINGE_WIDTH (f) = real_wid - left_wid;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
937 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
938 else if (right_fringe_width < 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
939 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
940 /* Right fringe width is fixed, adjust left fringe if necessary */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
941 FRAME_LEFT_FRINGE_WIDTH (f) = real_wid - right_wid;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
942 FRAME_RIGHT_FRINGE_WIDTH (f) = right_wid;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
943 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
944 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
945 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
946 /* Adjust both fringes with an equal amount.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
947 Note that we are doing integer arithmetic here, so don't
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
948 lose a pixel if the total width is an odd number. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
949 int fill = real_wid - conf_wid;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
950 FRAME_LEFT_FRINGE_WIDTH (f) = left_wid + fill/2;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
951 FRAME_RIGHT_FRINGE_WIDTH (f) = right_wid + fill - fill/2;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
952 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
953 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
954 else if (left_fringe_width)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
955 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
956 FRAME_LEFT_FRINGE_WIDTH (f) = real_wid;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
957 FRAME_RIGHT_FRINGE_WIDTH (f) = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
958 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
959 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
960 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
961 FRAME_LEFT_FRINGE_WIDTH (f) = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
962 FRAME_RIGHT_FRINGE_WIDTH (f) = real_wid;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
963 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
964 FRAME_FRINGE_COLS (f) = cols;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
965 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
966 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
967 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
968 FRAME_LEFT_FRINGE_WIDTH (f) = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
969 FRAME_RIGHT_FRINGE_WIDTH (f) = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
970 FRAME_FRINGE_COLS (f) = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
971 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
972
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
973 if (redraw && FRAME_VISIBLE_P (f))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
974 if (o_left != FRAME_LEFT_FRINGE_WIDTH (f) ||
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
975 o_right != FRAME_RIGHT_FRINGE_WIDTH (f) ||
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
976 o_cols != FRAME_FRINGE_COLS (f))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
977 redraw_frame (f);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
978 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
979
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
980 DEFUN ("destroy-fringe-bitmap", Fdestroy_fringe_bitmap, Sdestroy_fringe_bitmap,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
981 1, 1, 0,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
982 doc: /* Destroy fringe bitmap WHICH.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
983 If WHICH overrides a standard fringe bitmap, the original bitmap is restored. */)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
984 (which)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
985 Lisp_Object which;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
986 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
987 int n;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
988 struct fringe_bitmap **fbp;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
989
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
990 CHECK_NUMBER (which);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
991 if (n = XINT (which), n >= max_used_fringe_bitmap)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
992 return Qnil;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
993
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
994 fringe_faces[n] = FRINGE_FACE_ID;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
995
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
996 fbp = &fringe_bitmaps[n];
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
997 if (*fbp && (*fbp)->dynamic)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
998 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
999 if (rif->destroy_fringe_bitmap)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1000 rif->destroy_fringe_bitmap (n);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1001 xfree (*fbp);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1002 *fbp = NULL;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1003 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1004
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1005 while (max_used_fringe_bitmap > MAX_STANDARD_FRINGE_BITMAPS
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1006 && fringe_bitmaps[max_used_fringe_bitmap - 1] == NULL)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1007 max_used_fringe_bitmap--;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1008
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1009 return Qnil;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1010 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1011
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1012
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1013 /* Initialize bitmap bit.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1014 On X and MAC, we bit-swap the built-in bitmaps.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1015 On W32, there's no need to do this.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1016 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1017
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1018 void
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1019 init_fringe_bitmap (which, fb, once_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1020 enum fringe_bitmap_type which;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1021 struct fringe_bitmap *fb;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1022 int once_p;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1023 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1024 if (once_p || fb->dynamic)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1025 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1026 #if defined (HAVE_X_WINDOWS) || defined (MAC_OS)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1027 unsigned char *bits = fb->bits;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1028 int j;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1029 for (j = 0; j < fb->height; j++)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1030 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1031 static unsigned char swap_nibble[16]
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1032 = { 0x0, 0x8, 0x4, 0xc, /* 0000 1000 0100 1100 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1033 0x2, 0xa, 0x6, 0xe, /* 0010 1010 0110 1110 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1034 0x1, 0x9, 0x5, 0xd, /* 0001 1001 0101 1101 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1035 0x3, 0xb, 0x7, 0xf }; /* 0011 1011 0111 1111 */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1036
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1037 unsigned char b = *bits;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1038 *bits++ = (unsigned short)((swap_nibble[b & 0xf]<<4)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1039 | (swap_nibble[(b>>4) & 0xf]));
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1040 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1041 #endif
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1042 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1043
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1044 if (!once_p)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1045 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1046 Fdestroy_fringe_bitmap (make_number (which));
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1047
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1048 if (rif->define_fringe_bitmap)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1049 rif->define_fringe_bitmap (which, fb->bits, fb->height, fb->width);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1050
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1051 fringe_bitmaps[which] = fb;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1052 if (which >= max_used_fringe_bitmap)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1053 max_used_fringe_bitmap = which + 1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1054 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1055 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1056
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1057
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1058 DEFUN ("define-fringe-bitmap", Fdefine_fringe_bitmap, Sdefine_fringe_bitmap,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1059 1, 5, 0,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1060 doc: /* Define a fringe bitmap from BITS of height HEIGHT and width WIDTH.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1061 BITS is either a string or a vector. If HEIGHT is nil, use number of bytes
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1062 in BITS. If WIDTH is zero, default to 8. Optional forth arg ALIGN may be
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1063 one of `top', `center', or `bottom', indicating the positioning of the
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1064 bitmap relative to the rows where it is used; the default is to center the
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1065 bitmap. Fourth arg may also be a list (ALIGN PERIODIC) where
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1066 PERIODIC non-nil specifies that the bitmap should be repeated.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1067 Optional fifth argument WHICH is bitmap number to redefine.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1068 Return new bitmap number, or nil of no more free bitmap slots. */)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1069 (bits, height, width, align, which)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1070 Lisp_Object bits, height, width, align, which;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1071 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1072 Lisp_Object len;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1073 int n, h, i, j;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1074 unsigned char *b;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1075 struct fringe_bitmap fb, *xfb;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1076 int fill1 = 0, fill2 = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1077
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1078 if (!STRINGP (bits) && !VECTORP (bits))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1079 bits = wrong_type_argument (Qstringp, bits);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1080
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1081 len = Flength (bits);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1082
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1083 if (NILP (height))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1084 h = fb.height = XINT (len);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1085 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1086 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1087 CHECK_NUMBER (height);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1088 fb.height = min (XINT (height), 255);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1089 if (fb.height > XINT (len))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1090 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1091 h = XINT (len);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1092 fill1 = (fb.height - h) / 2;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1093 fill2 = fb.height - h - fill1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1094 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1095 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1096
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1097 if (NILP (width))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1098 fb.width = 8;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1099 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1100 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1101 CHECK_NUMBER (width);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1102 fb.width = min (XINT (width), 255);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1103 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1104
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1105 fb.period = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1106 fb.align = ALIGN_BITMAP_CENTER;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1107
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1108 if (CONSP (align))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1109 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1110 Lisp_Object period = XCDR (align);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1111 if (CONSP (period))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1112 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1113 period = XCAR (period);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1114 if (!NILP (period))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1115 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1116 fb.period = fb.height;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1117 fb.height = 255;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1118 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1119 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1120 align = XCAR (align);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1121 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1122 if (EQ (align, Qtop))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1123 fb.align = ALIGN_BITMAP_TOP;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1124 else if (EQ (align, Qbottom))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1125 fb.align = ALIGN_BITMAP_BOTTOM;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1126 else if (!NILP (align) && !EQ (align, Qcenter))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1127 error ("Bad align argument");
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1128
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1129 if (NILP (which))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1130 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1131 if (max_used_fringe_bitmap < MAX_FRINGE_BITMAPS)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1132 n = make_number (max_used_fringe_bitmap++);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1133 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1134 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1135 for (n = MAX_STANDARD_FRINGE_BITMAPS;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1136 n < MAX_FRINGE_BITMAPS;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1137 n++)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1138 if (fringe_bitmaps[n] == NULL)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1139 break;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1140 if (n == MAX_FRINGE_BITMAPS)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1141 return Qnil;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1142 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1143 which = make_number (n);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1144 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1145 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1146 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1147 CHECK_NUMBER (which);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1148 n = XINT (which);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1149 if (n <= NO_FRINGE_BITMAP || n >= MAX_FRINGE_BITMAPS)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1150 error ("Invalid fringe bitmap number");
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1151 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1152
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1153 fb.dynamic = 1;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1154
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1155 xfb = (struct fringe_bitmap *)xmalloc (sizeof fb + fb.height);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1156 fb.bits = b = (unsigned char *)(xfb+1);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1157 bzero (b, fb.height);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1158
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1159 j = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1160 while (j < fb.height)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1161 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1162 for (i = 0; i < fill1 && j < fb.height; i++)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1163 b[j++] = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1164 for (i = 0; i < h & j < fb.height; i++)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1165 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1166 Lisp_Object elt = Faref (bits, make_number (i));
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1167 b[j++] = NUMBERP (elt) ? XINT (elt) : 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1168 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1169 for (i = 0; i < fill2 && j < fb.height; i++)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1170 b[j++] = 0;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1171 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1172
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1173 *xfb = fb;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1174
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1175 init_fringe_bitmap (n, xfb, 0);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1176
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1177 return which;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1178 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1179
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1180 DEFUN ("set-fringe-bitmap-face", Fset_fringe_bitmap_face, Sset_fringe_bitmap_face,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1181 1, 2, 0,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1182 doc: /* Set face for fringe bitmap FRINGE-ID to FACE.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1183 If FACE is nil, reset face to default fringe face. */)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1184 (fringe_id, face)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1185 Lisp_Object fringe_id, face;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1186 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1187 int face_id;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1188
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1189 CHECK_NUMBER (fringe_id);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1190 if (!valid_fringe_bitmap_id_p (XINT (fringe_id)))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1191 error ("Invalid fringe id");
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1192
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1193 if (!NILP (face))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1194 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1195 face_id = lookup_named_face (SELECTED_FRAME (), face, 'A');
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1196 if (face_id < 0)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1197 error ("No such face");
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1198 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1199 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1200 face_id = FRINGE_FACE_ID;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1201
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1202 fringe_faces [XINT (fringe_id)] = face_id;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1203
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1204 return Qnil;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1205 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1206
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1207 DEFUN ("fringe-bitmaps-at-pos", Ffringe_bitmaps_at_pos, Sfringe_bitmaps_at_pos,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1208 0, 2, 0,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1209 doc: /* Return fringe bitmaps of row containing position POS in window WINDOW.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1210 If WINDOW is nil, use selected window. If POS is nil, use value of point
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1211 in that window. Return value is a cons (LEFT . RIGHT) where LEFT and RIGHT
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1212 are the fringe bitmap numbers for the bitmaps in the left and right fringe,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1213 resp. Return nil if POS is not visible in WINDOW. */)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1214 (pos, window)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1215 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1216 struct window *w;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1217 struct buffer *old_buffer = NULL;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1218 struct glyph_row *row;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1219 int textpos;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1220
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1221 if (NILP (window))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1222 window = selected_window;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1223 CHECK_WINDOW (window);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1224 w = XWINDOW (window);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1225
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1226 if (!NILP (pos))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1227 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1228 CHECK_NUMBER_COERCE_MARKER (pos);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1229 textpos = XINT (pos);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1230 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1231 else if (w == XWINDOW (selected_window))
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1232 textpos = PT;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1233 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1234 textpos = XMARKER (w->pointm)->charpos;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1235
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1236 row = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1237 row = row_containing_pos (w, textpos, row, NULL, 0);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1238 if (row)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1239 return Fcons (make_number (row->left_fringe_bitmap),
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1240 make_number (row->right_fringe_bitmap));
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1241 else
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1242 return Qnil;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1243 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1244
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1245
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1246 /***********************************************************************
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1247 Initialization
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1248 ***********************************************************************/
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1249
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1250 void
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1251 syms_of_fringe ()
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1252 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1253
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1254 defsubr (&Sdestroy_fringe_bitmap);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1255 defsubr (&Sdefine_fringe_bitmap);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1256 defsubr (&Sfringe_bitmaps_at_pos);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1257 defsubr (&Sset_fringe_bitmap_face);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1258
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1259 DEFVAR_LISP ("overflow-newline-into-fringe", &Voverflow_newline_into_fringe,
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1260 doc: /* *Non-nil means that newline may flow into the right fringe.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1261 This means that display lines which are exactly as wide as the window
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1262 (not counting the final newline) will only occupy one screen line, by
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1263 showing (or hiding) the final newline in the right fringe; when point
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1264 is at the final newline, the cursor is shown in the right fringe.
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1265 If nil, also continue lines which are exactly as wide as the window. */);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1266 Voverflow_newline_into_fringe = Qt;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1267
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1268 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1269
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1270 /* Initialize this module when Emacs starts. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1271
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1272 void
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1273 init_fringe_once ()
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1274 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1275 enum fringe_bitmap_type bt;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1276
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1277 for (bt = NO_FRINGE_BITMAP + 1; bt < MAX_STANDARD_FRINGE_BITMAPS; bt++)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1278 init_fringe_bitmap(bt, &standard_bitmaps[bt], 1);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1279 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1280
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1281 void
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1282 init_fringe ()
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1283 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1284 int i;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1285
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1286 bzero (fringe_bitmaps, sizeof fringe_bitmaps);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1287 for (i = 0; i < MAX_FRINGE_BITMAPS; i++)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1288 fringe_faces[i] = FRINGE_FACE_ID;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1289 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1290
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1291 #ifdef HAVE_NTGUI
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1292
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1293 void
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1294 w32_init_fringe ()
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1295 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1296 enum fringe_bitmap_type bt;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1297
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1298 for (bt = NO_FRINGE_BITMAP + 1; bt < MAX_STANDARD_FRINGE_BITMAPS; bt++)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1299 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1300 struct fringe_bitmap *fb = &standard_bitmaps[bt];
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1301 rif->define_fringe_bitmap (bt, fb->bits, fb->height, fb->width);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1302 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1303 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1304
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1305 void
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1306 w32_reset_fringes ()
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1307 {
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1308 /* Destroy row bitmaps. */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1309 int bt;
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1310
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1311 for (bt = NO_FRINGE_BITMAP + 1; bt < max_used_fringe_bitmap; bt++)
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1312 rif->destroy_fringe_bitmap (bt);
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1313 }
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1314
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1315 #endif
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1316
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1317 #endif /* HAVE_WINDOW_SYSTEM */
e3771c262410 New file. Move original fringe related declarations
Kim F. Storm <storm@cua.dk>
parents:
diff changeset
1318