xref: /plan9/sys/src/cmd/unix/drawterm/libmemdraw/poly.c (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1*7dd7cddfSDavid du Colombier #include "../lib9.h"
2*7dd7cddfSDavid du Colombier 
3*7dd7cddfSDavid du Colombier #include "../libdraw/draw.h"
4*7dd7cddfSDavid du Colombier #include "../libmemdraw/memdraw.h"
5*7dd7cddfSDavid du Colombier 
6*7dd7cddfSDavid du Colombier void
7*7dd7cddfSDavid du Colombier mempoly(Memimage *dst, Point *vert, int nvert, int end0, int end1, int radius, Memimage *src, Point sp)
8*7dd7cddfSDavid du Colombier {
9*7dd7cddfSDavid du Colombier 	int i, e0, e1;
10*7dd7cddfSDavid du Colombier 	Point d;
11*7dd7cddfSDavid du Colombier 	Point tp, tp_1;
12*7dd7cddfSDavid du Colombier 
13*7dd7cddfSDavid du Colombier 	if(nvert < 2)
14*7dd7cddfSDavid du Colombier 		return;
15*7dd7cddfSDavid du Colombier 
16*7dd7cddfSDavid du Colombier 	/* use temp tp to avoid unaligned volatile warning on digital unix */
17*7dd7cddfSDavid du Colombier 	tp = vert[0];
18*7dd7cddfSDavid du Colombier 	d = subpt(sp, tp);
19*7dd7cddfSDavid du Colombier 	for(i=1; i<nvert; i++){
20*7dd7cddfSDavid du Colombier 		e0 = e1 = Enddisc;
21*7dd7cddfSDavid du Colombier 		if(i == 1)
22*7dd7cddfSDavid du Colombier 			e0 = end0;
23*7dd7cddfSDavid du Colombier 		if(i == nvert-1)
24*7dd7cddfSDavid du Colombier 			e1 = end1;
25*7dd7cddfSDavid du Colombier 		tp = vert[i];
26*7dd7cddfSDavid du Colombier 		tp_1 = vert[i-1];
27*7dd7cddfSDavid du Colombier 		memline(dst, tp_1, tp, e0, e1, radius, src, addpt(d, tp_1));
28*7dd7cddfSDavid du Colombier 	/*	memline(dst, vert[i-1], vert[i], e0, e1, radius, src, addpt(d, vert[i-1])); */
29*7dd7cddfSDavid du Colombier 	}
30*7dd7cddfSDavid du Colombier }
31