Commit | Line | Data |
---|---|---|
d427b66a JB |
1 | /* Bitmaps and things for scrollbars. |
2 | Copyright (C) 1989 Free Software Foundation. | |
3 | ||
4 | This file is part of GNU Emacs. | |
5 | ||
6 | GNU Emacs is free software; you can redistribute it and/or modify | |
7 | it under the terms of the GNU General Public License as published by | |
8 | the Free Software Foundation; either version 1, or (at your option) | |
9 | any later version. | |
10 | ||
11 | GNU Emacs is distributed in the hope that it will be useful, | |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | GNU General Public License for more details. | |
15 | ||
16 | You should have received a copy of the GNU General Public License | |
17 | along with GNU Emacs; see the file COPYING. If not, write to | |
18 | the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ | |
19 | ||
20 | ||
21 | static void install_vertical_scrollbar (); | |
22 | static void install_horizontal_scrollbar (); | |
23 | static void x_set_horizontal_scrollbar (); | |
24 | static void x_set_vertical_scrollbar (); | |
25 | ||
26 | /* Prefix-characters for scroll bar commands in Vglobal_mouse_map. | |
27 | Choice of prefix depends on which region of the scroll bar. */ | |
28 | ||
29 | enum scroll_bar_prefix | |
30 | { VSCROLL_BAR_PREFIX = 050, VSCROLL_SLIDER_PREFIX /* unused */, | |
31 | VSCROLL_THUMBUP_PREFIX, VSCROLL_THUMBDOWN_PREFIX, | |
32 | HSCROLL_BAR_PREFIX, HSCROLL_SLIDER_PREFIX /* unused */, | |
33 | HSCROLL_THUMBLEFT_PREFIX, HSCROLL_THUMBRIGHT_PREFIX }; | |
34 | ||
35 | #define CROSS_WIDTH 16 | |
36 | #define CROSS_HEIGHT 16 | |
37 | ||
38 | #define CROSS_MASK_WIDTH 16 | |
39 | #define CROSS_MASK_HEIGHT 16 | |
40 | ||
41 | /* Vertical and Horizontal scroll bar widths. */ | |
42 | #define VSCROLL_WIDTH 18 | |
43 | #define HSCROLL_HEIGHT 18 | |
44 | ||
45 | #ifdef HAVE_X11 | |
46 | ||
47 | /* Arrow cursors for scroll bars. */ | |
48 | ||
49 | Cursor up_arrow_cursor, down_arrow_cursor, v_double_arrow_cursor; | |
50 | Cursor left_arrow_cursor, right_arrow_cursor, h_double_arrow_cursor; | |
51 | ||
52 | static char cross_bits[] = | |
53 | { | |
54 | 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, | |
55 | 0x80, 0x01, 0xfe, 0x7f, 0xfe, 0x7f, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, | |
56 | 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00 | |
57 | }; | |
58 | ||
59 | static char gray_bits[] = | |
60 | { | |
61 | 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, | |
62 | 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, | |
63 | 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, | |
64 | 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa | |
65 | }; | |
66 | ||
67 | static char up_arrow_bits[] = | |
68 | { | |
69 | 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0xf8, 0x1f, | |
70 | 0xfc, 0x3f, 0xfe, 0x7f, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, | |
71 | 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xff, 0xff | |
72 | }; | |
73 | ||
74 | static char down_arrow_bits[] = | |
75 | { | |
76 | 0xff, 0xff, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, | |
77 | 0x80, 0x01, 0x80, 0x01, 0xfe, 0x7f, 0xfc, 0x3f, 0xf8, 0x1f, 0xf0, 0x0f, | |
78 | 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00 | |
79 | }; | |
80 | ||
81 | static char left_arrow_bits[] = | |
82 | { | |
83 | 0x00, 0x80, 0x80, 0x80, 0xc0, 0x80, 0xe0, 0x80, 0xf0, 0x80, 0xf8, 0x80, | |
84 | 0xfc, 0x80, 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0x80, 0xf8, 0x80, 0xf0, 0x80, | |
85 | 0xe0, 0x80, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x80 | |
86 | }; | |
87 | ||
88 | static char right_arrow_bits[] = | |
89 | { | |
90 | 0x01, 0x00, 0x01, 0x01, 0x01, 0x03, 0x01, 0x07, 0x01, 0x0f, 0x01, 0x1f, | |
91 | 0x01, 0x3f, 0xff, 0x7f, 0xff, 0x7f, 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x0f, | |
92 | 0x01, 0x07, 0x01, 0x03, 0x01, 0x01, 0x01, 0x00 | |
93 | }; | |
94 | ||
95 | static char cross_mask_bits[] = | |
96 | { | |
97 | 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, | |
98 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x03, 0xc0, 0x03, | |
99 | 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03 | |
100 | }; | |
101 | #else /* not HAVE_X11 */ | |
102 | static short cross_bits[] = | |
103 | { | |
104 | 0x0000, 0x0180, 0x0180, 0x0180, | |
105 | 0x0180, 0x0180, 0x0180, 0x7ffe, | |
106 | 0x7ffe, 0x0180, 0x0180, 0x0180, | |
107 | 0x0180, 0x0180, 0x0180, 0x0000, | |
108 | }; | |
109 | ||
110 | static short gray_bits[] = { | |
111 | 0xaaaa, 0x5555, 0xaaaa, 0x5555, | |
112 | 0xaaaa, 0x5555, 0xaaaa, 0x5555, | |
113 | 0xaaaa, 0x5555, 0xaaaa, 0x5555, | |
114 | 0xaaaa, 0x5555, 0xaaaa, 0x5555}; | |
115 | ||
116 | static short cross_mask_bits[] = | |
117 | { | |
118 | 0x03c0, 0x03c0, 0x03c0, 0x03c0, | |
119 | 0x03c0, 0x03c0, 0xffff, 0xffff, | |
120 | 0xffff, 0xffff, 0x03c0, 0x03c0, | |
121 | 0x03c0, 0x03c0, 0x03c0, 0x03c0, | |
122 | }; | |
123 | #endif /* X10 */ |