V9/jtools/man/man3/add.3

Compare this file to the similar file:
Show the results in this format:

.TH ADD 3
.CT 2 math
.SH NAME
add, sub, mul, div, eqpt, eqrect, inset, muldiv, ptinrect, raddp, rsubp, rectXrect, rectclip \- arithmetic on points and rectangles
.SH SYNOPSIS
.B #include <jerq.h>
.PP
.B Point add(p, q)
.B Point p, q;
.PP
.B Point sub(p, q)
.B  Point p, q;
.PP
.B Point mul(p, a)
.B  Point p; int a;
.PP
.B Point div(p, a)
.B  Point p; int a;
.PP
.B int eqpt(p, q)
.B  Point p, q;
.PP
.B int eqrect(r, s)
.B  Rectangle r, s;
.PP
.B Rectangle inset(r, n)
.B  Rectangle r; int n;
.PP
.B int muldiv(a, b, c)
.B  int a, b, c;
.PP
.B int ptinrect(p, r)
.B  Point p; Rectangle r;
.PP
.B Rectangle raddp(r, p)
.B  Rectangle r; Point p;
.PP
.B Rectangle rsubp(r, p)
.B  Rectangle r; Point p;
.PP
.B int rectXrect(r, s)
.B  Rectangle r, s;
.PP
.B int rectclip(rp, s)
.B Rectangle *rp, s;
.SH DESCRIPTION
.I Add
returns the Point
sum of its arguments:
.BI Pt( p .x+ q .x,
.IB p .y+ q .y).
.I Sub
returns the Point
difference of its arguments:
.BI Pt( p .x- q .x,
.IB p .y- q .y).
.I Mul
returns the Point
.BI Pt( p .x* a ,
.IB p .y* a ).
.I Div
returns the Point
.BI Pt( p .x/ a ,
.IB p .y/ a ).
.PP
.I Eqpt
and
.I eqrect
compare their arguments and return
0 if unequal,
1 if equal.
.PP
.I Inset
returns the Rectangle
.BI Rect( r .origin.x+ n ,
.IB r .origin.y+ n ,
.IB r .corner.x- n ,
.IB r .corner.y- n ) .
The following code creates a clear rectangle
.B r
with a 2-pixel wide border inside
.BR r :
.IP
.EX
rectf(&display, r, F_OR);
rectf(&display, inset(r, 2), F_CLR);
.EE
.PP
.I Muldiv
is a macro that returns the 16-bit result
.BI ( a * b )/  c\fR,
with
.BI ( a * b  )
calculated to 32 bits, so
no precision is lost.
.PP
.I Ptinrect
returns 1 if
.I p
is a point within
.IR r ,
and 0 otherwise.
.PP
.I Raddp
returns the Rectangle
.BI Rect(add( r .origin,
.IB p ),
.BI add( r .corner,
.IB p ))\fR;
.I rsubp
returns the Rectangle
.BI Rect(sub( r .origin,
.IB p ),
.BI sub( r .corner,
.IB p ))\fR.
.PP
.I RectXrect
returns 1 if
.I r
and
.I s
share any point; 0 otherwise.
.PP
.I Rectclip
clips in place
the Rectangle pointed to by
.I rp
so that it is completely contained within
.IR s .
The return value is 1 if any part of
.RI * rp
is within
.IR s .
Otherwise, the return value is 0 and
.RI * rp
is unchanged.
.SH SEE ALSO
.IR types (5)