Blob


1 #include <u.h>
2 #include <libc.h>
3 #include <draw.h>
4 #include <thread.h>
5 #include <cursor.h>
6 #include <mouse.h>
7 #include <keyboard.h>
8 #include <frame.h>
9 #include <fcall.h>
10 #include "dat.h"
11 #include "fns.h"
13 Cursor crosscursor = {
14 {-7, -7},
15 {0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0,
16 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF,
17 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0,
18 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, },
19 {0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80,
20 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x7F, 0xFE,
21 0x7F, 0xFE, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80,
22 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x00, 0x00, }
23 };
25 Cursor boxcursor = {
26 {-7, -7},
27 {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
28 0xFF, 0xFF, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F,
29 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xFF, 0xFF,
30 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, },
31 {0x00, 0x00, 0x7F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE,
32 0x70, 0x0E, 0x70, 0x0E, 0x70, 0x0E, 0x70, 0x0E,
33 0x70, 0x0E, 0x70, 0x0E, 0x70, 0x0E, 0x70, 0x0E,
34 0x7F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x00, 0x00, }
35 };
37 Cursor sightcursor = {
38 {-7, -7},
39 {0x1F, 0xF8, 0x3F, 0xFC, 0x7F, 0xFE, 0xFB, 0xDF,
40 0xF3, 0xCF, 0xE3, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF,
41 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xC7, 0xF3, 0xCF,
42 0x7B, 0xDF, 0x7F, 0xFE, 0x3F, 0xFC, 0x1F, 0xF8, },
43 {0x00, 0x00, 0x0F, 0xF0, 0x31, 0x8C, 0x21, 0x84,
44 0x41, 0x82, 0x41, 0x82, 0x41, 0x82, 0x7F, 0xFE,
45 0x7F, 0xFE, 0x41, 0x82, 0x41, 0x82, 0x41, 0x82,
46 0x21, 0x84, 0x31, 0x8C, 0x0F, 0xF0, 0x00, 0x00, }
47 };
49 Cursor whitearrow = {
50 {0, 0},
51 {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFC,
52 0xFF, 0xF0, 0xFF, 0xF0, 0xFF, 0xF8, 0xFF, 0xFC,
53 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFC,
54 0xF3, 0xF8, 0xF1, 0xF0, 0xE0, 0xE0, 0xC0, 0x40, },
55 {0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0xC0, 0x1C,
56 0xC0, 0x30, 0xC0, 0x30, 0xC0, 0x38, 0xC0, 0x1C,
57 0xC0, 0x0E, 0xC0, 0x07, 0xCE, 0x0E, 0xDF, 0x1C,
58 0xD3, 0xB8, 0xF1, 0xF0, 0xE0, 0xE0, 0xC0, 0x40, }
59 };
61 Cursor query = {
62 {-7,-7},
63 {0x0f, 0xf0, 0x1f, 0xf8, 0x3f, 0xfc, 0x7f, 0xfe,
64 0x7c, 0x7e, 0x78, 0x7e, 0x00, 0xfc, 0x01, 0xf8,
65 0x03, 0xf0, 0x07, 0xe0, 0x07, 0xc0, 0x07, 0xc0,
66 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, },
67 {0x00, 0x00, 0x0f, 0xf0, 0x1f, 0xf8, 0x3c, 0x3c,
68 0x38, 0x1c, 0x00, 0x3c, 0x00, 0x78, 0x00, 0xf0,
69 0x01, 0xe0, 0x03, 0xc0, 0x03, 0x80, 0x03, 0x80,
70 0x00, 0x00, 0x03, 0x80, 0x03, 0x80, 0x00, 0x00, }
71 };
73 Cursor tl = {
74 {-4, -4},
75 {0xfe, 0x00, 0x82, 0x00, 0x8c, 0x00, 0x87, 0xff,
76 0xa0, 0x01, 0xb0, 0x01, 0xd0, 0x01, 0x11, 0xff,
77 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00,
78 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1f, 0x00, },
79 {0x00, 0x00, 0x7c, 0x00, 0x70, 0x00, 0x78, 0x00,
80 0x5f, 0xfe, 0x4f, 0xfe, 0x0f, 0xfe, 0x0e, 0x00,
81 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00,
82 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x00, 0x00, }
83 };
85 Cursor t = {
86 {-7, -8},
87 {0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x06, 0xc0,
88 0x1c, 0x70, 0x10, 0x10, 0x0c, 0x60, 0xfc, 0x7f,
89 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xff, 0xff,
90 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },
91 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
92 0x03, 0x80, 0x0f, 0xe0, 0x03, 0x80, 0x03, 0x80,
93 0x7f, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, 0x00, 0x00,
94 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }
95 };
97 Cursor tr = {
98 {-11, -4},
99 {0x00, 0x7f, 0x00, 0x41, 0x00, 0x31, 0xff, 0xe1,
100 0x80, 0x05, 0x80, 0x0d, 0x80, 0x0b, 0xff, 0x88,
101 0x00, 0x88, 0x0, 0x88, 0x00, 0x88, 0x00, 0x88,
102 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0xf8, },
103 {0x00, 0x00, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0x1e,
104 0x7f, 0xfa, 0x7f, 0xf2, 0x7f, 0xf0, 0x00, 0x70,
105 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70,
106 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x00, }
107 };
109 Cursor r = {
110 {-8, -7},
111 {0x07, 0xc0, 0x04, 0x40, 0x04, 0x40, 0x04, 0x58,
112 0x04, 0x68, 0x04, 0x6c, 0x04, 0x06, 0x04, 0x02,
113 0x04, 0x06, 0x04, 0x6c, 0x04, 0x68, 0x04, 0x58,
114 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x07, 0xc0, },
115 {0x00, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80,
116 0x03, 0x90, 0x03, 0x90, 0x03, 0xf8, 0x03, 0xfc,
117 0x03, 0xf8, 0x03, 0x90, 0x03, 0x90, 0x03, 0x80,
118 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x00, }
119 };
121 Cursor br = {
122 {-11, -11},
123 {0x00, 0xf8, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88,
124 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88,
125 0xff, 0x88, 0x80, 0x0b, 0x80, 0x0d, 0x80, 0x05,
126 0xff, 0xe1, 0x00, 0x31, 0x00, 0x41, 0x00, 0x7f, },
127 {0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70,
128 0x0, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70,
129 0x00, 0x70, 0x7f, 0xf0, 0x7f, 0xf2, 0x7f, 0xfa,
130 0x00, 0x1e, 0x00, 0x0e, 0x00, 0x3e, 0x00, 0x00, }
131 };
133 Cursor b = {
134 {-7, -7},
135 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
136 0xff, 0xff, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
137 0xfc, 0x7f, 0x0c, 0x60, 0x10, 0x10, 0x1c, 0x70,
138 0x06, 0xc0, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, },
139 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
140 0x00, 0x00, 0x7f, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe,
141 0x03, 0x80, 0x03, 0x80, 0x0f, 0xe0, 0x03, 0x80,
142 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }
143 };
145 Cursor bl = {
146 {-4, -11},
147 {0x1f, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00,
148 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00,
149 0x11, 0xff, 0xd0, 0x01, 0xb0, 0x01, 0xa0, 0x01,
150 0x87, 0xff, 0x8c, 0x00, 0x82, 0x00, 0xfe, 0x00, },
151 {0x00, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00,
152 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00,
153 0x0e, 0x00, 0x0f, 0xfe, 0x4f, 0xfe, 0x5f, 0xfe,
154 0x78, 0x00, 0x70, 0x00, 0x7c, 0x00, 0x00, 0x0, }
155 };
157 Cursor l = {
158 {-7, -7},
159 {0x03, 0xe0, 0x02, 0x20, 0x02, 0x20, 0x1a, 0x20,
160 0x16, 0x20, 0x36, 0x20, 0x60, 0x20, 0x40, 0x20,
161 0x60, 0x20, 0x36, 0x20, 0x16, 0x20, 0x1a, 0x20,
162 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x03, 0xe0, },
163 {0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0,
164 0x09, 0xc0, 0x09, 0xc0, 0x1f, 0xc0, 0x3f, 0xc0,
165 0x1f, 0xc0, 0x09, 0xc0, 0x09, 0xc0, 0x01, 0xc0,
166 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, }
167 };
169 Cursor *corners[9] = {
170 &tl, &t, &tr,
171 &l, nil, &r,
172 &bl, &b, &br
173 };
175 void
176 iconinit(void)
178 background = allocimage(display, Rect(0,0,1,1), RGB24, 1, 0x777777FF);
179 red = allocimage(display, Rect(0,0,1,1), RGB24, 1, 0xDD0000FF);