IM_IMAGE_ADDR(3)

IM_IMAGE_ADDR3

Macros for images

Usage

#include <vips/vips.h>

int IM_IMAGE_SIZEOF_ELEMENT( im )
IMAGE *im;

int IM_IMAGE_SIZEOF_PEL( im )
IMAGE *im;

int IM_IMAGE_SIZEOF_LINE( im )
IMAGE *im;

int IM_IMAGE_N_ELEMENTS( im )
IMAGE *im;

char *IM_IMAGE_ADDR( im, x, y )
IMAGE *im;
int x;
int y;

Overview

These macros help to simplify address arithmetic for images.

IM_IMAGE_SIZEOF_ELEMENT(3) returns sizeof( one band element ).

IM_IMAGE_SIZEOF_PEL(3) returns sizeof( one pel ).

IM_IMAGE_SIZEOF_LINE(3) returns sizeof( one horizontal line of pels ).

IM_IMAGE_N_ELEMENTS(3) returns the number of band elements across a horizontal line.

IM_IMAGE_ADDR(3) returns a pointer to the pixel at position (x,y) in the image. The point (x,y) should lie within the image.

If the macro DEBUG has been defined, then IM_IMAGE_ADDR(3) will also perform bounds checking. If you ask for the address of a pel outside the image, then IM_IMAGE_ADDR(3) will print an error message of the form:

IM_IMAGE_ADDR: point out of bounds, file "test.c", line 18
(point x=50, y=0
should have been within Rect left=0, top=0, width=50, height=50)

and call abort(3).

DEBUG needs to be defined *before* vips.h is included. Either define DEBUG with -D in your Makefile, or have a #define DEBUG right at the top of your file.

Releases

4 releases since Debian 3.1 (Sarge); the text changed 2 times.

  1. 3.1–4.0
  2. 5.0
  3. 6.0

Author

J. Cupitt - 23/7/93

From libvips-dev 7.20.7-1+b3 in Debian 6.0 (Squeeze). Parsed by carta from the page's man source.