TH ADDPT 2
SH NAME
addpt, subpt, mulpt, divpt, rectaddpt, rectsubpt, insetrect, canonrect, eqpt, eqrect, ptinrect, rectinrect, rectXrect, rectclip, combinerect, badrect, 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 badrect(Rectangle r)
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
I Badrect
returns 1 if
I r
is zero, negative size or insanely huge rectangle.
It returns 0 otherwise.
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 /sys/src/libdraw
SH SEE ALSO
IR graphics (2)