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