diff --git a/ChangeLog b/ChangeLog index cceaaa78..74e1191e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -15,6 +15,8 @@ - im_ri2c() bandalike - im_vips2png() saves 16-bit PNGs, if necessary - vipsthumbnail has selectable interpolators, optional sharpen +- moved a lot of stuff (eg. im_iscomplex()) from deprecated to + almostdeprecated to avoid breakage 15/1/10 started 7.21.1 - added "written" callbacks, used to implement write to non-vips formats @@ -24,7 +26,8 @@ - argh, missing init from colour.c (thanks Peter) - argh, im_measure() was not looping over bands correctly (thanks Peter) - removed mmap_limit, we now always use windows ... reduces VM use hugely, - because mmap windows are freed when their regions are freed + because mmap windows are freed when their regions are freed, while images + are only unmapped when they are closed - have a min bytes for mmap windows as well, so we don't make too many tiny windows - im_disp2Lab() was broken diff --git a/TODO b/TODO index 17ecb3a5..dc6ed5fd 100644 --- a/TODO +++ b/TODO @@ -3,11 +3,6 @@ nip2: im_prepare.c:324: im_prepare_to: Assertion `clipped.left == r->left' failed. -- im_iscomplex() not defined errors from nip2 ... don't we have a compat thing - for this? - - IM_DISABLE_DEPRECATED should be off by default - - doing im_create_fmask() and friends - how about im_invalidate_area()? we currently repaint the whole window on diff --git a/libvips/colour/im_icc_transform.c b/libvips/colour/im_icc_transform.c index 3bd7f519..36986161 100644 --- a/libvips/colour/im_icc_transform.c +++ b/libvips/colour/im_icc_transform.c @@ -396,10 +396,10 @@ attach_profile( IMAGE *im, const char *filename ) * profile-connection space with the input profile and then to the output * space with the output profile. * - * Use im_icc_import() and im_icc_export() to do either the first or second - * half of this operation in isolation. + * Use im_icc_import() and im_icc_export_depth() to do either the first or + * second half of this operation in isolation. * - * See also: im_icc_import(), im_icc_export(). + * See also: im_icc_import(), im_icc_export_depth(). * * Returns: 0 on success, -1 on error. */ diff --git a/libvips/deprecated/deprecated_dispatch.c b/libvips/deprecated/deprecated_dispatch.c index d03a9170..adb4734b 100644 --- a/libvips/deprecated/deprecated_dispatch.c +++ b/libvips/deprecated/deprecated_dispatch.c @@ -35,7 +35,6 @@ #include #include -#include #ifdef WITH_DMALLOC #include diff --git a/libvips/deprecated/im_cmulnorm.c b/libvips/deprecated/im_cmulnorm.c index b99ac381..7d4014d1 100644 --- a/libvips/deprecated/im_cmulnorm.c +++ b/libvips/deprecated/im_cmulnorm.c @@ -46,7 +46,6 @@ #include #include -#include #include #include diff --git a/libvips/deprecated/im_fav4.c b/libvips/deprecated/im_fav4.c index 84176da7..2a9878e2 100644 --- a/libvips/deprecated/im_fav4.c +++ b/libvips/deprecated/im_fav4.c @@ -37,7 +37,6 @@ Copyright (C) 1992, Kirk Martinez, History of Art Dept, Birkbeck College #include #include -#include #ifdef WITH_DMALLOC #include diff --git a/libvips/deprecated/im_gadd.c b/libvips/deprecated/im_gadd.c index def5c995..92952ee6 100644 --- a/libvips/deprecated/im_gadd.c +++ b/libvips/deprecated/im_gadd.c @@ -56,7 +56,6 @@ #include #include -#include #ifdef WITH_DMALLOC #include diff --git a/libvips/deprecated/im_gaddim.c b/libvips/deprecated/im_gaddim.c index 1eb835f0..fc2b9581 100644 --- a/libvips/deprecated/im_gaddim.c +++ b/libvips/deprecated/im_gaddim.c @@ -57,7 +57,6 @@ #include #include -#include #ifdef WITH_DMALLOC #include diff --git a/libvips/deprecated/im_gfadd.c b/libvips/deprecated/im_gfadd.c index 142012fc..61e72a2c 100644 --- a/libvips/deprecated/im_gfadd.c +++ b/libvips/deprecated/im_gfadd.c @@ -60,7 +60,6 @@ #include #include -#include #ifdef WITH_DMALLOC #include diff --git a/libvips/deprecated/im_litecor.c b/libvips/deprecated/im_litecor.c index e3545fec..2eb29cfd 100644 --- a/libvips/deprecated/im_litecor.c +++ b/libvips/deprecated/im_litecor.c @@ -65,7 +65,6 @@ #include #include -#include #ifdef WITH_DMALLOC #include diff --git a/libvips/deprecated/rename.c b/libvips/deprecated/rename.c index 8145f537..e17f828d 100644 --- a/libvips/deprecated/rename.c +++ b/libvips/deprecated/rename.c @@ -35,7 +35,6 @@ #include #include -#include #include #ifdef WITH_DMALLOC @@ -222,10 +221,10 @@ im_makerw( IMAGE *im ) int im_icc_export( IMAGE *in, IMAGE *out, - const char *output_profile_filename, VipsIntent intent ) + const char *output_profile_filename, int intent ) { return( im_icc_export_depth( in, out, - 8, output_profile_filename, intent ) ); + 8, output_profile_filename, (VipsIntent) intent ) ); } int diff --git a/libvips/include/vips/almostdeprecated.h b/libvips/include/vips/almostdeprecated.h index 2d6415af..35a63212 100644 --- a/libvips/include/vips/almostdeprecated.h +++ b/libvips/include/vips/almostdeprecated.h @@ -1,4 +1,5 @@ -/* Old and broken stuff that we still enable by default +/* Old and broken stuff that we still enable by default, but don't document + * and certainly don't recommend. * * 30/6/09 * - from vips.h @@ -71,6 +72,163 @@ int im_extract( IMAGE *, IMAGE *, IMAGE_BOX * ); DOUBLEMASK *im_measure( IMAGE *im, IMAGE_BOX *box, int h, int v, int *sel, int nsel, const char *name ); +gboolean im_isuint( IMAGE *im ); +gboolean im_isint( IMAGE *im ); +gboolean im_isfloat( IMAGE *im ); +gboolean im_isscalar( IMAGE *im ); +gboolean im_iscomplex( IMAGE *im ); + +int im_c2ps( IMAGE *in, IMAGE *out ); + +int im_clip( IMAGE *in, IMAGE *out ); + +#define MASK_IDEAL_HIGHPASS VIPS_MASK_IDEAL_HIGHPASS +#define MASK_IDEAL_LOWPASS VIPS_MASK_IDEAL_LOWPASS +#define MASK_BUTTERWORTH_HIGHPASS VIPS_MASK_BUTTERWORTH_HIGHPASS +#define MASK_BUTTERWORTH_LOWPASS VIPS_MASK_BUTTERWORTH_LOWPASS +#define MASK_GAUSS_HIGHPASS VIPS_MASK_GAUSS_HIGHPASS +#define MASK_GAUSS_LOWPASS VIPS_MASK_GAUSS_LOWPASS + +#define MASK_IDEAL_RINGPASS VIPS_MASK_IDEAL_RINGPASS +#define MASK_IDEAL_RINGREJECT VIPS_MASK_IDEAL_RINGREJECT +#define MASK_BUTTERWORTH_RINGPASS VIPS_MASK_BUTTERWORTH_RINGPASS +#define MASK_BUTTERWORTH_RINGREJECT VIPS_MASK_BUTTERWORTH_RINGREJECT +#define MASK_GAUSS_RINGPASS VIPS_MASK_GAUSS_RINGPASS +#define MASK_GAUSS_RINGREJECT VIPS_MASK_GAUSS_RINGREJECT + +#define MASK_IDEAL_BANDPASS VIPS_MASK_IDEAL_BANDPASS +#define MASK_IDEAL_BANDREJECT VIPS_MASK_IDEAL_BANDREJECT +#define MASK_BUTTERWORTH_BANDPASS VIPS_MASK_BUTTERWORTH_BANDPASS +#define MASK_BUTTERWORTH_BANDREJECT VIPS_MASK_BUTTERWORTH_BANDREJECT +#define MASK_GAUSS_BANDPASS VIPS_MASK_GAUSS_BANDPASS +#define MASK_GAUSS_BANDREJECT VIPS_MASK_GAUSS_BANDREJECT + +#define MASK_FRACTAL_FLT VIPS_MASK_FRACTAL_FLT + +#define MaskType VipsMaskType + +/* 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 ); +int im_copy_from( IMAGE *in, IMAGE *out, im_arch_type architecture ); + +/* Backwards compatibility macros. + */ +#define im_clear_error_string() im_error_clear() +#define im_errorstring() im_error_buffer() + +/* Deprecated API. + */ +void im_errormsg( const char *fmt, ... ) + __attribute__((format(printf, 1, 2))); +void im_verrormsg( const char *fmt, va_list ap ); +void im_errormsg_system( int err, const char *fmt, ... ) + __attribute__((format(printf, 2, 3))); +void im_diagnostics( const char *fmt, ... ) + __attribute__((format(printf, 1, 2))); +void im_warning( const char *fmt, ... ) + __attribute__((format(printf, 1, 2))); + +/* Deprecated operations. + */ +int im_cmulnorm( IMAGE *in1, IMAGE *in2, IMAGE *out ); +int im_fav4( IMAGE **, IMAGE * ); +int im_gadd( double, IMAGE *, double, IMAGE *, double, IMAGE *); +int im_litecor( IMAGE *, IMAGE *, IMAGE *, int, double ); +int im_render_fade( IMAGE *in, IMAGE *out, IMAGE *mask, + int width, int height, int max, + int fps, int steps, + int priority, + void (*notify)( IMAGE *, Rect *, void * ), void *client ); +int im_render( IMAGE *in, IMAGE *out, IMAGE *mask, + int width, int height, int max, + void (*notify)( IMAGE *, Rect *, void * ), void *client ); + +/* Renamed operations. + */ + +/* arithmetic + */ +int im_remainderconst_vec( IMAGE *in, IMAGE *out, int n, double *c ); + +/* boolean + */ +int im_andconst( IMAGE *, IMAGE *, double ); +int im_and_vec( IMAGE *, IMAGE *, int, double * ); +int im_orconst( IMAGE *, IMAGE *, double ); +int im_or_vec( IMAGE *, IMAGE *, int, double * ); +int im_eorconst( IMAGE *, IMAGE *, double ); +int im_eor_vec( IMAGE *, IMAGE *, int, double * ); + +/* mosaicing + */ +int im_affine( IMAGE *in, IMAGE *out, + double a, double b, double c, double d, double dx, double dy, + int ox, int oy, int ow, int oh ); +int im_similarity( IMAGE *in, IMAGE *out, + double a, double b, double dx, double dy ); +int im_similarity_area( IMAGE *in, IMAGE *out, + double a, double b, double dx, double dy, + int ox, int oy, int ow, int oh ); + +/* colour + */ +int im_icc_export( IMAGE *in, IMAGE *out, + const char *output_profile_filename, int 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 ); + +int im_convsub( IMAGE *in, IMAGE *out, INTMASK *mask, int xskip, int yskip ); + +int im_bernd( const char *tiffname, int x, int y, int w, int h ); + +int im_resize_linear( IMAGE *, IMAGE *, int, int ); + +int im_line( IMAGE *, int, int, int, int, int ); +int im_segment( IMAGE *test, IMAGE *mask, int *segments ); + +int im_convf( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); +int im_convsepf( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); +int im_conv_raw( IMAGE *in, IMAGE *out, INTMASK *mask ); +int im_convf_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); +int im_convsep_raw( IMAGE *in, IMAGE *out, INTMASK *mask ); +int im_convsepf_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); +int im_fastcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ); +int im_spcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ); +int im_gradcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ); +int im_contrast_surface_raw( IMAGE *in, IMAGE *out, + int half_win_size, int spacing ); + +int im_stdif_raw( IMAGE *in, IMAGE *out, + double a, double m0, double b, double s0, int xwin, int ywin ); +int im_lhisteq_raw( IMAGE *in, IMAGE *out, int xwin, int ywin ); + +int im_erode_raw( IMAGE *in, IMAGE *out, INTMASK *m ); +int im_dilate_raw( IMAGE *in, IMAGE *out, INTMASK *m ); +int im_rank_raw( IMAGE *in, IMAGE *out, int xsize, int ysize, int order ); + #ifdef __cplusplus } #endif /*__cplusplus*/ diff --git a/libvips/include/vips/deprecated.h b/libvips/include/vips/deprecated.h index 61a84d7f..0ccd955b 100644 --- a/libvips/include/vips/deprecated.h +++ b/libvips/include/vips/deprecated.h @@ -148,163 +148,6 @@ extern "C" { #define right(R) IM_RECT_RIGHT(R) #define bottom(R) IM_RECT_BOTTOM(R) -/* Backwards compatibility macros. - */ -#define im_clear_error_string() im_error_clear() -#define im_errorstring() im_error_buffer() - -/* Deprecated API. - */ -void im_errormsg( const char *fmt, ... ) - __attribute__((format(printf, 1, 2))); -void im_verrormsg( const char *fmt, va_list ap ); -void im_errormsg_system( int err, const char *fmt, ... ) - __attribute__((format(printf, 2, 3))); -void im_diagnostics( const char *fmt, ... ) - __attribute__((format(printf, 1, 2))); -void im_warning( const char *fmt, ... ) - __attribute__((format(printf, 1, 2))); - -/* Deprecated operations. - */ -int im_cmulnorm( IMAGE *in1, IMAGE *in2, IMAGE *out ); -int im_fav4( IMAGE **, IMAGE * ); -int im_gadd( double, IMAGE *, double, IMAGE *, double, IMAGE *); -int im_litecor( IMAGE *, IMAGE *, IMAGE *, int, double ); -int im_render_fade( IMAGE *in, IMAGE *out, IMAGE *mask, - int width, int height, int max, - int fps, int steps, - int priority, - void (*notify)( IMAGE *, Rect *, void * ), void *client ); -int im_render( IMAGE *in, IMAGE *out, IMAGE *mask, - int width, int height, int max, - void (*notify)( IMAGE *, Rect *, void * ), void *client ); - -/* Renamed operations. - */ - -/* arithmetic - */ -int im_remainderconst_vec( IMAGE *in, IMAGE *out, int n, double *c ); - -/* boolean - */ -int im_andconst( IMAGE *, IMAGE *, double ); -int im_and_vec( IMAGE *, IMAGE *, int, double * ); -int im_orconst( IMAGE *, IMAGE *, double ); -int im_or_vec( IMAGE *, IMAGE *, int, double * ); -int im_eorconst( IMAGE *, IMAGE *, double ); -int im_eor_vec( IMAGE *, IMAGE *, int, double * ); - -/* mosaicing - */ -int im_affine( IMAGE *in, IMAGE *out, - double a, double b, double c, double d, double dx, double dy, - int ox, int oy, int ow, int oh ); -int im_similarity( IMAGE *in, IMAGE *out, - double a, double b, double dx, double dy ); -int im_similarity_area( IMAGE *in, IMAGE *out, - double a, double b, double dx, double dy, - int ox, int oy, int ow, int oh ); - -/* colour - */ -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 ); - -int im_convsub( IMAGE *in, IMAGE *out, INTMASK *mask, int xskip, int yskip ); - -int im_bernd( const char *tiffname, int x, int y, int w, int h ); - -int im_resize_linear( IMAGE *, IMAGE *, int, int ); - -int im_line( IMAGE *, int, int, int, int, int ); -int im_segment( IMAGE *test, IMAGE *mask, int *segments ); - -int im_convf( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); -int im_convsepf( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); -int im_conv_raw( IMAGE *in, IMAGE *out, INTMASK *mask ); -int im_convf_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); -int im_convsep_raw( IMAGE *in, IMAGE *out, INTMASK *mask ); -int im_convsepf_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); -int im_fastcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ); -int im_spcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ); -int im_gradcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ); -int im_contrast_surface_raw( IMAGE *in, IMAGE *out, - int half_win_size, int spacing ); - -int im_stdif_raw( IMAGE *in, IMAGE *out, - double a, double m0, double b, double s0, int xwin, int ywin ); -int im_lhisteq_raw( IMAGE *in, IMAGE *out, int xwin, int ywin ); - -int im_erode_raw( IMAGE *in, IMAGE *out, INTMASK *m ); -int im_dilate_raw( IMAGE *in, IMAGE *out, INTMASK *m ); -int im_rank_raw( IMAGE *in, IMAGE *out, int xsize, int ysize, int order ); - -gboolean im_isuint( IMAGE *im ); -gboolean im_isint( IMAGE *im ); -gboolean im_isfloat( IMAGE *im ); -gboolean im_isscalar( IMAGE *im ); -gboolean im_iscomplex( IMAGE *im ); - -int im_c2ps( IMAGE *in, IMAGE *out ); - -int im_clip( IMAGE *in, IMAGE *out ); - -/* 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 ); -int im_copy_from( IMAGE *in, IMAGE *out, im_arch_type architecture ); - -#define MASK_IDEAL_HIGHPASS VIPS_MASK_IDEAL_HIGHPASS -#define MASK_IDEAL_LOWPASS VIPS_MASK_IDEAL_LOWPASS -#define MASK_BUTTERWORTH_HIGHPASS VIPS_MASK_BUTTERWORTH_HIGHPASS -#define MASK_BUTTERWORTH_LOWPASS VIPS_MASK_BUTTERWORTH_LOWPASS -#define MASK_GAUSS_HIGHPASS VIPS_MASK_GAUSS_HIGHPASS -#define MASK_GAUSS_LOWPASS VIPS_MASK_GAUSS_LOWPASS - -#define MASK_IDEAL_RINGPASS VIPS_MASK_IDEAL_RINGPASS -#define MASK_IDEAL_RINGREJECT VIPS_MASK_IDEAL_RINGREJECT -#define MASK_BUTTERWORTH_RINGPASS VIPS_MASK_BUTTERWORTH_RINGPASS -#define MASK_BUTTERWORTH_RINGREJECT VIPS_MASK_BUTTERWORTH_RINGREJECT -#define MASK_GAUSS_RINGPASS VIPS_MASK_GAUSS_RINGPASS -#define MASK_GAUSS_RINGREJECT VIPS_MASK_GAUSS_RINGREJECT - -#define MASK_IDEAL_BANDPASS VIPS_MASK_IDEAL_BANDPASS -#define MASK_IDEAL_BANDREJECT VIPS_MASK_IDEAL_BANDREJECT -#define MASK_BUTTERWORTH_BANDPASS VIPS_MASK_BUTTERWORTH_BANDPASS -#define MASK_BUTTERWORTH_BANDREJECT VIPS_MASK_BUTTERWORTH_BANDREJECT -#define MASK_GAUSS_BANDPASS VIPS_MASK_GAUSS_BANDPASS -#define MASK_GAUSS_BANDREJECT VIPS_MASK_GAUSS_BANDREJECT - -#define MASK_FRACTAL_FLT VIPS_MASK_FRACTAL_FLT - -#define MaskType VipsMaskType - #ifdef __cplusplus } #endif /*__cplusplus*/