.TH Rect 3 "2 May 1991" .SH NAME im_rect_marginadjust, im_rect_includespoint, im_rect_includesrect, im_rect_intersectrect, im_rect_isempty, im_rect_unionrect, im_rect_normalise, im_rect_equalsrect, im_rect_dup, IM_RECT_RIGHT, IM_RECT_BOTTOM, IM_RECT_HCENTRE, IM_RECT_VCENTRE \- rectangle algebra functions .SH SYNOPSIS #include .br #include typedef struct { .br int left, top, width, height; .br } Rect; #define IM_RECT_RIGHT(R) ((R)->left + (R)->width) .br #define IM_RECT_BOTTOM(R) ((R)->top + (R)->height) .br #define IM_RECT_HCENTRE(R) ((R)->left + (R)->width / 2) .br #define IM_RECT_VCENTRE(R) ((R)->top + (R)->height / 2) void im_rect_marginadjust( Rect *r, int n ); .br int im_rect_includespoint( Rect *r, int x, int y ); .br int im_rect_includesrect( Rect *r1, Rect *r2 ); .br void im_rect_intersectrect( Rect *r1, Rect *r2, Rect *r3 ); .br int im_rect_isempty( Rect *r ); .br void im_rect_unionrect( Rect *r1, Rect *r2, Rect *r3 ); .br int im_rect_equalsrect( Rect *r1, Rect *r2 ); .br Rect *im_rect_dup( Rect *r ); .br void im_rect_normalise( Rect *r ); .SH DESCRIPTION These functions perform simple algebra on Rect structs. There should also be a set of functions to do rectlist algebra. im_rect_marginadjust(3) expands a Rect by n units up, down, left and right. Negative expansions shrink the Rect. im_rect_includespoint(3) returns non-zero if point (x,y) lies within Rect r. im_rect_includesrect(3) returns non-zero if Rect r2 lies completely within Rect r1. im_rect_intersectrect(3) fills Rect r3 with the intersection of Rects r1 and r2. im_rect_isempty(3) returns non-zero if Rect r has either width less than or equal to 0 or height less than or equal to 0. im_rect_unionrect(3) fills Rect r3 with the bounding box of Rect r1 and Rect r2. A proper union operation requires lists of rectangles, sadly. im_rect_equalsrect(3) returns non-zero if r1 and r2 are identical. im_rect_dup(3) allocates memory for a new Rect structure and copies the elements of r into it. It returns a pointer to the new struct, or NULL on error. im_rect_normalise(3) flips r so that the same pixels are enclosed, but width and height are guaranteed >=0. .SH SEE ALSO im_prepare(3), im_region_create(3) .SH COPYRIGHT National Gallery, 1992 .SH AUTHOR J. Cupitt