|  | .TH ADDPT 3 | 
|  | .SH NAME | 
|  | addpt, subpt, mulpt, divpt, rectaddpt, rectsubpt, insetrect, canonrect, eqpt, eqrect, ptinrect, rectinrect, rectXrect, rectclip, combinerect, Dx, Dy, Pt, Rect, Rpt \- arithmetic on points and rectangles | 
|  | .SH SYNOPSIS | 
|  | .B #include <u.h> | 
|  | .br | 
|  | .B #include <libc.h> | 
|  | .br | 
|  | .B #include <draw.h> | 
|  | .PP | 
|  | .B | 
|  | Point	addpt(Point p, Point q) | 
|  | .PP | 
|  | .B | 
|  | Point	subpt(Point p, Point q) | 
|  | .PP | 
|  | .B | 
|  | Point	mulpt(Point p, int a) | 
|  | .PP | 
|  | .B | 
|  | Point	divpt(Point p, int a) | 
|  | .PP | 
|  | .B | 
|  | Rectangle	rectaddpt(Rectangle r, Point p) | 
|  | .PP | 
|  | .B | 
|  | Rectangle	rectsubpt(Rectangle r, Point p) | 
|  | .PP | 
|  | .B | 
|  | Rectangle	insetrect(Rectangle r, int n) | 
|  | .PP | 
|  | .B | 
|  | Rectangle	canonrect(Rectangle r) | 
|  | .PP | 
|  | .B | 
|  | int		eqpt(Point p, Point q) | 
|  | .PP | 
|  | .B | 
|  | int		eqrect(Rectangle r, Rectangle s) | 
|  | .PP | 
|  | .B | 
|  | int		ptinrect(Point p, Rectangle r) | 
|  | .PP | 
|  | .B | 
|  | int		rectinrect(Rectangle r, Rectangle s) | 
|  | .PP | 
|  | .B | 
|  | int		rectXrect(Rectangle r, Rectangle s) | 
|  | .PP | 
|  | .B | 
|  | int		rectclip(Rectangle *rp, Rectangle b) | 
|  | .PP | 
|  | .B | 
|  | void		combinerect(Rectangle *rp, Rectangle b) | 
|  | .PP | 
|  | .B | 
|  | int		Dx(Rectangle r) | 
|  | .PP | 
|  | .B | 
|  | int		Dy(Rectangle r) | 
|  | .PP | 
|  | .B | 
|  | Point	Pt(int x, int y) | 
|  | .PP | 
|  | .B | 
|  | Rectangle	Rect(int x0, int y0, int x1, int y1) | 
|  | .PP | 
|  | .B | 
|  | Rectangle	Rpt(Point p, Point q) | 
|  | .SH DESCRIPTION | 
|  | The functions | 
|  | .IR Pt , | 
|  | .I Rect | 
|  | and | 
|  | .I Rpt | 
|  | construct geometrical data types from their components. | 
|  | .PP | 
|  | .I Addpt | 
|  | returns the Point | 
|  | sum of its arguments: | 
|  | .BI Pt( p .x+ q .x, | 
|  | .IB p .y+ q .y) \f1. | 
|  | .I Subpt | 
|  | returns the Point | 
|  | difference of its arguments: | 
|  | .BI Pt( p .x- q .x, | 
|  | .IB p .y- q .y) \f1. | 
|  | .I Mulpt | 
|  | returns the Point | 
|  | .BI Pt( p .x* a , | 
|  | .IB p .y* a ) \f1. | 
|  | .I Divpt | 
|  | returns the Point | 
|  | .BI Pt( p .x/ a , | 
|  | .IB p .y/ a ) \f1. | 
|  | .PP | 
|  | .I Rectaddpt | 
|  | returns the Rectangle | 
|  | .BI Rect(add( r .min, | 
|  | .IB p ) \f1, | 
|  | .BI add( r .max, | 
|  | .IB p )) \f1; | 
|  | .I rectsubpt | 
|  | returns the Rectangle | 
|  | .BI Rpt(sub( r .min, | 
|  | .IB p ), | 
|  | .BI sub( r .max, | 
|  | .IB p ))\fR. | 
|  | .PP | 
|  | .I Insetrect | 
|  | returns the Rectangle | 
|  | .BI Rect( r .min.x+ n \f1, | 
|  | .IB r .min.y+ n \f1, | 
|  | .IB r .max.x- n \f1, | 
|  | .IB r .max.y- n ) \f1. | 
|  | .PP | 
|  | .I Canonrect | 
|  | returns a rectangle with the same extent as | 
|  | .IR r , | 
|  | canonicalized so that | 
|  | .B min.x | 
|  | ≤ | 
|  | .BR max.x , | 
|  | and | 
|  | .B min.y | 
|  | ≤ | 
|  | .BR max.y . | 
|  | .PP | 
|  | .I Eqpt | 
|  | compares its argument Points and returns | 
|  | 0 if unequal, | 
|  | 1 if equal. | 
|  | .I Eqrect | 
|  | does the same for its argument Rectangles. | 
|  | .PP | 
|  | .I Ptinrect | 
|  | returns 1 if | 
|  | .I p | 
|  | is a point within | 
|  | .IR r , | 
|  | and 0 otherwise. | 
|  | .PP | 
|  | .I Rectinrect | 
|  | returns 1 if all the pixels in | 
|  | .I r | 
|  | are also in | 
|  | .IR s , | 
|  | and 0 otherwise. | 
|  | .PP | 
|  | .I RectXrect | 
|  | returns 1 if | 
|  | .I r | 
|  | and | 
|  | .I s | 
|  | share any point, and 0 otherwise. | 
|  | .PP | 
|  | .I Rectclip | 
|  | clips in place | 
|  | the Rectangle pointed to by | 
|  | .I rp | 
|  | so that it is completely contained within | 
|  | .IR b . | 
|  | The return value is 1 if any part of | 
|  | .RI * rp | 
|  | is within | 
|  | .IR b . | 
|  | Otherwise, the return value is 0 and | 
|  | .RI * rp | 
|  | is unchanged. | 
|  | .PP | 
|  | .I Combinerect | 
|  | overwrites | 
|  | .B *rp | 
|  | with the smallest rectangle sufficient to cover all the pixels of | 
|  | .B *rp | 
|  | and | 
|  | .BR b . | 
|  | .PP | 
|  | The functions | 
|  | .I Dx | 
|  | and | 
|  | .I Dy | 
|  | give the width (Δx) and height (Δy) of a Rectangle. | 
|  | They are implemented as macros. | 
|  | .SH SOURCE | 
|  | .B \*9/src/libdraw | 
|  | .SH SEE ALSO | 
|  | .IR graphics (3) |