17 PUTSTRING(uchar *p, char *s)
30 GETSTRING(uchar *p, char **s)
64 return 4+1+1+4+4+4+4+1;
70 return 4+1+1+4+4+2*16+2*16+1;
72 return 4+1+1+4+4+2*16+2*16+4+4+4*32+4*32+1;
74 return 4+1+1+_stringsize(m->error);
80 return 4+1+1+_stringsize(m->label);
86 +_stringsize(m->winsize)
87 +_stringsize(m->label);
90 return 4+1+1+_stringsize(m->snarf);
93 return 4+1+1+4+m->count;
103 convW2M(Wsysmsg *m, uchar *p, uint n)
108 if(n < nn || nn == 0 || n < 6)
134 PUTSTRING(p+6, m->error);
137 PUT(p+6, m->mouse.xy.x);
138 PUT(p+10, m->mouse.xy.y);
139 PUT(p+14, m->mouse.buttons);
140 PUT(p+18, m->mouse.msec);
144 PUT(p+6, m->mouse.xy.x);
145 PUT(p+10, m->mouse.xy.y);
146 PUT(p+14, m->mouse.buttons);
149 PUT(p+6, m->mouse.xy.x);
150 PUT(p+10, m->mouse.xy.y);
153 PUT(p+6, m->cursor.offset.x);
154 PUT(p+10, m->cursor.offset.y);
155 memmove(p+14, m->cursor.clr, sizeof m->cursor.clr);
156 memmove(p+46, m->cursor.set, sizeof m->cursor.set);
157 p[78] = m->arrowcursor;
160 PUT(p+6, m->cursor.offset.x);
161 PUT(p+10, m->cursor.offset.y);
162 memmove(p+14, m->cursor.clr, sizeof m->cursor.clr);
163 memmove(p+46, m->cursor.set, sizeof m->cursor.set);
164 PUT(p+78, m->cursor2.offset.x);
165 PUT(p+82, m->cursor2.offset.y);
166 memmove(p+86, m->cursor2.clr, sizeof m->cursor2.clr);
167 memmove(p+214, m->cursor2.set, sizeof m->cursor2.set);
168 p[342] = m->arrowcursor;
177 PUTSTRING(p+6, m->label);
180 PUTSTRING(p+6, m->id);
184 p += PUTSTRING(p, m->winsize);
185 p += PUTSTRING(p, m->label);
189 PUTSTRING(p+6, m->snarf);
194 memmove(p+10, m->data, m->count);
201 PUT(p+6, m->rect.min.x);
202 PUT(p+10, m->rect.min.y);
203 PUT(p+14, m->rect.max.x);
204 PUT(p+18, m->rect.max.y);
211 convM2W(uchar *p, uint n, Wsysmsg *m)
242 GETSTRING(p+6, &m->error);
245 GET(p+6, m->mouse.xy.x);
246 GET(p+10, m->mouse.xy.y);
247 GET(p+14, m->mouse.buttons);
248 GET(p+18, m->mouse.msec);
252 GET(p+6, m->mouse.xy.x);
253 GET(p+10, m->mouse.xy.y);
254 GET(p+14, m->mouse.buttons);
257 GET(p+6, m->mouse.xy.x);
258 GET(p+10, m->mouse.xy.y);
261 GET(p+6, m->cursor.offset.x);
262 GET(p+10, m->cursor.offset.y);
263 memmove(m->cursor.clr, p+14, sizeof m->cursor.clr);
264 memmove(m->cursor.set, p+46, sizeof m->cursor.set);
265 m->arrowcursor = p[78];
268 GET(p+6, m->cursor.offset.x);
269 GET(p+10, m->cursor.offset.y);
270 memmove(m->cursor.clr, p+14, sizeof m->cursor.clr);
271 memmove(m->cursor.set, p+46, sizeof m->cursor.set);
272 GET(p+78, m->cursor2.offset.x);
273 GET(p+82, m->cursor2.offset.y);
274 memmove(m->cursor2.clr, p+86, sizeof m->cursor2.clr);
275 memmove(m->cursor2.set, p+214, sizeof m->cursor2.set);
276 m->arrowcursor = p[342];
285 GETSTRING(p+6, &m->label);
288 GETSTRING(p+6, &m->id);
292 p += GETSTRING(p, &m->winsize);
293 p += GETSTRING(p, &m->label);
297 GETSTRING(p+6, &m->snarf);
309 GET(p+6, m->rect.min.x);
310 GET(p+10, m->rect.min.y);
311 GET(p+14, m->rect.max.x);
312 GET(p+18, m->rect.max.y);
319 readwsysmsg(int fd, uchar *buf, uint nbuf)
325 if(readn(fd, buf, 4) != 4)
330 if(readn(fd, buf+4, n-4) != n-4)
336 drawfcallfmt(Fmt *fmt)
340 m = va_arg(fmt->args, Wsysmsg*);
341 fmtprint(fmt, "tag=%d ", m->tag);
344 return fmtprint(fmt, "unknown msg %d", m->type);
346 return fmtprint(fmt, "Rerror error='%s'", m->error);
348 return fmtprint(fmt, "Trdmouse");
350 return fmtprint(fmt, "Rrdmouse x=%d y=%d buttons=%d msec=%d resized=%d",
351 m->mouse.xy.x, m->mouse.xy.y,
352 m->mouse.buttons, m->mouse.msec, m->resized);
354 return fmtprint(fmt, "Tbouncemouse x=%d y=%d buttons=%d",
355 m->mouse.xy.x, m->mouse.xy.y, m->mouse.buttons);
357 return fmtprint(fmt, "Rbouncemouse");
359 return fmtprint(fmt, "Tmoveto x=%d y=%d", m->mouse.xy.x, m->mouse.xy.y);
361 return fmtprint(fmt, "Rmoveto");
363 return fmtprint(fmt, "Tcursor arrow=%d", m->arrowcursor);
365 return fmtprint(fmt, "Tcursor2 arrow=%d", m->arrowcursor);
367 return fmtprint(fmt, "Rcursor");
369 return fmtprint(fmt, "Rcursor2");
371 return fmtprint(fmt, "Trdkbd");
373 return fmtprint(fmt, "Rrdkbd rune=%C", m->rune);
375 return fmtprint(fmt, "Trdkbd4");
377 return fmtprint(fmt, "Rrdkbd4 rune=%C", m->rune);
379 return fmtprint(fmt, "Tlabel label='%s'", m->label);
381 return fmtprint(fmt, "Rlabel");
383 return fmtprint(fmt, "Tctxt id='%s'", m->id);
385 return fmtprint(fmt, "Rctxt");
387 return fmtprint(fmt, "Tinit label='%s' winsize='%s'", m->label, m->winsize);
389 return fmtprint(fmt, "Rinit");
391 return fmtprint(fmt, "Trdsnarf");
393 return fmtprint(fmt, "Rrdsnarf snarf='%s'", m->snarf);
395 return fmtprint(fmt, "Twrsnarf snarf='%s'", m->snarf);
397 return fmtprint(fmt, "Rwrsnarf");
399 return fmtprint(fmt, "Trddraw %d", m->count);
401 return fmtprint(fmt, "Rrddraw %d %.*H", m->count, m->count, m->data);
403 return fmtprint(fmt, "Twrdraw %d %.*H", m->count, m->count, m->data);
405 return fmtprint(fmt, "Rwrdraw %d", m->count);
407 return fmtprint(fmt, "Ttop");
409 return fmtprint(fmt, "Rtop");
411 return fmtprint(fmt, "Tresize %R", m->rect);
413 return fmtprint(fmt, "Rresize");