xref: /plan9/sys/src/cmd/unix/drawterm/libdraw/rectclip.c (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
1*8ccd4a63SDavid du Colombier #include <u.h>
2*8ccd4a63SDavid du Colombier #include <libc.h>
3*8ccd4a63SDavid du Colombier #include <draw.h>
47dd7cddfSDavid du Colombier 
57dd7cddfSDavid du Colombier int
rectclip(Rectangle * rp,Rectangle b)67dd7cddfSDavid du Colombier rectclip(Rectangle *rp, Rectangle b)		/* first by reference, second by value */
77dd7cddfSDavid du Colombier {
87dd7cddfSDavid du Colombier 	Rectangle *bp = &b;
97dd7cddfSDavid du Colombier 	/*
107dd7cddfSDavid du Colombier 	 * Expand rectXrect() in line for speed
117dd7cddfSDavid du Colombier 	 */
127dd7cddfSDavid du Colombier 	if((rp->min.x<bp->max.x && bp->min.x<rp->max.x &&
137dd7cddfSDavid du Colombier 	    rp->min.y<bp->max.y && bp->min.y<rp->max.y)==0)
147dd7cddfSDavid du Colombier 		return 0;
157dd7cddfSDavid du Colombier 	/* They must overlap */
167dd7cddfSDavid du Colombier 	if(rp->min.x < bp->min.x)
177dd7cddfSDavid du Colombier 		rp->min.x = bp->min.x;
187dd7cddfSDavid du Colombier 	if(rp->min.y < bp->min.y)
197dd7cddfSDavid du Colombier 		rp->min.y = bp->min.y;
207dd7cddfSDavid du Colombier 	if(rp->max.x > bp->max.x)
217dd7cddfSDavid du Colombier 		rp->max.x = bp->max.x;
227dd7cddfSDavid du Colombier 	if(rp->max.y > bp->max.y)
237dd7cddfSDavid du Colombier 		rp->max.y = bp->max.y;
247dd7cddfSDavid du Colombier 	return 1;
257dd7cddfSDavid du Colombier }
26