blob: 79ce5d100ce2055eb7f240f8ea768f4b2e1baf5d [file] [log] [blame]
.TH IM_RENDER 3 "5 October 2003"
.SH NAME
im_render, im_render_fade, im_cache \- make image in the background
.SH SYNOPSIS
#include <vips/vips.h>
int im_render_fade( IMAGE *in, IMAGE *out, IMAGE *mask,
.br
int width, int height, int max,
.br
int fps, int steps,
.br
int priority,
.br
void (*notify)( IMAGE *, Rect *, void * ), void *client );
int im_render( IMAGE *in, IMAGE *out, IMAGE *mask,
.br
int width, int height, int max,
.br
void (*notify)( IMAGE *, Rect *, void * ), void *client );
int im_cache( IMAGE *in, IMAGE *out,
.br
int width, int height, int max );
.SH DESCRIPTION
.B im_render_fade(3)
behaves rather like
.B im_copy(3)
between images
.B in
and
.B out,
except that it keeps a cache of computed pixels. This cache is made of up to
.B max
tiles (a value of -1 for
.B max
means any number of tiles), and each tile is of size
.B width
by
.B height
pixels. Each cache tile is made with a call to
.B im_prepare_thread(3),
so cache tile calculation will be accelerated on multi-CPU machines. If image
.B in
represents a large computation,
.B im_render_fade(3)
can save a lot of time.
If the
.B notify
parameter points to a function, then tiles are not calculated immediately, but
are added to a job list and calculated as CPU becomes available. When a tile has
been calculated, the notify function is passed the image which was being
cached, the area of the image which is now available, and a client pointer.
The notify function will be called by a background thread, so you will usually
need to implement some mechanism to interrupt your main thread and update.
The
.B mask
image is a one band uchar image the same size as out, which has 255 for every
pixels which is in the cache and 0 everywhere else. You should not read
pixels from
.B mask
after
.B out
has been closed. If mask is NULL, then no mask image is written.
If
.B steps
is greater than zero, then pixels in mask are moved between 0 and 255 as tiles
age in that many steps. The
.B fps
parameter sets how many times per second the notify function is called to
indicate that an updated tile is ready.
If
.B priority
is zero, then the render will only run when the system is idle, and only a few
renders will run at any time. Higher values will cause the render to happen
more quickly.
.B im_cache(3)
is a convenience function for
.B im_render_fade(3)
that caches image pixels synchronously. If you ask for an area not in the cache,
execution blocks until the area has been calculated.
.B im_render(3)
is deprecated: it is the old interface to the render function, before the
.B fps
and
.B steps
parameters were added.
.SH RETURN VALUE
The function returns 0 on success, and non-zero on error, setting
im_error().
.SH SEE ALSO
im_prepare(3)
.SH AUTHOR
J Cupitt, 2003