xref: /plan9/sys/src/libmemdraw/poly.c (revision 6a9fc400c33447ef5e1cda7185cb4de2c8e8010e)
17dd7cddfSDavid du Colombier #include <u.h>
27dd7cddfSDavid du Colombier #include <libc.h>
37dd7cddfSDavid du Colombier #include <draw.h>
47dd7cddfSDavid du Colombier #include <memdraw.h>
580ee5cbfSDavid du Colombier #include <memlayer.h>
67dd7cddfSDavid du Colombier 
77dd7cddfSDavid du Colombier void
mempoly(Memimage * dst,Point * vert,int nvert,int end0,int end1,int radius,Memimage * src,Point sp,int op)8*6a9fc400SDavid du Colombier mempoly(Memimage *dst, Point *vert, int nvert, int end0, int end1, int radius, Memimage *src, Point sp, int op)
97dd7cddfSDavid du Colombier {
107dd7cddfSDavid du Colombier 	int i, e0, e1;
117dd7cddfSDavid du Colombier 	Point d;
127dd7cddfSDavid du Colombier 
137dd7cddfSDavid du Colombier 	if(nvert < 2)
147dd7cddfSDavid du Colombier 		return;
157dd7cddfSDavid du Colombier 	d = subpt(sp, vert[0]);
167dd7cddfSDavid du Colombier 	for(i=1; i<nvert; i++){
177dd7cddfSDavid du Colombier 		e0 = e1 = Enddisc;
187dd7cddfSDavid du Colombier 		if(i == 1)
197dd7cddfSDavid du Colombier 			e0 = end0;
207dd7cddfSDavid du Colombier 		if(i == nvert-1)
217dd7cddfSDavid du Colombier 			e1 = end1;
22*6a9fc400SDavid du Colombier 		memline(dst, vert[i-1], vert[i], e0, e1, radius, src, addpt(d, vert[i-1]), op);
237dd7cddfSDavid du Colombier 	}
247dd7cddfSDavid du Colombier }
25