## GimpBilinear GimpBilinear — Utility functions for bilinear interpolation. |

## Synopsis

    gdouble             gimp_bilinear                       (gdouble x,
                                                             gdouble y,
                                                             gdouble *values);
    guchar              gimp_bilinear_8                     (gdouble x,
                                                             gdouble y,
                                                             guchar *values);
    guint16             gimp_bilinear_16                    (gdouble x,
                                                             gdouble y,
                                                             guint16 *values);
    guint32             gimp_bilinear_32                    (gdouble x,
                                                             gdouble y,
                                                             guint32 *values);
    GimpRGB             gimp_bilinear_rgb                   (gdouble x,
                                                             gdouble y,
                                                             GimpRGB *values);
    GimpRGB             gimp_bilinear_rgba                  (gdouble x,
                                                             gdouble y,
                                                             GimpRGB *values);
    void                gimp_bilinear_pixels_8              (guchar *dest,
                                                             gdouble x,
                                                             gdouble y,
                                                             guint bpp,
                                                             gboolean has_alpha,
                                                             guchar **values);

## Description

Utility functions for bilinear interpolation.

## Details

### gimp_bilinear ()

    gdouble             gimp_bilinear                       (gdouble x,
                                                             gdouble y,
                                                             gdouble *values);

### gimp_bilinear_8 ()

    guchar              gimp_bilinear_8                     (gdouble x,
                                                             gdouble y,
                                                             guchar *values);

### gimp_bilinear_16 ()

    guint16             gimp_bilinear_16                    (gdouble x,
                                                             gdouble y,
                                                             guint16 *values);

### gimp_bilinear_32 ()

    guint32             gimp_bilinear_32                    (gdouble x,
                                                             gdouble y,
                                                             guint32 *values);

### gimp_bilinear_rgb ()

    GimpRGB             gimp_bilinear_rgb                   (gdouble x,
                                                             gdouble y,
                                                             GimpRGB *values);

### gimp_bilinear_rgba ()

    GimpRGB             gimp_bilinear_rgba                  (gdouble x,
                                                             gdouble y,
                                                             GimpRGB *values);

### gimp_bilinear_pixels_8 ()

    void                gimp_bilinear_pixels_8              (guchar *dest,
                                                             gdouble x,
                                                             gdouble y,
                                                             guint bpp,
                                                             gboolean has_alpha,
                                                             guchar **values);

Computes bilinear interpolation of four pixels.

When `has_alpha` is `FALSE`, it's identical to `gimp_bilinear_8()` on each channel separately. When `has_alpha` is `TRUE`, it handles alpha channel correctly.

The pixels in `values` correspond to corner x, y coordinates in the following order: [0,0], [1,0], [0,1], [1,1].

`dest` : | Pixel, where interpolation result is to be stored.
`x` : | x-coordinate (0.0 to 1.0).
`y` : | y-coordinate (0.0 to 1.0).
`bpp` : | Bytes per pixel. `dest` and each `values` item is an array of `bpp` bytes.
`has_alpha` : | `TRUE` if the last channel is an alpha channel.
`values` : | Array of four pointers to pixels.