17 PUTSTRING(uchar *p, char *s)
30 GETSTRING(uchar *p, char **s)
61 return 4+1+1+4+4+4+4+1;
67 return 4+1+1+4+4+2*16+2*16+1;
69 return 4+1+1+_stringsize(m->error);
73 return 4+1+1+_stringsize(m->label);
76 +_stringsize(m->winsize)
77 +_stringsize(m->label);
80 return 4+1+1+_stringsize(m->snarf);
83 return 4+1+1+4+m->count;
93 convW2M(Wsysmsg *m, uchar *p, uint n)
98 if(n < nn || nn == 0 || n < 6)
121 PUTSTRING(p+6, m->error);
124 PUT(p+6, m->mouse.xy.x);
125 PUT(p+10, m->mouse.xy.y);
126 PUT(p+14, m->mouse.buttons);
127 PUT(p+18, m->mouse.msec);
131 PUT(p+6, m->mouse.xy.x);
132 PUT(p+10, m->mouse.xy.y);
133 PUT(p+14, m->mouse.buttons);
136 PUT(p+6, m->mouse.xy.x);
137 PUT(p+10, m->mouse.xy.y);
140 PUT(p+6, m->cursor.offset.x);
141 PUT(p+10, m->cursor.offset.y);
142 memmove(p+14, m->cursor.clr, sizeof m->cursor.clr);
143 memmove(p+46, m->cursor.set, sizeof m->cursor.set);
144 p[78] = m->arrowcursor;
150 PUTSTRING(p+6, m->label);
154 p += PUTSTRING(p, m->winsize);
155 p += PUTSTRING(p, m->label);
159 PUTSTRING(p+6, m->snarf);
164 memmove(p+10, m->data, m->count);
171 PUT(p+6, m->rect.min.x);
172 PUT(p+10, m->rect.min.y);
173 PUT(p+14, m->rect.max.x);
174 PUT(p+18, m->rect.max.y);
181 convM2W(uchar *p, uint n, Wsysmsg *m)
209 GETSTRING(p+6, &m->error);
212 GET(p+6, m->mouse.xy.x);
213 GET(p+10, m->mouse.xy.y);
214 GET(p+14, m->mouse.buttons);
215 GET(p+18, m->mouse.msec);
219 GET(p+6, m->mouse.xy.x);
220 GET(p+10, m->mouse.xy.y);
221 GET(p+14, m->mouse.buttons);
224 GET(p+6, m->mouse.xy.x);
225 GET(p+10, m->mouse.xy.y);
228 GET(p+6, m->cursor.offset.x);
229 GET(p+10, m->cursor.offset.y);
230 memmove(m->cursor.clr, p+14, sizeof m->cursor.clr);
231 memmove(m->cursor.set, p+46, sizeof m->cursor.set);
232 m->arrowcursor = p[78];
238 GETSTRING(p+6, &m->label);
242 p += GETSTRING(p, &m->winsize);
243 p += GETSTRING(p, &m->label);
247 GETSTRING(p+6, &m->snarf);
259 GET(p+6, m->rect.min.x);
260 GET(p+10, m->rect.min.y);
261 GET(p+14, m->rect.max.x);
262 GET(p+18, m->rect.max.y);
269 readwsysmsg(int fd, uchar *buf, uint nbuf)
275 if(readn(fd, buf, 4) != 4)
280 if(readn(fd, buf+4, n-4) != n-4)
286 drawfcallfmt(Fmt *fmt)
290 m = va_arg(fmt->args, Wsysmsg*);
291 fmtprint(fmt, "tag=%d ", m->tag);
294 return fmtprint(fmt, "unknown msg %d", m->type);
296 return fmtprint(fmt, "Rerror error='%s'", m->error);
298 return fmtprint(fmt, "Trdmouse");
300 return fmtprint(fmt, "Rrdmouse x=%d y=%d buttons=%d msec=%d resized=%d",
301 m->mouse.xy.x, m->mouse.xy.y,
302 m->mouse.buttons, m->mouse.msec, m->resized);
304 return fmtprint(fmt, "Tbouncemouse x=%d y=%d buttons=%d",
305 m->mouse.xy.x, m->mouse.xy.y, m->mouse.buttons);
307 return fmtprint(fmt, "Rbouncemouse");
309 return fmtprint(fmt, "Tmoveto x=%d y=%d", m->mouse.xy.x, m->mouse.xy.y);
311 return fmtprint(fmt, "Rmoveto");
313 return fmtprint(fmt, "Tcursor arrow=%d", m->arrowcursor);
315 return fmtprint(fmt, "Rcursor");
317 return fmtprint(fmt, "Trdkbd");
319 return fmtprint(fmt, "Rrdkbd rune=%C", m->rune);
321 return fmtprint(fmt, "Tlabel label='%s'", m->label);
323 return fmtprint(fmt, "Rlabel");
325 return fmtprint(fmt, "Tinit label='%s' winsize='%s'", m->label, m->winsize);
327 return fmtprint(fmt, "Rinit");
329 return fmtprint(fmt, "Trdsnarf");
331 return fmtprint(fmt, "Rrdsnarf snarf='%s'", m->snarf);
333 return fmtprint(fmt, "Twrsnarf snarf='%s'", m->snarf);
335 return fmtprint(fmt, "Rwrsnarf");
337 return fmtprint(fmt, "Trddraw %d", m->count);
339 return fmtprint(fmt, "Rrddraw %d %.*H", m->count, m->count, m->data);
341 return fmtprint(fmt, "Twrdraw %d %.*H", m->count, m->count, m->data);
343 return fmtprint(fmt, "Rwrdraw %d", m->count);
345 return fmtprint(fmt, "Ttop");
347 return fmtprint(fmt, "Rtop");
349 return fmtprint(fmt, "Tresize %R", m->rect);
351 return fmtprint(fmt, "Rresize");