// Copyright status: this file is in the public domain. #include #include "lx.h" #include "proto.h" #include "internal.h" static void common_PolyFillRectangle(LX_CONN *xc, LX_XID drawable, LX_XID gc, int nrects, const LX_RECTANGLE *rects) { unsigned char *req; int reqlen; int i; int o; const LX_RECTANGLE *r; if ( (xc->flags & XCF_FAIL) || (nrects > ((65535-3)/2)) ) { lx__bad_call(xc,"lx_PolyFillRectangle"); return; } reqlen = 3 + (2 * nrects); req = malloc(reqlen<<2); if (! req) { lx__nomem_fail(xc); return; } req[0] = XP_REQ_PolyFillRectangle; req[1] = 0; // unused w_card16(&req[2],reqlen); w_card32(&req[4],drawable); w_card32(&req[8],gc); o = 12; for (i=0;ix < -32768) || (r->x > 32767) || (r->y < -32768) || (r->y > 32767) || (r->w < 0) || (r->w > 65535) || (r->h < 0) || (r->h > 65535) ) { free(req); lx__bad_call(xc,"lx_PolyFillRectangle"); return; } w_int16(&req[o],r->x); w_int16(&req[o+2],r->y); w_card16(&req[o+4],r->w); w_card16(&req[o+6],r->h); o += 8; } lx__send_req_free(xc,req,reqlen<<2); } void lx_PolyFillRectangle(LX_CONN *xc, LX_XID drawable, LX_XID gc, int nrects, const LX_RECTANGLE *rects) { lx__nochain(xc); common_PolyFillRectangle(xc,drawable,gc,nrects,rects); } void lx__PolyFillRectangle_inbatch(LX_CONN *xc, LX_XID drawable, LX_XID gc, int nrects, const LX_RECTANGLE *rects) { common_PolyFillRectangle(xc,drawable,gc,nrects,rects); }