.TH IM_AND 3 "30 October 1992"
.SH NAME
im_paintrect, im_plotmask, im_readpoint, im_plotpoint, im_fastline,
im_fastlineuser \- suck pels up, and paint them down somewhere else
.SH SYNOPSIS
.B #include <vips/vips.h>

int im_readpoint( im, x, y, ink )
.br
IMAGE *im;
.br
int x, y;
.br
PEL *ink;

int im_plotpoint( im, x, y, ink )
.br
IMAGE *im;
.br
int x, y;
.br
PEL *ink;

int im_plotmask( im, ix, iy, ink, mask, r )
.br
IMAGE *im;
.br
int ix, iy;
.br
PEL *ink;
.br
PEL *mask;
.br
Rect *r;

int im_paintrect( im, r, ink )
.br
IMAGE *im;
.br
Rect *r;
.br
PEL *ink;

int im_fastline( im, x1, y1, x2, y2, ink )
.br
IMAGE *im;
.br
int x1, y1, x2, y2;
.br
PEL *ink;

int im_fastlineuser( im, x1, y1, x2, y2, 
.br
    plot_fn, client1, client2, client3 )
.br
IMAGE *im;
.br
int x1, y1, x2, y2;
.br
int (*plot_fn)();
.br
void *client1, *client2, *client3;

int plot_fn( im, x, y, client1, client2, client3 )
.br
IMAGE *im;
.br
int x, y;
.br
void *client1, *client2, *client3;

int im_lineset( IMAGE *in, IMAGE *out, IMAGE *mask, IMAGE *ink,
.br
  int n, int *x1v, int *y1v, int *x2v, int *y2v )

.SH DESCRIPTION
.B im_readpoint(3) 
sucks a pel from position (x,y) into a buffer; all other
functions paint that buffer back again in various ways. These functions will
work for an image of any type, since they rely on 
.B im_readpoint(3) 
for their
data. If you read a pel from one image and paint with it to another, it is
your responsibility to check that the two images have identical pels.

All these functions are `in place,' that is, they write directly to the
output image! Be very careful, you can destroy data.

.B im_plotmask(3) 
takes an array of 0/255s and a Rect describing the size and
offset of the array. It adds (ix,iy) to the array offset, and then paint pels
into all array positions which are non-zero. Rect need not lie inside the
image - the function clips carefully at the edges.

.B im_paintrect(3) 
fills the rectangle described with ink. The Rect can be any
size and at any position - the function clipps against the edges of the
image.

.B im_fastline(3) 
is a replacement for 
.B im_line(3) 
which plots the specified ink in
the image. The start and end points must lie entirely inside the image.

.B im_fastlineuser(3) 
does not plot points, instead it calls a user plot function
for every position along the line. There is no clipping - the endpoints may be
anywhere at all. Three client values are carried around and passed into the
user function.

.B im_lineset(3)
copies the image and draws a set of lines on the copy. The lines are drawn
using the mask image as a brush to apply the ink image. Useful for nip2.

.SH RETURN VALUE
All functions return 0 on success and -1 on error.
.SH SEE\ ALSO
im_insertplace(3), im_smudge(3).
.SH COPYRIGHT
.br
National Gallery, 1992
.SH AUTHOR
J. Cupitt
