# FreeBSD Manual Pages

```ADDPT(3)		   Library Functions Manual		      ADDPT(3)

NAME
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	 subpt(Point p,	Point q)

Point	 mulpt(Point p,	int a)

Point	 divpt(Point p,	int a)

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).

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 ax	max.x, and min.y ax 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	other-
wise.

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  un-
changed.

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 (Ix) and height (Iy) of  a  Rec-
tangle.	They are implemented as	macros.

SOURCE
/src/libdraw