17dd7cddfSDavid du Colombier #include <u.h> 27dd7cddfSDavid du Colombier #include <libc.h> 37dd7cddfSDavid du Colombier #include <draw.h> 47dd7cddfSDavid du Colombier 57dd7cddfSDavid du Colombier static 67dd7cddfSDavid du Colombier void 77dd7cddfSDavid du Colombier doellipse(int cmd, Image *dst, Point *c, int xr, int yr, int thick, Image *src, Point *sp, int alpha, int phi) 87dd7cddfSDavid du Colombier { 97dd7cddfSDavid du Colombier uchar *a; 107dd7cddfSDavid du Colombier 117dd7cddfSDavid du Colombier a = bufimage(dst->display, 1+4+4+2*4+4+4+4+2*4+2*4); 127dd7cddfSDavid du Colombier if(a == 0){ 13*9a747e4fSDavid du Colombier fprint(2, "image ellipse: %r\n"); 147dd7cddfSDavid du Colombier return; 157dd7cddfSDavid du Colombier } 167dd7cddfSDavid du Colombier a[0] = cmd; 177dd7cddfSDavid du Colombier BPLONG(a+1, dst->id); 187dd7cddfSDavid du Colombier BPLONG(a+5, src->id); 197dd7cddfSDavid du Colombier BPLONG(a+9, c->x); 207dd7cddfSDavid du Colombier BPLONG(a+13, c->y); 217dd7cddfSDavid du Colombier BPLONG(a+17, xr); 227dd7cddfSDavid du Colombier BPLONG(a+21, yr); 237dd7cddfSDavid du Colombier BPLONG(a+25, thick); 247dd7cddfSDavid du Colombier BPLONG(a+29, sp->x); 257dd7cddfSDavid du Colombier BPLONG(a+33, sp->y); 267dd7cddfSDavid du Colombier BPLONG(a+37, alpha); 277dd7cddfSDavid du Colombier BPLONG(a+41, phi); 287dd7cddfSDavid du Colombier } 297dd7cddfSDavid du Colombier 307dd7cddfSDavid du Colombier void 317dd7cddfSDavid du Colombier ellipse(Image *dst, Point c, int a, int b, int thick, Image *src, Point sp) 327dd7cddfSDavid du Colombier { 337dd7cddfSDavid du Colombier doellipse('e', dst, &c, a, b, thick, src, &sp, 0, 0); 347dd7cddfSDavid du Colombier } 357dd7cddfSDavid du Colombier 367dd7cddfSDavid du Colombier void 377dd7cddfSDavid du Colombier fillellipse(Image *dst, Point c, int a, int b, Image *src, Point sp) 387dd7cddfSDavid du Colombier { 397dd7cddfSDavid du Colombier doellipse('E', dst, &c, a, b, 0, src, &sp, 0, 0); 407dd7cddfSDavid du Colombier } 417dd7cddfSDavid du Colombier 427dd7cddfSDavid du Colombier void 437dd7cddfSDavid du Colombier arc(Image *dst, Point c, int a, int b, int thick, Image *src, Point sp, int alpha, int phi) 447dd7cddfSDavid du Colombier { 457dd7cddfSDavid du Colombier alpha |= 1<<31; 467dd7cddfSDavid du Colombier doellipse('e', dst, &c, a, b, thick, src, &sp, alpha, phi); 477dd7cddfSDavid du Colombier } 487dd7cddfSDavid du Colombier 497dd7cddfSDavid du Colombier void 507dd7cddfSDavid du Colombier fillarc(Image *dst, Point c, int a, int b, Image *src, Point sp, int alpha, int phi) 517dd7cddfSDavid du Colombier { 527dd7cddfSDavid du Colombier alpha |= 1<<31; 537dd7cddfSDavid du Colombier doellipse('E', dst, &c, a, b, 0, src, &sp, alpha, phi); 547dd7cddfSDavid du Colombier } 55