1 /* $Header: /home/yav/xpx/RCS/tile.c,v 1.2 1995/11/26 14:17:56 yav Exp $
2 * xpx tile mask
3 * written by yav (UHD98984@pcvan.or.jp)
4 */
5
6 #include <X11/Xlib.h>
7 #include <X11/Xutil.h>
8
9 #include "headers.h"
10 #include "xpx.h"
11 #include "work.h"
12 #include "cursdef.h"
13 #define PUBLIC_TILE_C
14 #include "extern.h"
15
16 char rcsid_tile[] = "$Id: tile.c,v 1.2 1995/11/26 14:17:56 yav Exp $";
17
18 static int tileno = 0;
19 static char tileptrn[8][8][8] = {
20 { /* 0 solid */
21 {1,1,1,1,1,1,1,1},
22 {1,1,1,1,1,1,1,1},
23 {1,1,1,1,1,1,1,1},
24 {1,1,1,1,1,1,1,1},
25 {1,1,1,1,1,1,1,1},
26 {1,1,1,1,1,1,1,1},
27 {1,1,1,1,1,1,1,1},
28 {1,1,1,1,1,1,1,1}
29 },
30 { /* 1 7/8 */
31 {1,1,1,0,1,1,1,0},
32 {1,1,1,1,1,1,1,1},
33 {1,0,1,1,1,0,1,1},
34 {1,1,1,1,1,1,1,1},
35 {1,1,1,0,1,1,1,0},
36 {1,1,1,1,1,1,1,1},
37 {1,0,1,1,1,0,1,1},
38 {1,1,1,1,1,1,1,1}
39 },
40 { /* 2 3/4 */
41 {1,0,1,0,1,0,1,0},
42 {1,1,1,1,1,1,1,1},
43 {1,0,1,0,1,0,1,0},
44 {1,1,1,1,1,1,1,1},
45 {1,0,1,0,1,0,1,0},
46 {1,1,1,1,1,1,1,1},
47 {1,0,1,0,1,0,1,0},
48 {1,1,1,1,1,1,1,1}
49 },
50 { /* 3 5/8 */
51 {1,0,1,0,1,0,1,0},
52 {1,1,0,1,1,1,0,1},
53 {1,0,1,0,1,0,1,0},
54 {0,1,1,1,0,1,1,1},
55 {1,0,1,0,1,0,1,0},
56 {1,1,0,1,1,1,0,1},
57 {1,0,1,0,1,0,1,0},
58 {0,1,1,1,0,1,1,1}
59 },
60 { /* 4 half */
61 {1,0,1,0,1,0,1,0},
62 {0,1,0,1,0,1,0,1},
63 {1,0,1,0,1,0,1,0},
64 {0,1,0,1,0,1,0,1},
65 {1,0,1,0,1,0,1,0},
66 {0,1,0,1,0,1,0,1},
67 {1,0,1,0,1,0,1,0},
68 {0,1,0,1,0,1,0,1}
69 },
70 { /* 5 3/8 */
71 {1,0,1,0,1,0,1,0},
72 {0,1,0,0,0,1,0,0},
73 {1,0,1,0,1,0,1,0},
74 {0,0,0,1,0,0,0,1},
75 {1,0,1,0,1,0,1,0},
76 {0,1,0,0,0,1,0,0},
77 {1,0,1,0,1,0,1,0},
78 {0,0,0,1,0,0,0,1}
79 },
80 { /* 6 1/4 */
81 {1,0,1,0,1,0,1,0},
82 {0,0,0,0,0,0,0,0},
83 {1,0,1,0,1,0,1,0},
84 {0,0,0,0,0,0,0,0},
85 {1,0,1,0,1,0,1,0},
86 {0,0,0,0,0,0,0,0},
87 {1,0,1,0,1,0,1,0},
88 {0,0,0,0,0,0,0,0}
89 },
90 { /* 7 1/8 */
91 {1,0,0,0,1,0,0,0},
92 {0,0,0,0,0,0,0,0},
93 {0,0,1,0,0,0,1,0},
94 {0,0,0,0,0,0,0,0},
95 {1,0,0,0,1,0,0,0},
96 {0,0,0,0,0,0,0,0},
97 {0,0,1,0,0,0,1,0},
98 {0,0,0,0,0,0,0,0}
99 }
100 };
101
tileev(p,ev)102 int tileev(p, ev)
103 MENU *p;
104 XEvent *ev;
105 {
106 MENU *p0;
107
108 switch (ev->type) {
109 case ButtonPress:
110 p0 = get_top_menu(p) + tileno;
111 p0->mode &= ~MenuModeMaskOn;
112 redraw_window(p0->win);
113 tileno = p->n;
114 set_tilemask(&tileptrn[p->n]);
115 p->mode |= MenuModeMaskOn;
116 redraw_window(p->win);
117 return 1;
118 }
119 return 0;
120 }
121
122 #define TILEW 48
123 #define TILEH 18
124
125 #define IMASK (ExposureMask|EnterWindowMask|LeaveWindowMask|ButtonPressMask)
126
127 MENU tilemenu[] = {
128 {
129 0, MenuModeMaskBorder|MenuModeMaskOn,
130 0, (TILEH+BDW)*0, TILEW, TILEH,
131 0, IMASK, 0,
132 tileev, NULL, 0, 0, "solid"},
133 {
134 1, MenuModeMaskBorder,
135 0, (TILEH+BDW)*1, TILEW, TILEH,
136 0, IMASK, 0,
137 tileev, NULL, 0, 0, "7/8"},
138 {
139 2, MenuModeMaskBorder,
140 0, (TILEH+BDW)*2, TILEW, TILEH,
141 0, IMASK, 0,
142 tileev, NULL, 0, 0, "3/4"},
143 {
144 3, MenuModeMaskBorder,
145 0, (TILEH+BDW)*3, TILEW, TILEH,
146 0, IMASK, 0,
147 tileev, NULL, 0, 0, "5/8"},
148 {
149 4, MenuModeMaskBorder,
150 0, (TILEH+BDW)*4, TILEW, TILEH,
151 0, IMASK, 0,
152 tileev, NULL, 0, 0, "half"},
153 {
154 5, MenuModeMaskBorder,
155 0, (TILEH+BDW)*5, TILEW, TILEH,
156 0, IMASK, 0,
157 tileev, NULL, 0, 0, "3/8"},
158 {
159 6, MenuModeMaskBorder,
160 0, (TILEH+BDW)*6, TILEW, TILEH,
161 0, IMASK, 0,
162 tileev, NULL, 0, 0, "1/4"},
163 {
164 7, MenuModeMaskBorder,
165 0, (TILEH+BDW)*7, TILEW, TILEH,
166 0, IMASK, 0,
167 tileev, NULL, 0, 0, "1/8"},
168 {
169 -1, 0,
170 0, 0, 0, 0,
171 0, 0, 0,
172 NULL, NULL, 0, 0, NULL}};
173
create_tile_window(win,x,y)174 int create_tile_window(win, x, y)
175 Window win;
176 int x;
177 int y;
178 {
179 topmenuwin_create(tilemenu, x, y);
180 set_tilemask(&tileptrn[0]);
181 return 0;
182 }
183
184 /* End of file */
185