VipsInterpolate

VipsInterpolate — various interpolators: nearest, bilinear, and some non-linear

Stability Level

Stable, unless otherwise indicated

Object Hierarchy

    GObject
    ╰── VipsObject
        ╰── VipsInterpolate

Includes

#include <vips/vips.h>

Description

A number of image interpolators.

Functions

VipsInterpolateMethod ()

void
(*VipsInterpolateMethod) (VipsInterpolate *interpolate,
                          void *out,
                          VipsRegion *in,
                          double x,
                          double y);

An interpolation function. It should read source pixels from in with VIPS_REGION_ADDR(), it can look left and up from (x, y) by window_offset pixels and it can access pixels in a window of size window_size .

The interpolated value should be written to the pixel pointed to by out .

See also: VipsInterpolateClass.

Parameters

interpolate

the interpolator

 

out

write the interpolated pixel here

 

in

read source pixels from here

 

x

interpolate value at this position

 

y

interpolate value at this position

 

vips_interpolate ()

void
vips_interpolate (VipsInterpolate *interpolate,
                  void *out,
                  VipsRegion *in,
                  double x,
                  double y);

Look up the interpolate method in the class and call it. Use vips_interpolate_get_method() to get a direct pointer to the function and avoid the lookup overhead.

You need to set in and out up correctly.

[skip]

Parameters

interpolate

interpolator to use

 

out

write result here

 

in

read source data from here

 

x

interpolate value at this position

 

y

interpolate value at this position

 

vips_interpolate_get_method ()

VipsInterpolateMethod
vips_interpolate_get_method (VipsInterpolate *interpolate);

Look up the interpolate method in the class and return it. Use this instead of vips_interpolate() to cache method dispatch.

[skip]

Parameters

interpolate

interpolator to use

 

Returns

a pointer to the interpolation function


vips_interpolate_get_window_size ()

int
vips_interpolate_get_window_size (VipsInterpolate *interpolate);

Look up an interpolators desired window size.

Parameters

interpolate

interpolator to use

 

Returns

the interpolators required window size


vips_interpolate_get_window_offset ()

int
vips_interpolate_get_window_offset (VipsInterpolate *interpolate);

Look up an interpolators desired window offset.

Parameters

interpolate

interpolator to use

 

Returns

the interpolators required window offset


vips_interpolate_nearest_static ()

VipsInterpolate *
vips_interpolate_nearest_static (void);

A convenience function that returns a nearest-neighbour interpolator you don't need to free.

Returns

a nearest-neighbour interpolator.

[transfer none]


vips_interpolate_bilinear_static ()

VipsInterpolate *
vips_interpolate_bilinear_static (void);

A convenience function that returns a bilinear interpolator you don't need to free.

Returns

a bilinear interpolator.

[transfer none]


vips_interpolate_new ()

VipsInterpolate *
vips_interpolate_new (const char *nickname);

Look up an interpolator from a nickname and make one. You need to free the result with g_object_unref() when you're done with it.

See also: vips_type_find().

[constructor]

Parameters

nickname

nickname for interpolator

 

Returns

an interpolator, or NULL on error.

Types and Values

VIPS_TRANSFORM_SHIFT

#define VIPS_TRANSFORM_SHIFT (6)

Many of the vips interpolators use fixed-point arithmetic for coordinate calculation. This is how many bits of precision they use.


VIPS_TRANSFORM_SCALE

#define VIPS_TRANSFORM_SCALE (1 << VIPS_TRANSFORM_SHIFT)

VIPS_TRANSFORM_SHIFT as a multiplicative constant.


VIPS_INTERPOLATE_SHIFT

#define VIPS_INTERPOLATE_SHIFT (12)

Many of the vips interpolators use fixed-point arithmetic for value calcualtion. This is how many bits of precision they use.


VIPS_INTERPOLATE_SCALE

#define VIPS_INTERPOLATE_SCALE (1 << VIPS_INTERPOLATE_SHIFT)

VIPS_INTERPOLATE_SHIFT as a multiplicative constant.