xref: /plan9/sys/src/libdraw/rectclip.c (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1*7dd7cddfSDavid du Colombier #include <u.h>
2*7dd7cddfSDavid du Colombier #include <libc.h>
3*7dd7cddfSDavid du Colombier #include <draw.h>
4*7dd7cddfSDavid du Colombier 
5*7dd7cddfSDavid du Colombier int
rectclip(Rectangle * rp,Rectangle b)6*7dd7cddfSDavid du Colombier rectclip(Rectangle *rp, Rectangle b)		/* first by reference, second by value */
7*7dd7cddfSDavid du Colombier {
8*7dd7cddfSDavid du Colombier 	Rectangle *bp = &b;
9*7dd7cddfSDavid du Colombier 	/*
10*7dd7cddfSDavid du Colombier 	 * Expand rectXrect() in line for speed
11*7dd7cddfSDavid du Colombier 	 */
12*7dd7cddfSDavid du Colombier 	if((rp->min.x<bp->max.x && bp->min.x<rp->max.x &&
13*7dd7cddfSDavid du Colombier 	    rp->min.y<bp->max.y && bp->min.y<rp->max.y)==0)
14*7dd7cddfSDavid du Colombier 		return 0;
15*7dd7cddfSDavid du Colombier 	/* They must overlap */
16*7dd7cddfSDavid du Colombier 	if(rp->min.x < bp->min.x)
17*7dd7cddfSDavid du Colombier 		rp->min.x = bp->min.x;
18*7dd7cddfSDavid du Colombier 	if(rp->min.y < bp->min.y)
19*7dd7cddfSDavid du Colombier 		rp->min.y = bp->min.y;
20*7dd7cddfSDavid du Colombier 	if(rp->max.x > bp->max.x)
21*7dd7cddfSDavid du Colombier 		rp->max.x = bp->max.x;
22*7dd7cddfSDavid du Colombier 	if(rp->max.y > bp->max.y)
23*7dd7cddfSDavid du Colombier 		rp->max.y = bp->max.y;
24*7dd7cddfSDavid du Colombier 	return 1;
25*7dd7cddfSDavid du Colombier }
26