xref: /plan9/sys/src/cmd/unix/drawterm/libmemdraw/poly.c (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
1*8ccd4a63SDavid du Colombier #include <u.h>
2*8ccd4a63SDavid du Colombier #include <libc.h>
3*8ccd4a63SDavid du Colombier #include <draw.h>
4*8ccd4a63SDavid du Colombier #include <memdraw.h>
5*8ccd4a63SDavid 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*8ccd4a63SDavid 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;
15*8ccd4a63SDavid 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*8ccd4a63SDavid 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