| ADDPT(3) | ADDPT(3)
| 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
| `/usr/local/plan9/src/libdraw`
SEE ALSO
| graphics(3)