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
doellipse(int cmd,Image * dst,Point * c,int xr,int yr,int thick,Image * src,Point * sp,int alpha,int phi,Drawop op)7*ac57dd0bSDavid du Colombier doellipse(int cmd, Image *dst, Point *c, int xr, int yr, int thick, Image *src, Point *sp, int alpha, int phi, Drawop op)
87dd7cddfSDavid du Colombier {
97dd7cddfSDavid du Colombier uchar *a;
107dd7cddfSDavid du Colombier
11*ac57dd0bSDavid du Colombier _setdrawop(dst->display, op);
12*ac57dd0bSDavid du Colombier
137dd7cddfSDavid du Colombier a = bufimage(dst->display, 1+4+4+2*4+4+4+4+2*4+2*4);
147dd7cddfSDavid du Colombier if(a == 0){
159a747e4fSDavid du Colombier fprint(2, "image ellipse: %r\n");
167dd7cddfSDavid du Colombier return;
177dd7cddfSDavid du Colombier }
187dd7cddfSDavid du Colombier a[0] = cmd;
197dd7cddfSDavid du Colombier BPLONG(a+1, dst->id);
207dd7cddfSDavid du Colombier BPLONG(a+5, src->id);
217dd7cddfSDavid du Colombier BPLONG(a+9, c->x);
227dd7cddfSDavid du Colombier BPLONG(a+13, c->y);
237dd7cddfSDavid du Colombier BPLONG(a+17, xr);
247dd7cddfSDavid du Colombier BPLONG(a+21, yr);
257dd7cddfSDavid du Colombier BPLONG(a+25, thick);
267dd7cddfSDavid du Colombier BPLONG(a+29, sp->x);
277dd7cddfSDavid du Colombier BPLONG(a+33, sp->y);
287dd7cddfSDavid du Colombier BPLONG(a+37, alpha);
297dd7cddfSDavid du Colombier BPLONG(a+41, phi);
307dd7cddfSDavid du Colombier }
317dd7cddfSDavid du Colombier
327dd7cddfSDavid du Colombier void
ellipse(Image * dst,Point c,int a,int b,int thick,Image * src,Point sp)337dd7cddfSDavid du Colombier ellipse(Image *dst, Point c, int a, int b, int thick, Image *src, Point sp)
347dd7cddfSDavid du Colombier {
35*ac57dd0bSDavid du Colombier doellipse('e', dst, &c, a, b, thick, src, &sp, 0, 0, SoverD);
36*ac57dd0bSDavid du Colombier }
37*ac57dd0bSDavid du Colombier
38*ac57dd0bSDavid du Colombier void
ellipseop(Image * dst,Point c,int a,int b,int thick,Image * src,Point sp,Drawop op)39*ac57dd0bSDavid du Colombier ellipseop(Image *dst, Point c, int a, int b, int thick, Image *src, Point sp, Drawop op)
40*ac57dd0bSDavid du Colombier {
41*ac57dd0bSDavid du Colombier doellipse('e', dst, &c, a, b, thick, src, &sp, 0, 0, op);
427dd7cddfSDavid du Colombier }
437dd7cddfSDavid du Colombier
447dd7cddfSDavid du Colombier void
fillellipse(Image * dst,Point c,int a,int b,Image * src,Point sp)457dd7cddfSDavid du Colombier fillellipse(Image *dst, Point c, int a, int b, Image *src, Point sp)
467dd7cddfSDavid du Colombier {
47*ac57dd0bSDavid du Colombier doellipse('E', dst, &c, a, b, 0, src, &sp, 0, 0, SoverD);
48*ac57dd0bSDavid du Colombier }
49*ac57dd0bSDavid du Colombier
50*ac57dd0bSDavid du Colombier void
fillellipseop(Image * dst,Point c,int a,int b,Image * src,Point sp,Drawop op)51*ac57dd0bSDavid du Colombier fillellipseop(Image *dst, Point c, int a, int b, Image *src, Point sp, Drawop op)
52*ac57dd0bSDavid du Colombier {
53*ac57dd0bSDavid du Colombier doellipse('E', dst, &c, a, b, 0, src, &sp, 0, 0, op);
547dd7cddfSDavid du Colombier }
557dd7cddfSDavid du Colombier
567dd7cddfSDavid du Colombier void
arc(Image * dst,Point c,int a,int b,int thick,Image * src,Point sp,int alpha,int phi)577dd7cddfSDavid du Colombier arc(Image *dst, Point c, int a, int b, int thick, Image *src, Point sp, int alpha, int phi)
587dd7cddfSDavid du Colombier {
597dd7cddfSDavid du Colombier alpha |= 1<<31;
60*ac57dd0bSDavid du Colombier doellipse('e', dst, &c, a, b, thick, src, &sp, alpha, phi, SoverD);
61*ac57dd0bSDavid du Colombier }
62*ac57dd0bSDavid du Colombier
63*ac57dd0bSDavid du Colombier void
arcop(Image * dst,Point c,int a,int b,int thick,Image * src,Point sp,int alpha,int phi,Drawop op)64*ac57dd0bSDavid du Colombier arcop(Image *dst, Point c, int a, int b, int thick, Image *src, Point sp, int alpha, int phi, Drawop op)
65*ac57dd0bSDavid du Colombier {
66*ac57dd0bSDavid du Colombier alpha |= 1<<31;
67*ac57dd0bSDavid du Colombier doellipse('e', dst, &c, a, b, thick, src, &sp, alpha, phi, op);
687dd7cddfSDavid du Colombier }
697dd7cddfSDavid du Colombier
707dd7cddfSDavid du Colombier void
fillarc(Image * dst,Point c,int a,int b,Image * src,Point sp,int alpha,int phi)717dd7cddfSDavid du Colombier fillarc(Image *dst, Point c, int a, int b, Image *src, Point sp, int alpha, int phi)
727dd7cddfSDavid du Colombier {
737dd7cddfSDavid du Colombier alpha |= 1<<31;
74*ac57dd0bSDavid du Colombier doellipse('E', dst, &c, a, b, 0, src, &sp, alpha, phi, SoverD);
75*ac57dd0bSDavid du Colombier }
76*ac57dd0bSDavid du Colombier
77*ac57dd0bSDavid du Colombier void
fillarcop(Image * dst,Point c,int a,int b,Image * src,Point sp,int alpha,int phi,Drawop op)78*ac57dd0bSDavid du Colombier fillarcop(Image *dst, Point c, int a, int b, Image *src, Point sp, int alpha, int phi, Drawop op)
79*ac57dd0bSDavid du Colombier {
80*ac57dd0bSDavid du Colombier alpha |= 1<<31;
81*ac57dd0bSDavid du Colombier doellipse('E', dst, &c, a, b, 0, src, &sp, alpha, phi, op);
827dd7cddfSDavid du Colombier }
83