This commit is contained in:
John Cupitt 2009-11-02 22:01:09 +00:00
parent ee497eac17
commit ea4562a24a
18 changed files with 476 additions and 406 deletions

View File

@ -39,7 +39,12 @@
</chapter>
<chapter>
<title>API by section (no gtkdoc comments yet)</title>
<title>VIPS operation API by section (no gtkdoc comments yet)</title>
<xi:include href="xml/conversion.xml"/>
</chapter>
<chapter>
<title>Other API (no gtkdoc comments yet)</title>
<xi:include href="xml/format.xml"/>
<xi:include href="xml/interpolate.xml"/>
<xi:include href="xml/object.xml"/>

View File

@ -34,41 +34,12 @@
#endif /*HAVE_CONFIG_H*/
#include <vips/intl.h>
#include <stdio.h>
#include <vips/vips.h>
#ifdef WITH_DMALLOC
#include <dmalloc.h>
#endif /*WITH_DMALLOC*/
static int
print_vec( im_object *argv )
{
const char *message = argv[0];
char **out = (char **) &argv[1];
if( im_print( message ) )
return( -1 );
*out = im_strdup( NULL, "printed" );
return( 0 );
}
static im_arg_desc print_arg_types[] = {
IM_INPUT_STRING( "message" ),
IM_OUTPUT_STRING( "result" )
};
static im_function print_desc = {
"im_print", /* Name */
"print string to stdout", /* Description */
0, /* Flags */
print_vec, /* Dispatch function */
IM_NUMBER( print_arg_types ), /* Size of arg list */
print_arg_types /* Arg list */
};
static int
system_vec( im_object *argv )
{
@ -525,177 +496,6 @@ static im_function c2amph_desc = {
one_in_one_out /* Arg list */
};
/* Call im_clip2dcm via arg vector.
*/
static int
clip2dcm_vec( im_object *argv )
{
return( im_clip2dcm( argv[0], argv[1] ) );
}
/* Description of im_clip2dcm.
*/
static im_function clip2dcm_desc = {
"im_clip2dcm", /* Name */
"convert to double complex",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2dcm_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2cm via arg vector.
*/
static int
clip2cm_vec( im_object *argv )
{
return( im_clip2cm( argv[0], argv[1] ) );
}
/* Description of im_clip2cm.
*/
static im_function clip2cm_desc = {
"im_clip2cm", /* Name */
"convert to complex",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2cm_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2us via arg vector.
*/
static int
clip2us_vec( im_object *argv )
{
return( im_clip2us( argv[0], argv[1] ) );
}
/* Description of im_clip2us.
*/
static im_function clip2us_desc = {
"im_clip2us", /* Name */
"convert to unsigned 16-bit integer",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2us_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2ui via arg vector.
*/
static int
clip2ui_vec( im_object *argv )
{
return( im_clip2ui( argv[0], argv[1] ) );
}
/* Description of im_clip2ui.
*/
static im_function clip2ui_desc = {
"im_clip2ui", /* Name */
"convert to unsigned 32-bit integer",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2ui_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2s via arg vector.
*/
static int
clip2s_vec( im_object *argv )
{
return( im_clip2s( argv[0], argv[1] ) );
}
/* Description of im_clip2s.
*/
static im_function clip2s_desc = {
"im_clip2s", /* Name */
"convert to signed 16-bit integer",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2s_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2i via arg vector.
*/
static int
clip2i_vec( im_object *argv )
{
return( im_clip2i( argv[0], argv[1] ) );
}
/* Description of im_clip2i.
*/
static im_function clip2i_desc = {
"im_clip2i", /* Name */
"convert to signed 32-bit integer",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2i_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2d via arg vector.
*/
static int
clip2d_vec( im_object *argv )
{
return( im_clip2d( argv[0], argv[1] ) );
}
/* Description of im_clip2d.
*/
static im_function clip2d_desc = {
"im_clip2d", /* Name */
"convert to double-precision float",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2d_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2f via arg vector.
*/
static int
clip2f_vec( im_object *argv )
{
return( im_clip2f( argv[0], argv[1] ) );
}
/* Description of im_clip2f.
*/
static im_function clip2f_desc = {
"im_clip2f", /* Name */
"convert to single-precision float",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2f_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2c via arg vector.
*/
static int
clip2c_vec( im_object *argv )
{
return( im_clip2c( argv[0], argv[1] ) );
}
/* Description of im_clip2c.
*/
static im_function clip2c_desc = {
"im_clip2c", /* Name */
"convert to signed 8-bit integer",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2c_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip via arg vector.
*/
static int
@ -1313,66 +1113,6 @@ static im_function scaleps_desc = {
one_in_one_out /* Arg list */
};
/* Args to im_slice.
*/
static im_arg_desc slice_args[] = {
IM_INPUT_IMAGE( "input" ),
IM_OUTPUT_IMAGE( "output" ),
IM_INPUT_DOUBLE( "thresh1" ),
IM_INPUT_DOUBLE( "thresh2" )
};
/* Call im_slice via arg vector.
*/
static int
slice_vec( im_object *argv )
{
double t1 = *((double *) argv[2]);
double t2 = *((double *) argv[3]);
return( im_slice( argv[0], argv[1], t1, t2 ) );
}
/* Description of im_slice.
*/
static im_function slice_desc = {
"im_slice", /* Name */
"slice an image using two thresholds",
0, /* Flags */
slice_vec, /* Dispatch function */
IM_NUMBER( slice_args ), /* Size of arg list */
slice_args /* Arg list */
};
/* Args to im_thresh.
*/
static im_arg_desc thresh_args[] = {
IM_INPUT_IMAGE( "input" ),
IM_OUTPUT_IMAGE( "output" ),
IM_INPUT_DOUBLE( "threshold" )
};
/* Call im_thresh via arg vector.
*/
static int
thresh_vec( im_object *argv )
{
double t1 = *((double *) argv[2]);
return( im_thresh( argv[0], argv[1], t1 ) );
}
/* Description of im_thresh.
*/
static im_function thresh_desc = {
"im_thresh", /* Name */
"slice an image at a threshold",
0, /* Flags */
thresh_vec, /* Dispatch function */
IM_NUMBER( thresh_args ), /* Size of arg list */
thresh_args /* Arg list */
};
/* Args to im_grid.
*/
static im_arg_desc grid_args[] = {
@ -1593,17 +1333,8 @@ static im_function *conv_list[] = {
&c2ps_desc,
&c2real_desc,
&c2rect_desc,
&clip2c_desc,
&clip2cm_desc,
&clip2d_desc,
&clip2dcm_desc,
&clip2f_desc,
&clip2fmt_desc,
&clip2i_desc,
&clip2s_desc,
&clip2ui_desc,
&clip2us_desc,
&clip_desc,
&clip2fmt_desc,
&copy_desc,
&copy_file_desc,
&copy_morph_desc,
@ -1626,7 +1357,6 @@ static im_function *conv_list[] = {
&mask2vips_desc,
&msb_desc,
&msb_band_desc,
&print_desc,
&recomb_desc,
&replicate_desc,
&ri2c_desc,
@ -1636,12 +1366,10 @@ static im_function *conv_list[] = {
&scale_desc,
&scaleps_desc,
&rightshift_size_desc,
&slice_desc,
&subsample_desc,
&system_desc,
&tbjoin_desc,
&text_desc,
&thresh_desc,
&vips2mask_desc,
&wrap_desc,
&zoom_desc

View File

@ -68,7 +68,7 @@ im_vips2mask( IMAGE *in, const char *outname )
if( !(t = im_open( "im_vips2mask", "p" )) )
return( NULL );
if( im_clip2d( in, t ) ||
if( im_clip2fmt( in, t, IM_BANDFMT_DOUBLE ) ||
!(out = im_vips2mask( t, outname )) ) {
im_close( t );
return( NULL );

View File

@ -41,6 +41,13 @@
#include <dmalloc.h>
#endif /*WITH_DMALLOC*/
/* One image in, one out.
*/
static im_arg_desc one_in_one_out[] = {
IM_INPUT_IMAGE( "in" ),
IM_OUTPUT_IMAGE( "out" )
};
/* Two images in, one out.
*/
static im_arg_desc two_in_one_out[] = {
@ -354,6 +361,265 @@ static im_function icc_export_desc = {
icc_export_args /* Arg list */
};
static int
print_vec( im_object *argv )
{
const char *message = argv[0];
char **out = (char **) &argv[1];
if( im_print( message ) )
return( -1 );
*out = im_strdup( NULL, "printed" );
return( 0 );
}
static im_arg_desc print_arg_types[] = {
IM_INPUT_STRING( "message" ),
IM_OUTPUT_STRING( "result" )
};
static im_function print_desc = {
"im_print", /* Name */
"print string to stdout", /* Description */
0, /* Flags */
print_vec, /* Dispatch function */
IM_NUMBER( print_arg_types ), /* Size of arg list */
print_arg_types /* Arg list */
};
/* Call im_clip2dcm via arg vector.
*/
static int
clip2dcm_vec( im_object *argv )
{
return( im_clip2dcm( argv[0], argv[1] ) );
}
/* Description of im_clip2dcm.
*/
static im_function clip2dcm_desc = {
"im_clip2dcm", /* Name */
"convert to double complex",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2dcm_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2cm via arg vector.
*/
static int
clip2cm_vec( im_object *argv )
{
return( im_clip2cm( argv[0], argv[1] ) );
}
/* Description of im_clip2cm.
*/
static im_function clip2cm_desc = {
"im_clip2cm", /* Name */
"convert to complex",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2cm_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2us via arg vector.
*/
static int
clip2us_vec( im_object *argv )
{
return( im_clip2us( argv[0], argv[1] ) );
}
/* Description of im_clip2us.
*/
static im_function clip2us_desc = {
"im_clip2us", /* Name */
"convert to unsigned 16-bit integer",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2us_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2ui via arg vector.
*/
static int
clip2ui_vec( im_object *argv )
{
return( im_clip2ui( argv[0], argv[1] ) );
}
/* Description of im_clip2ui.
*/
static im_function clip2ui_desc = {
"im_clip2ui", /* Name */
"convert to unsigned 32-bit integer",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2ui_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2s via arg vector.
*/
static int
clip2s_vec( im_object *argv )
{
return( im_clip2s( argv[0], argv[1] ) );
}
/* Description of im_clip2s.
*/
static im_function clip2s_desc = {
"im_clip2s", /* Name */
"convert to signed 16-bit integer",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2s_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2i via arg vector.
*/
static int
clip2i_vec( im_object *argv )
{
return( im_clip2i( argv[0], argv[1] ) );
}
/* Description of im_clip2i.
*/
static im_function clip2i_desc = {
"im_clip2i", /* Name */
"convert to signed 32-bit integer",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2i_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2d via arg vector.
*/
static int
clip2d_vec( im_object *argv )
{
return( im_clip2d( argv[0], argv[1] ) );
}
/* Description of im_clip2d.
*/
static im_function clip2d_desc = {
"im_clip2d", /* Name */
"convert to double-precision float",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2d_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2f via arg vector.
*/
static int
clip2f_vec( im_object *argv )
{
return( im_clip2f( argv[0], argv[1] ) );
}
/* Description of im_clip2f.
*/
static im_function clip2f_desc = {
"im_clip2f", /* Name */
"convert to single-precision float",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2f_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Call im_clip2c via arg vector.
*/
static int
clip2c_vec( im_object *argv )
{
return( im_clip2c( argv[0], argv[1] ) );
}
/* Description of im_clip2c.
*/
static im_function clip2c_desc = {
"im_clip2c", /* Name */
"convert to signed 8-bit integer",
IM_FN_PTOP | IM_FN_PIO, /* Flags */
clip2c_vec, /* Dispatch function */
IM_NUMBER( one_in_one_out ), /* Size of arg list */
one_in_one_out /* Arg list */
};
/* Args to im_thresh.
*/
static im_arg_desc thresh_args[] = {
IM_INPUT_IMAGE( "input" ),
IM_OUTPUT_IMAGE( "output" ),
IM_INPUT_DOUBLE( "threshold" )
};
/* Call im_thresh via arg vector.
*/
static int
thresh_vec( im_object *argv )
{
double t1 = *((double *) argv[2]);
return( im_thresh( argv[0], argv[1], t1 ) );
}
/* Description of im_thresh.
*/
static im_function thresh_desc = {
"im_thresh", /* Name */
"slice an image at a threshold",
0, /* Flags */
thresh_vec, /* Dispatch function */
IM_NUMBER( thresh_args ), /* Size of arg list */
thresh_args /* Arg list */
};
/* Args to im_slice.
*/
static im_arg_desc slice_args[] = {
IM_INPUT_IMAGE( "input" ),
IM_OUTPUT_IMAGE( "output" ),
IM_INPUT_DOUBLE( "thresh1" ),
IM_INPUT_DOUBLE( "thresh2" )
};
/* Call im_slice via arg vector.
*/
static int
slice_vec( im_object *argv )
{
double t1 = *((double *) argv[2]);
double t2 = *((double *) argv[3]);
return( im_slice( argv[0], argv[1], t1, t2 ) );
}
/* Description of im_slice.
*/
static im_function slice_desc = {
"im_slice", /* Name */
"slice an image using two thresholds",
0, /* Flags */
slice_vec, /* Dispatch function */
IM_NUMBER( slice_args ), /* Size of arg list */
slice_args /* Arg list */
};
/* Package up all these functions.
*/
static im_function *deprecated_list[] = {
@ -364,6 +630,18 @@ static im_function *deprecated_list[] = {
&icc_export_desc,
&litecor_desc,
&affine_desc,
&clip2c_desc,
&clip2cm_desc,
&clip2d_desc,
&clip2dcm_desc,
&clip2f_desc,
&clip2i_desc,
&clip2s_desc,
&clip2ui_desc,
&clip2us_desc,
&print_desc,
&slice_desc,
&thresh_desc,
&similarity_area_desc,
&similarity_desc
};

View File

@ -113,7 +113,7 @@ rfwfft1( IMAGE *dummy, IMAGE *in, IMAGE *out )
im_error( "im_fwfft", _( "one band uncoded only" ) );
return( -1 );
}
if( im_clip2d( in, real ) )
if( im_clip2fmt( in, real, IM_BANDFMT_DOUBLE ) )
return( -1 );
/* Make the plan for the transform. Yes, they really do use nx for
@ -218,7 +218,7 @@ cfwfft1( IMAGE *dummy, IMAGE *in, IMAGE *out )
im_error( "im_fwfft", _( "one band uncoded only" ) );
return( -1 );
}
if( im_clip2dcm( in, cmplx ) )
if( im_clip2fmt( in, cmplx, IM_BANDFMT_DPCOMPLEX ) )
return( -1 );
/* Make the plan for the transform.
@ -309,7 +309,7 @@ rfwfft1( IMAGE *dummy, IMAGE *in, IMAGE *out )
im_error( "im_fwfft", "%s", _( "one band uncoded only" ) );
return( -1 );
}
if( im_clip2d( in, real ) )
if( im_clip2fmt( in, real, IM_BANDFMT_DOUBLE ) )
return( -1 );
/* Make the plan for the transform. Yes, they really do use nx for
@ -423,7 +423,7 @@ cfwfft1( IMAGE *dummy, IMAGE *in, IMAGE *out )
"%s", _( "one band uncoded only" ) );
return( -1 );
}
if( im_clip2dcm( in, cmplx ) )
if( im_clip2fmt( in, cmplx, IM_BANDFMT_DPCOMPLEX ) )
return( -1 );
/* Make the plan for the transform.
@ -523,14 +523,14 @@ fwfft1( IMAGE *dummy, IMAGE *in, IMAGE *out )
/* Make sure we have a float input image.
*/
if( im_clip2f( in, real ) )
if( im_clip2fmt( in, real, IM_BANDFMT_FLOAT ) )
return( -1 );
/* Make a buffer of 0 floats of the same size for the imaginary part.
*/
if( im_black( t1, in->Xsize, in->Ysize, 1 ) )
return( -1 );
if( im_clip2f( t1, imag ) )
if( im_clip2fmt( t1, imag, IM_BANDFMT_FLOAT ) )
return( -1 );
/* Transform!

View File

@ -95,7 +95,7 @@ invfft1( IMAGE *dummy, IMAGE *in, IMAGE *out )
im_error( "im_invfft", "%s", _( "one band uncoded only" ) );
return( -1 );
}
if( im_clip2dcm( in, cmplx ) )
if( im_clip2fmt( in, cmplx, IM_BANDFMT_DPCOMPLEX ) )
return( -1 );
/* Make the plan for the transform. Yes, they really do use nx for
@ -145,7 +145,7 @@ invfft1( IMAGE *dummy, IMAGE *in, IMAGE *out )
"%s", _( "one band uncoded only" ) );
return( -1 );
}
if( im_clip2dcm( in, cmplx ) )
if( im_clip2fmt( in, cmplx, IM_BANDFMT_DPCOMPLEX ) )
return( -1 );
/* Make the plan for the transform. Yes, they really do use nx for
@ -212,7 +212,7 @@ invfft1( IMAGE *dummy, IMAGE *in, IMAGE *out )
/* Make sure we have a single-precision complex input image.
*/
if( im_clip2cm( in, t1 ) )
if( im_clip2fmt( in, t1, IM_BANDFMT_COMPLEX ) )
return( -1 );
/* Extract real and imag parts. We have to complement the imaginary.

View File

@ -93,7 +93,7 @@ invfft1( IMAGE *dummy, IMAGE *in, IMAGE *out )
/* Make dp complex image for input.
*/
if( im_clip2dcm( in, cmplx ) )
if( im_clip2fmt( in, cmplx, IM_BANDFMT_DPCOMPLEX ) )
return( -1 );
/* Make mem buffer real image for output.
@ -176,7 +176,7 @@ invfft1( IMAGE *dummy, IMAGE *in, IMAGE *out )
/* Make dp complex image for input.
*/
if( im_clip2dcm( in, cmplx ) )
if( im_clip2fmt( in, cmplx, IM_BANDFMT_DPCOMPLEX ) )
return( -1 );
/* Make mem buffer real image for output.
@ -264,7 +264,7 @@ invfft1( IMAGE *dummy, IMAGE *in, IMAGE *out )
/* Make sure we have a single-precision complex input image.
*/
if( im_clip2cm( in, t1 ) )
if( im_clip2fmt( in, t1, IM_BANDFMT_COMPLEX ) )
return( -1 );
/* Extract real and imag parts. We have to complement the imaginary.

View File

@ -175,18 +175,13 @@ match( IMAGE *in, IMAGE *ref, IMAGE *out )
int
im_histspec( IMAGE *in, IMAGE *ref, IMAGE *out )
{
IMAGE *t1 = im_open_local( out, "im_histspec:1", "p" );
IMAGE *t2 = im_open_local( out, "im_histspec:2", "p" );
IMAGE *t3 = im_open_local( out, "im_histspec:3", "p" );
IMAGE *t4 = im_open_local( out, "im_histspec:4", "p" );
IMAGE *t5 = im_open_local( out, "im_histspec:5", "p" );
IMAGE *t[5];
int px;
int fmt;
if( !t1 || !t2 || !t2 || !t4 || !t5 )
if( im_open_local_array( out, t, 5, "im_histspec", "p" ) )
return( -1 );
if( !im_isuint( in ) || !im_isuint( ref ) ) {
if( !im_isuint( in ) || !im_isuint( ref ) ) {
im_error( "im_histspec", "%s",
_( "input luts are not some unsigned integer type" ) );
return( -1 );
@ -194,14 +189,16 @@ im_histspec( IMAGE *in, IMAGE *ref, IMAGE *out )
/* Match hists.
*/
if( im_histeq( in, t1 ) || im_clip2ui( t1, t2 ) ||
im_histeq( ref, t3 ) || im_clip2ui( t3, t4 ) ||
match( t2, t4, t5 ) )
if( im_histeq( in, t[0] ) ||
im_clip2fmt( t[0], t[1], IM_BANDFMT_UINT ) ||
im_histeq( ref, t[2] ) ||
im_clip2fmt( t[2], t[3], IM_BANDFMT_UINT ) ||
match( t[1], t[3], t[4] ) )
return( -1 );
/* Clip type down.
*/
px = t5->Xsize * t5->Ysize;
px = t[4]->Xsize * t[4]->Ysize;
if( px <= 256 )
fmt = IM_BANDFMT_UCHAR;
else if( px <= 65536 )
@ -209,7 +206,7 @@ im_histspec( IMAGE *in, IMAGE *ref, IMAGE *out )
else
fmt = IM_BANDFMT_UINT;
if( im_clip2fmt( t5, out, fmt ) )
if( im_clip2fmt( t[4], out, fmt ) )
return( -1 );
return( 0 );

View File

@ -324,7 +324,7 @@ im_tone_build( IMAGE *out,
if( !t1 ||
im_tone_build_range( t1, 1023, 32767,
Lb, Lw, Ps, Pm, Ph, S, M, H ) ||
im_clip2s( t1, out ) )
im_clip2fmt( t1, out, IM_BANDFMT_SHORT ) )
return( -1 );
return( 0 );
@ -434,7 +434,7 @@ im_tone_map( IMAGE *in, IMAGE *out, IMAGE *lut )
* sure we have an unsigned type we can use for indexing.
*/
if( im_shiftright( t2, t8, 5 ) ||
im_clip2us( t8, t5 ) )
im_clip2fmt( t8, t5, IM_BANDFMT_USHORT ) )
return( -1 );
/* Replace L.
@ -503,7 +503,7 @@ im_tone_analyse(
*/
if( im_extract_band( t1, t2, 0 ) ||
im_shiftright( t2, t3, 5 ) ||
im_clip2us( t3, t4 ) )
im_clip2fmt( t3, t4, IM_BANDFMT_USHORT ) )
return( -1 );
/* Take histogram, and make it a cumulative hist.

View File

@ -18,6 +18,7 @@ pkginclude_HEADERS = \
proto.h \
image.h \
vips \
conversion.h \
rect.h \
region.h \
generate.h \

View File

@ -42,8 +42,6 @@
extern "C" {
#endif /*__cplusplus*/
#include <vips/util.h>
/* Areas under curves for Dxx. 2 degree observer.
*/
#define IM_D93_X0 (89.7400)

View File

@ -0,0 +1,118 @@
/* conversion.h
*
* 20/9/09
* - from proto.h
*/
/*
This file is part of VIPS.
VIPS is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
*/
#ifndef IM_CONVERSION_H
#define IM_CONVERSION_H
#ifdef __cplusplus
extern "C" {
#endif /*__cplusplus*/
/* Copy and swap types.
*/
typedef enum {
IM_ARCH_NATIVE,
IM_ARCH_BYTE_SWAPPED,
IM_ARCH_LSB_FIRST,
IM_ARCH_MSB_FIRST
} im_arch_type;
gboolean im_isnative( im_arch_type arch );
DOUBLEMASK *im_vips2mask( IMAGE *in, const char *out );
int im_mask2vips( DOUBLEMASK *in, IMAGE *out );
int im_copy_set( IMAGE *in, IMAGE *out,
int type, float xres, float yres, int x, int y );
int im_copy_set_meta( IMAGE *in, IMAGE *out, const char *field, GValue *meta );
int im_copy_morph( IMAGE *in, IMAGE *out,
int Bands, int BandFmt, int Coding );
int im_copy( IMAGE *in, IMAGE *out );
int im_copy_swap( IMAGE *in, IMAGE *out );
int im_copy_from( IMAGE *in, IMAGE *out, im_arch_type architecture );
int im_copy_file( IMAGE *in, IMAGE *out );
int im_extract_band( IMAGE *in, IMAGE *out, int band );
int im_extract_bands( IMAGE *in, IMAGE *out, int band, int nbands );
int im_extract_area( IMAGE *in, IMAGE *out, int x, int y, int w, int h );
int im_extract_areabands( IMAGE *in, IMAGE *out,
int left, int top, int width, int height, int band, int nbands );
int im_subsample( IMAGE *in, IMAGE *out, int x, int y );
int im_zoom( IMAGE *in, IMAGE *out, int x, int y );
int im_bandjoin( IMAGE *in, IMAGE *out, IMAGE * );
int im_gbandjoin( IMAGE **in, IMAGE *out, int );
int im_black( IMAGE *out, int, int, int );
int im_text( IMAGE *out, const char *text, const char *font,
int width, int alignment, int dpi );
int im_clip2fmt( IMAGE *in, IMAGE *out, int ofmt );
int im_scale( IMAGE *in, IMAGE *out );
int im_clip( IMAGE *in, IMAGE *out );
int im_msb( IMAGE *in, IMAGE *out );
int im_msb_band( IMAGE *in, IMAGE *out, int band );
int im_c2amph( IMAGE *in, IMAGE *out );
int im_c2rect( IMAGE *in, IMAGE *out );
int im_ri2c( IMAGE *real_in, IMAGE *imag_in, IMAGE *out );
int im_c2imag( IMAGE *in, IMAGE *out );
int im_c2real( IMAGE *in, IMAGE *out );
int im_c2ps( IMAGE *in, IMAGE *out );
int im_scaleps( IMAGE *in, IMAGE *out );
int im_falsecolour( IMAGE *in, IMAGE *out );
int im_recomb( IMAGE *in, IMAGE *out, DOUBLEMASK *recomb );
int im_insert( IMAGE *in, IMAGE *out, IMAGE *, int x, int y );
int im_insert_noexpand( IMAGE *in, IMAGE *out, IMAGE *, int x, int y );
int im_lrjoin( IMAGE *in1, IMAGE *in2, IMAGE *out );
int im_tbjoin( IMAGE *in1, IMAGE *in2, IMAGE *out );
int im_replicate( IMAGE *in, IMAGE *out, int across, int down );
int im_grid( IMAGE *in, IMAGE *out, int tile_height, int across, int down );
int im_wrap( IMAGE *in, IMAGE *out, int x, int y );
int im_fliphor( IMAGE *in, IMAGE *out );
int im_flipver( IMAGE *in, IMAGE *out );
int im_rot90( IMAGE *in, IMAGE *out );
int im_rot180( IMAGE *in, IMAGE *out );
int im_rot270( IMAGE *in, IMAGE *out );
int im_system( IMAGE *im, const char *cmd, char **out );
#ifdef __cplusplus
}
#endif /*__cplusplus*/
#endif /*IM_CONVERSION_H*/

View File

@ -326,6 +326,23 @@ int im_similarity_area( IMAGE *in, IMAGE *out,
int im_icc_export( IMAGE *in, IMAGE *out,
const char *output_profile_filename, VipsIntent intent );
/* conversion
*/
int im_clip2dcm( IMAGE *in, IMAGE *out );
int im_clip2cm( IMAGE *in, IMAGE *out );
int im_clip2us( IMAGE *in, IMAGE *out );
int im_clip2ui( IMAGE *in, IMAGE *out );
int im_clip2s( IMAGE *in, IMAGE *out );
int im_clip2i( IMAGE *in, IMAGE *out );
int im_clip2d( IMAGE *in, IMAGE *out );
int im_clip2f( IMAGE *in, IMAGE *out );
int im_clip2c( IMAGE *in, IMAGE *out );
int im_slice( IMAGE *in, IMAGE *out, double, double );
int im_thresh( IMAGE *in, IMAGE *out, double );
int im_print( const char *message );
#ifdef __cplusplus
}
#endif /*__cplusplus*/

View File

@ -117,6 +117,27 @@ VipsFormatFlags vips_format_get_flags( VipsFormatClass *format,
int vips_format_read( const char *name, IMAGE *out );
int vips_format_write( IMAGE *im, const char *name );
int im_jpeg2vips( const char *in, IMAGE * );
int im_vips2jpeg( IMAGE *in, const char * );
int im_vips2mimejpeg( IMAGE *in, int );
int im_vips2bufjpeg( IMAGE *in, IMAGE *, int, char **, int * );
int im_vips2tiff( IMAGE *in, const char * );
int im_bernd( const char *in, int, int, int, int );
int im_tiff2vips( const char *in, IMAGE * );
int im_tile_cache( IMAGE *in, IMAGE *, int, int, int );
int im_magick2vips( const char *in, IMAGE * );
int im_png2vips( const char *in, IMAGE * );
int im_exr2vips( const char *in, IMAGE * );
int im_ppm2vips( const char *in, IMAGE * );
int im_vips2ppm( IMAGE *in, const char * );
int im_analyze2vips( const char *filename, IMAGE *out );
int im_vips2csv( IMAGE *in, const char *filename );
int im_csv2vips( const char *filename, IMAGE *out );
int im_vips2png( IMAGE *, const char * );
int im_raw2vips( const char *filename, IMAGE *out,
int width, int height, int bpp, int offset );
int im_vips2raw( IMAGE *in, int fd );
#ifdef __cplusplus
}
#endif /*__cplusplus*/

View File

@ -205,101 +205,6 @@ int im_ismonotonic( IMAGE *lut, int *out );
int im_tone_map( IMAGE *in, IMAGE *out, IMAGE *lut );
int im_project( IMAGE *in, IMAGE *hout, IMAGE *vout );
/* conversion
*/
/* Copy and swap types.
*/
typedef enum {
IM_ARCH_NATIVE,
IM_ARCH_BYTE_SWAPPED,
IM_ARCH_LSB_FIRST,
IM_ARCH_MSB_FIRST
} im_arch_type;
gboolean im_isnative( im_arch_type arch );
DOUBLEMASK *im_vips2mask( IMAGE *, const char * );
int im_mask2vips( DOUBLEMASK *, IMAGE * );
int im_copy_set( IMAGE *, IMAGE *, int, float, float, int, int );
int im_copy_set_meta( IMAGE *in, IMAGE *out, const char *field, GValue *meta );
int im_copy_morph( IMAGE *, IMAGE *, int, int, int );
int im_copy( IMAGE *, IMAGE * );
int im_copy_swap( IMAGE *in, IMAGE *out );
int im_copy_from( IMAGE *in, IMAGE *out, im_arch_type architecture );
int im_copy_file( IMAGE *in, IMAGE *out );
int im_extract_band( IMAGE *in, IMAGE *out, int band );
int im_extract_bands( IMAGE *in, IMAGE *out, int band, int nbands );
int im_extract_area( IMAGE *in, IMAGE *out, int x, int y, int w, int h );
int im_extract_areabands( IMAGE *in, IMAGE *out,
int left, int top, int width, int height, int band, int nbands );
int im_subsample( IMAGE *, IMAGE *, int, int );
int im_zoom( IMAGE *, IMAGE *, int, int );
int im_bandjoin( IMAGE *, IMAGE *, IMAGE * );
int im_gbandjoin( IMAGE **, IMAGE *, int );
int im_black( IMAGE *, int, int, int );
int im_text( IMAGE *out, const char *text, const char *font,
int width, int alignment, int dpi );
int im_c2amph( IMAGE *, IMAGE * );
int im_c2rect( IMAGE *, IMAGE * );
int im_clip2fmt( IMAGE *in, IMAGE *out, int ofmt );
int im_clip2dcm( IMAGE *, IMAGE * );
int im_clip2cm( IMAGE *, IMAGE * );
int im_clip2us( IMAGE *, IMAGE * );
int im_clip2ui( IMAGE *, IMAGE * );
int im_clip2s( IMAGE *, IMAGE * );
int im_clip2i( IMAGE *, IMAGE * );
int im_clip2d( IMAGE *, IMAGE * );
int im_clip2f( IMAGE *, IMAGE * );
int im_clip2c( IMAGE *, IMAGE * );
int im_clip( IMAGE *, IMAGE * );
int im_ri2c( IMAGE *, IMAGE *, IMAGE * );
int im_c2imag( IMAGE *, IMAGE * );
int im_c2real( IMAGE *, IMAGE * );
int im_c2ps( IMAGE *, IMAGE * );
int im_fliphor( IMAGE *, IMAGE * );
int im_flipver( IMAGE *, IMAGE * );
int im_falsecolour( IMAGE *, IMAGE * );
int im_recomb( IMAGE *, IMAGE *, DOUBLEMASK * );
int im_insert( IMAGE *, IMAGE *, IMAGE *, int, int );
int im_insert_noexpand( IMAGE *, IMAGE *, IMAGE *, int, int );
int im_rot90( IMAGE *, IMAGE * );
int im_rot180( IMAGE *, IMAGE * );
int im_rot270( IMAGE *, IMAGE * );
int im_lrjoin( IMAGE *, IMAGE *, IMAGE * );
int im_tbjoin( IMAGE *, IMAGE *, IMAGE * );
int im_scale( IMAGE *, IMAGE * );
int im_scaleps( IMAGE *, IMAGE * );
int im_slice( IMAGE *, IMAGE *, double, double );
int im_system( IMAGE *im, const char *cmd, char **out );
int im_print( const char *message );
int im_thresh( IMAGE *, IMAGE *, double );
int im_jpeg2vips( const char *, IMAGE * );
int im_vips2jpeg( IMAGE *, const char * );
int im_vips2mimejpeg( IMAGE *, int );
int im_vips2bufjpeg( IMAGE *, IMAGE *, int, char **, int * );
int im_vips2tiff( IMAGE *, const char * );
int im_bernd( const char *, int, int, int, int );
int im_tiff2vips( const char *, IMAGE * );
int im_tile_cache( IMAGE *, IMAGE *, int, int, int );
int im_magick2vips( const char *, IMAGE * );
int im_png2vips( const char *, IMAGE * );
int im_exr2vips( const char *, IMAGE * );
int im_ppm2vips( const char *, IMAGE * );
int im_vips2ppm( IMAGE *, const char * );
int im_analyze2vips( const char *filename, IMAGE *out );
int im_vips2csv( IMAGE *in, const char *filename );
int im_csv2vips( const char *filename, IMAGE *out );
int im_vips2png( IMAGE *, const char * );
int im_raw2vips( const char *filename, IMAGE *out,
int width, int height, int bpp, int offset );
int im_replicate( IMAGE *in, IMAGE *out, int across, int down );
int im_grid( IMAGE *in, IMAGE *out, int tile_height, int across, int down );
int im_msb ( IMAGE * in, IMAGE * out );
int im_msb_band ( IMAGE * in, IMAGE * out, int band );
int im_wrap( IMAGE *in, IMAGE *out, int x, int y );
int im_vips2raw( IMAGE *in, int fd );
/* other
*/
int im_feye( IMAGE *image,

View File

@ -128,8 +128,6 @@ typedef struct im__DOUBLEMASK {
#include <vips/callback.h>
#include <vips/error.h>
#include <vips/util.h>
#include <vips/colour.h>
#include <vips/disp.h>
#include <vips/format.h>
#include <vips/dispatch.h>
#include <vips/region.h>
@ -146,6 +144,9 @@ typedef struct im__DOUBLEMASK {
#include <vips/arithmetic.h>
#include <vips/boolean.h>
#include <vips/relational.h>
#include <vips/conversion.h>
#include <vips/colour.h>
#include <vips/disp.h>
#ifdef IM_ENABLE_DEPRECATED
#include <vips/deprecated.h>

View File

@ -1622,13 +1622,13 @@ transform( JoinNode *node, double *gamma )
double fac = st->fac[node->index];
IMAGE *out = im_open_local( st->im, node->name, "p" );
IMAGE *t1 = im_open_local( out, "transform:1", "p" );
IMAGE *t2 = im_open_local( out, "transform:2", "p" );
IMAGE *t3 = im_open_local( out, "transform:3", "p" );
IMAGE *t4 = im_open_local( out, "transform:4", "p" );
IMAGE *t5 = im_open_local( out, "transform:5", "p" );
if( !out || !t1 || !t2 || !t3 || !t4 || !t5 )
return( NULL );
@ -1639,7 +1639,7 @@ transform( JoinNode *node, double *gamma )
}
else if( in->BandFmt == IM_BANDFMT_UCHAR ) {
if( im_identity( t1, 1 ) ||
im_powtra( t1, t2, 1/(*gamma) ) ||
im_powtra( t1, t2, 1.0 / (*gamma) ) ||
im_lintra( fac, t2, 0.0, t3 ) ||
im_powtra( t3, t4, *gamma ) ||
im_clip( t4, t5 ) ||
@ -1648,10 +1648,10 @@ transform( JoinNode *node, double *gamma )
}
else if( in->BandFmt == IM_BANDFMT_USHORT ) {
if( im_identity_ushort( t1, 1, 65535 ) ||
im_powtra( t1, t2, 1/(*gamma) ) ||
im_powtra( t1, t2, 1.0 / (*gamma) ) ||
im_lintra( fac, t2, 0.0, t3 ) ||
im_powtra( t3, t4, *gamma ) ||
im_clip2us( t4, t5 ) ||
im_clip2fmt( t4, t5, IM_BANDFMT_USHORT ) ||
im_maplut( in, out, t5 ) )
return( NULL );
}

View File

@ -44,6 +44,7 @@
#include <vips/vips.h>
#include <vips/internal.h>
#include <vips/deprecated.h>
int
main( int argc, char **argv )