Agar

<-- Back to AG_Intro.3

SYNOPSIS

#include <agar/core.h>
#include <agar/gui.h>

DESCRIPTION

Many functions in Agar accept AG_Rect parameters. This structure describes a two-dimensional integer rectangle:
typedef struct ag_rect {
	int x, y;
	int w, h;
} AG_Rect;

Normalized rectangles have non-negative w and h. Rectangles are serialized using signed 16-bit coordinates, and unsigned 16-bit sizes.

The AG_Rect2 variant includes a redundant endpoint (or alternatively, a redundant size implied by the two endpoints). This uses more space, but allows for faster intersection tests:
typedef struct ag_rect2 {
	int x1, y1;
	int w, h;
	int x2, y2;
} AG_Rect2;

INTERFACE


void AG_RectInit (AG_Rect *rd, int x, int y, int w, int h)

void AG_Rect2Init (AG_Rect2 *rd, int x, int y, int w, int h)

void AG_ReadRect (AG_Rect *rd, AG_DataSource *ds)

void AG_ReadRect2 (AG_Rect2 *rd, AG_DataSource *ds)

void AG_WriteRect (AG_DataSource *ds, const AG_Rect *r)

void AG_WriteRect2 (AG_DataSource *ds, const AG_Rect2 *r)

void AG_Rect2ToRect (AG_Rect *rd, AG_Rect2 r)

void AG_RectToRect2 (AG_Rect2 *rd, AG_Rect *r)

int AG_RectIntersect (AG_Rect *rd, const AG_Rect *a, const AG_Rect *b)

int AG_RectIntersect2 (AG_Rect2 *rd, const AG_Rect2 *a, const AG_Rect2 *b)

int AG_RectInside (const AG_Rect *r, int x, int y)

int AG_RectInside2 (const AG_Rect2 *r, int x, int y)

int AG_RectCompare (const AG_Rect *a, const AG_Rect *b)

int AG_RectCompare2 (const AG_Rect2 *a, const AG_Rect2 *b)

void AG_RectSize (AG_Rect *r, int w, int h)

void AG_RectSize2 (AG_Rect2 *r, int w, int h)

void AG_RectTranslate (AG_Rect *r, int x, int y)

void AG_RectTranslate2 (AG_Rect2 *r, int x, int y)



AG_RectInit() initializes an AG_Rect to coordinates x, y and dimensions w, h.

AG_Rect2Init() initializes an AG_Rect2 to coordinates and dimensions and implicitely computes the endpoint x2, y2.

The AG_ReadRect() function loads a rectangle from the given AG_DataSource(3). AG_WriteRect() writes a rectangle to a data source.

AG_RectToRect2() and AG_Rect2ToRect() convert between the AG_Rect and AG_Rect2 formats.

AG_RectIntersect() and AG_RectIntersect2() return intersection of rectangles a and b.

AG_RectInside() and AG_RectInside2() return 1 if the point x, y lies inside of rectangle r.

AG_RectCompare() and AG_RectCompare2() return 0 if both rectangles possess the same coordinates and dimensions.

AG_RectSize() and AG_RectSize2() resize a rectangle to the specified dimensions.

AG_RectTranslate() and AG_RectTranslate2() translate a rectangle by the specified amount.

SEE ALSO

AG_Intro(3), AG_Widget(3)

HISTORY

The AG_Rect structure first appeared in Agar 1.3.
Csoft.net ElectronTubeStore