V10/cmd/view2d/hide.c

Compare this file to the similar file:
Show the results in this format:

#include	<jerq.h>

#define		ONE		512

Point buf1[128], buf2[128], *old = buf2, *new = buf1;

jdraw(b)
	Bitmap *b;
{
}
#ifdef	AGH
/*
	for(j = nx+ny-3; j > 0; j--)
	{
		y = min(ny-1, j);
		lasty = x = j-y;
		while(y != lasty)
		{
			POLY(x, y, x, y-1, x+1, y-1, x+1, y);
			x++;
			y--;
		}
		wait(CPU);
	}
*/
	Point left, right, p, *np, *op;
	int wleft;

	old[0].y = -1;
	np = new;
	op = old;
	nextpt(np++);
	nextpt(np++);
	left = np[-1];
	segment(b, new[0], new[1], F_OR);

	while(nextpt(&right))
	{
		if(left.x > right.x)
		{
			left = right;
			np->y = -1;
			np = old; old = new; new = np; op = old;
			continue;
		}
		if(left.x < op->x)
		{
			*np++ = left;
			*np++ = right;
			segment(b, left, right, F_OR);
		}
		else if(left.x > op->x)
			*np++ = *op++;
		else
		{
			
		}
		left = right;
	}
}

addseg(b, l, ls, r, rs)
	Bitmap *b;
	Point l, r;
	register Segment *ls, *rs;
{
	register Segment *s;

	if(l.x != ls->l.x)
	{
		s = newseg(l, ls->r);
		ls->r = l;
		s->next = ls->next;
		ls->next = s;
		if(ls == rs) rs = s;
	}
	else
		ls->l.y = l.y;
	recalc(ls);
	if(r.x != rs->r.x)
	{
		s = newseg(r, rs->r);
		rs->r = r;
		s->next = rs->next;
		rs->next = s;
	}
	else
		rs->r.y = r.y;
	recalc(rs);
	segment(b, l, r, F_OR);
}

static Segment *
newseg(l, r)
	Point l, r;
{
	register Segment *s;

	s = (Segment *)alloc(sizeof *s);
	s->next = 0;
	s->l = l;
	s->r = r;
	recalc(s);
	return(s);
}

recalc(s)
	register Segment *s;
{
	s->m = muldiv(s->r.y-s->l.y, ONE, s->r.x-s->l.x);
	s->b = s->l.y - muldiv(s->m, s->l.x, ONE);
}

crosses(s, l, r, p)
	Segment *s;
	Point l, r, *p;
{
	register m, b;

	m = muldiv(r.y-l.y, ONE, r.x-l.x);
	if(m == s->m) return(0);
	b = l.y - s->m*l.x;
	p->x = muldiv(s->b-b, ONE, m-s->m);
	p->y = m*p->x + b;
	return((p->x >= s->l.x) && (p->x <= s->r.x) && (p->x >= l.x) && (p->x <= r.x));
}

ptrels(p, s)
	Point p;
	Segment *s;
{
	register Segment *s;

	if((s->l.y < 0) || (s->r.y < 0)) return(1);
	return((muldiv(s->m, p.x, ONE)+s->b) - p.y);
}
#endif