131 lines
3.6 KiB
Groff
131 lines
3.6 KiB
Groff
|
.TH IM_IOCHECK 3 "11 April 1990"
|
||
|
.SH NAME
|
||
|
im_demand_hint \- hint on demand style for im_generate(3)
|
||
|
.SH SYNOPSIS
|
||
|
#include <vips/vips.h>
|
||
|
|
||
|
int im_demand_hint( im, hint, in1, in2, ..., NULL )
|
||
|
.br
|
||
|
IMAGE *im, *in1, *in2, ...;
|
||
|
.br
|
||
|
im_demand_type hint;
|
||
|
|
||
|
int im_demand_hint_array( im, hint, in )
|
||
|
.br
|
||
|
IMAGE *im, **in;
|
||
|
.br
|
||
|
im_demand_type hint;
|
||
|
.SH DESCRIPTION
|
||
|
.B im_demand_hint(3)
|
||
|
suggests to im_generate(3) the sorts of demand with which this image processing
|
||
|
operation would be happiest.
|
||
|
|
||
|
.B im
|
||
|
is the image this operation is generating.
|
||
|
.B hint
|
||
|
is the demand style this operation would like (see below), and
|
||
|
.B in1 ...
|
||
|
is a NULL-terminated list of the image upon which this output image directly
|
||
|
depends, that is, the images which this operation will call im_prepare(3) for.
|
||
|
|
||
|
This list of parent images is necessary, as im_demand_hint(3) needs to know
|
||
|
what demand style this operation's ancestors have requested. If an ancestor of
|
||
|
this operation has specified a very restrictive demand style, then this
|
||
|
operation must fall back to that restrictive style and ignore the hint given
|
||
|
in this call to im_demand_hint(3).
|
||
|
|
||
|
VIPS currently supports three demand styles. More may be added in the future.
|
||
|
These demand styles are given below in order of increasing restrictiveness.
|
||
|
When demanding output from a pipeline, im_generate(3) will use the most
|
||
|
restrictive of the styles requested by the operations in the pipeline.
|
||
|
|
||
|
IM_THINSTRIP
|
||
|
.br
|
||
|
This operation would like to output strips the width of the image and a few
|
||
|
pels high. This is option suitable for point-to-point operations, such as
|
||
|
those in the arithmetic package.
|
||
|
|
||
|
This option is only efficient for cases where each output pel depends upon the
|
||
|
pel in the corresponding position in the input image.
|
||
|
|
||
|
IM_FATSTRIP
|
||
|
.br
|
||
|
This operation would like to output strips the width of the image and as high
|
||
|
as possible. This option is suitable for area operations which do not
|
||
|
violently transform coordinates, such as im_conv(3).
|
||
|
|
||
|
IM_SMALLTILE
|
||
|
.br
|
||
|
This is the most general demand format, and is the default. Output is
|
||
|
demanded in small (around 100x100 pel) sections. This style works reasonably
|
||
|
efficiently, even for bizzare operations like 45 degree rotate.
|
||
|
|
||
|
IM_ANY
|
||
|
.br
|
||
|
This image is not being demand-read from a disc file (even indirectly) so any
|
||
|
demand style is OK. It's used for things like
|
||
|
.B im_black(3)
|
||
|
where the pixels are calculated.
|
||
|
|
||
|
.B
|
||
|
im_demand_hint_array(3)
|
||
|
works exactly as im_demand_hint(3), but expects a pointer to a NULL-terminated
|
||
|
array of parent images as its third argument. You may use
|
||
|
im_allocate_input_array(3), if you wish, to build this structure.
|
||
|
|
||
|
As an example, here is part of the code for im_invert(3). In this operation,
|
||
|
each output pel depends upon the corresponding input pel. In other words,
|
||
|
there is no coordinate transformation in im_prepare(3). This style of
|
||
|
operation is most efficient with IM_THINSTRIP IO.
|
||
|
|
||
|
int im_invert( IMAGE *in, IMAGE *out )
|
||
|
.br
|
||
|
{
|
||
|
.br
|
||
|
if( in->Coding != NOCODING ) {
|
||
|
.br
|
||
|
im_errormsg( "im_invert: input coded" );
|
||
|
.br
|
||
|
return( -1 );
|
||
|
.br
|
||
|
}
|
||
|
.br
|
||
|
if( in->BandFmt != FMTUCHAR ) {
|
||
|
.br
|
||
|
im_errormsg( "im_invert: input not UCHAR" );
|
||
|
.br
|
||
|
return( -1 );
|
||
|
.br
|
||
|
}
|
||
|
.br
|
||
|
if( im_piocheck( in, out ) )
|
||
|
.br
|
||
|
return( -1 );
|
||
|
.br
|
||
|
if( im_cp_desc( out, in ) )
|
||
|
.br
|
||
|
return( -1 );
|
||
|
.br
|
||
|
if( im_demand_hint( out, IM_THINSTRIP, in, NULL ) )
|
||
|
.br
|
||
|
return( -1 );
|
||
|
.br
|
||
|
if( im_generate( out,
|
||
|
.br
|
||
|
im_start_one, inv_gen, im_stop_one, in, NULL ) )
|
||
|
.br
|
||
|
return( -1 );
|
||
|
.br
|
||
|
return( 0 );
|
||
|
.br
|
||
|
}
|
||
|
|
||
|
.SH RETURN VALUE
|
||
|
All functions returns 0 on success and non-zero on error.
|
||
|
.SH SEE ALSO
|
||
|
im_generate(3), im_prepare(3).
|
||
|
.SH COPYRIGHT
|
||
|
National Gallery
|
||
|
.SH AUTHOR
|
||
|
J. Cupitt \- 3/9/93
|