| .TH REGION-OPERATIONS 3 "11 April 1990" |
| .SH NAME |
| im_region_buffer, im_region_image, im_region_region, im_region_position, |
| im_region_equalsregion \- |
| attach data to region |
| .SH SYNOPSIS |
| .B #include <vips/vips.h> |
| |
| int im_region_buffer( reg, r ) |
| .br |
| REGION *reg; |
| .br |
| Rect *r; |
| |
| int im_region_image( reg, r ) |
| .br |
| REGION *reg; |
| .br |
| Rect *r; |
| |
| int im_region_region( reg, treg, r, x, y ) |
| .br |
| REGION *reg, treg; |
| .br |
| Rect *r; |
| .br |
| int x, y; |
| |
| int im_region_position( reg, x, y ) |
| .br |
| REGION *reg; |
| .br |
| int x, y; |
| |
| int im_region_equalsregion( REGION *reg1, REGION *reg2 ) |
| |
| .SH DESCRIPTION |
| These functions are used to say where exactly input from or output to a |
| region goes. Briefly, |
| .B im_region_buffer(3) |
| gives a region its own piece of local storage, |
| .B im_region_image(3) |
| links the region to an image, and |
| .B im_region_region(3) |
| links the region to another region. |
| |
| .B im_region_region(3) |
| is the most powerful of the three --- you can use it to |
| avoid copy operations. See the source for |
| .B im_extract(3), |
| .B im_insert(3), |
| .B im_copy(3), |
| .B im_embed(3), |
| and |
| .B im_lrmerge(3) |
| for examples of its use, and see also |
| .B im_prepare_copy(3). |
| |
| .B im_region_buffer(3) |
| clips Rect r against the size of the image upon which reg is |
| defined, then searches for any calculated pixels which enclose that area. If |
| there are any suitable pixels already, the region is set to point to them. |
| Otherwise, a fresh buffer is allocated. |
| |
| If region->buffer->done is set, then the region is already calculated. |
| Otherwise, the pixels need to be calculated. |
| |
| .B im_region_buffer(3) |
| is called by |
| .B im_prepare(3) |
| just before it calls the user generate function. |
| |
| .B im_region_image(3) |
| attaches reg to the image on which it was defined. The image |
| has to be SETBUF, MMAPIN, MMAPINRW, or OPENIN --- ie., the types passed by |
| .B im_incheck(3). |
| |
| .B im_region_region(3) |
| redirects reg to treg. treg can be defined on another |
| image. r is clipped against the size of reg's image, and against treg->valid. |
| treg has to have pel data associated with it (ie. memory local to treg, memory |
| that is part of the image on which treg is defined, or even memory from a |
| third region), and the pel data has to be in a form which is compatible with |
| reg, ie. BandFmt and Bands must be the same. |
| |
| r becomes the valid field in reg, (x,y) is the top left-hand corner of the |
| area in treg to which valid is mapped. |
| |
| |
| .B im_region_position(3) |
| changes reg->valid, so that reg->valid.left == x and |
| reg->valid.top == y. width and height are clipped against the size of the |
| image. If x < 0 or y < 0 or the clipped rect has zero width or height, the |
| call fails. |
| |
| This function affects the way that pels are addressed by the |
| .B IM_REGION_ADDR(3) |
| macro. It does not affect the pels themselves! It has the effect of moving |
| the area of pels a region represents. This call is used by |
| .B im_extract(3). |
| |
| .B im_region_equalsregion(3) |
| tests for reg1 and reg2 are identical, ie.: |
| |
| IM_REGION_ADDR( reg1, x, y ) == |
| IM_REGION_ADDR( reg2, x, y ) && |
| *IM_REGION_ADDR( reg1, x, y ) == |
| *IM_REGION_ADDR( reg2, x, y ) |
| |
| It is used internally by VIPS, but may be useful to applications. |
| |
| .SH RETURN VALUE |
| All int-valued functions return zero on success and non-zero on error. |
| .SH COPYRIGHT |
| National Gallery, 1993 |
| .SH AUTHOR |
| J. Cupitt \- 23/7/93 |