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