rect

rect — the VIPS rectangle class

Stability Level

Stable, unless otherwise indicated

Synopsis

#include <vips/vips.h>

                    VipsRect;
#define             VIPS_RECT_RIGHT                     (R)
#define             VIPS_RECT_BOTTOM                    (R)
#define             VIPS_RECT_HCENTRE                   (R)
#define             VIPS_RECT_VCENTRE                   (R)
gboolean            vips_rect_isempty                   (const VipsRect *r);
gboolean            vips_rect_includespoint             (const VipsRect *r,
                                                         int x,
                                                         int y);
gboolean            vips_rect_includesrect              (const VipsRect *r1,
                                                         const VipsRect *r2);
gboolean            vips_rect_equalsrect                (const VipsRect *r1,
                                                         const VipsRect *r2);
void                vips_rect_marginadjust              (VipsRect *r,
                                                         int n);
void                vips_rect_intersectrect             (const VipsRect *r1,
                                                         const VipsRect *r2,
                                                         VipsRect *out);
void                vips_rect_unionrect                 (const VipsRect *r1,
                                                         const VipsRect *r2,
                                                         VipsRect *out);
VipsRect *          vips_rect_dup                       (const VipsRect *r);
void                vips_rect_normalise                 (VipsRect *r);

Description

The VipsRect class and associated types and macros.

Details

VipsRect

typedef struct {
	int left;
	int top;
	int width;
	int height;
} VipsRect;

A VipsRect is a rectangular area of pixels. This is a struct for performing simple rectangle algebra.

int left;

left edge of rectangle

int top;

top edge of rectangle

int width;

width of rectangle

int height;

height of rectangle

VIPS_RECT_RIGHT()

#define VIPS_RECT_RIGHT(R) ((R)->left + (R)->width)

VIPS_RECT_BOTTOM()

#define VIPS_RECT_BOTTOM(R) ((R)->top + (R)->height)

VIPS_RECT_HCENTRE()

#define VIPS_RECT_HCENTRE(R) ((R)->left + (R)->width / 2)

VIPS_RECT_VCENTRE()

#define VIPS_RECT_VCENTRE(R) ((R)->top + (R)->height / 2)

vips_rect_isempty ()

gboolean            vips_rect_isempty                   (const VipsRect *r);

Is r empty? ie. zero width or height.

r :

rectangle to test

Returns :

TRUE if r contains no pixels.

vips_rect_includespoint ()

gboolean            vips_rect_includespoint             (const VipsRect *r,
                                                         int x,
                                                         int y);

Does r contain point (x, y)?

r :

rectangle to test

x :

position to test for

y :

position to test for

Returns :

TRUE if r contains (x, y).

vips_rect_includesrect ()

gboolean            vips_rect_includesrect              (const VipsRect *r1,
                                                         const VipsRect *r2);

Is r2 a subset of r1?

r1 :

outer rectangle

r2 :

inner rectangle

Returns :

TRUE if r2 is a subset of r1.

vips_rect_equalsrect ()

gboolean            vips_rect_equalsrect                (const VipsRect *r1,
                                                         const VipsRect *r2);

Is r1 equal to r2?

r1 :

first rectangle

r2 :

second rectangle

Returns :

TRUE if r1 is equal to r2.

vips_rect_marginadjust ()

void                vips_rect_marginadjust              (VipsRect *r,
                                                         int n);

Enlarge r by n. +1 means out one pixel.

r :

rectangle to adjust

n :

enlarge by

vips_rect_intersectrect ()

void                vips_rect_intersectrect             (const VipsRect *r1,
                                                         const VipsRect *r2,
                                                         VipsRect *out);

Fill out with the intersection of r1 and r2. out can equal r1 or r2.

r1 :

input rectangle 1

r2 :

input rectangle 2

out :

output rectangle

vips_rect_unionrect ()

void                vips_rect_unionrect                 (const VipsRect *r1,
                                                         const VipsRect *r2,
                                                         VipsRect *out);

Fill out with the bounding box of r1 and r2. out can equal r1 or r2.

r1 :

input rectangle 1

r2 :

input rectangle 2

out :

output rectangle

vips_rect_dup ()

VipsRect *          vips_rect_dup                       (const VipsRect *r);

Duplicate a rect to the heap. You need to free the result with vips_free().

r :

rectangle to duplicate

Returns :

a pointer to copy of r allocated on the heap.

vips_rect_normalise ()

void                vips_rect_normalise                 (VipsRect *r);

Make sure width and height are >0 by moving the origin and flipping the rect.

r :

rect to normalise

See Also

region