.TH IM_WRITELINE 3 "22 April 1991"
.SH NAME
im_writeline \- writes a line of data in the image descriptor
.SH SYNOPSIS
.B #include <vips/vips.h>

.B int im_writeline(ypos, image, buffer)
.br
.B int ypos;
.br
.B IMAGE *image;
.br
.B char *buffer;
.SH DESCRIPTION
.B im_writeline(3)
writes the ypos line of an image held in buffer to either the output
buffer image (previously set by im_setbuf(3)) or to an output file
(previously set by im_openput(3)).  The function provides uniform treatment of 
output irrespectively whether it is a file or a buffer image.

You should be careful that the buffer does indeed contain enough data for a
complete line of pels --- see lsize(3).

Any evaluation callbacks which have been added to image are triggered --- see
im_generate(3) and im_add_eval_callback(3).
.SH BUGS
This function changed in VIPS6: 
programs written previously must be modified by removing the last argument
of the old im_writeline(3).
.SH RETURN VALUE
The function returns 0 on success and -1 on error.
.SH SEE ALSO
im_setbuf(3), im_openout(3), im_add_eval_callback(3).
.SH COPYRIGHT
N. Dessipris
.SH AUTHOR
N. Dessipris 23/04/1991
