The libart library
<<< Previous Page | Home | Up | Next Page >>>

# Pixel buffer affine transformations

## Name

Pixel buffer affine transformations --

## Synopsis

    enum        ArtFilterLevel;
    void        art_rgb_pixbuf_affine           (art_u8 *dst,
                                                 int x0,
                                                 int y0,
                                                 int x1,
                                                 int y1,
                                                 int dst_rowstride,
                                                 const ArtPixBuf *pixbuf,
                                                 const double affine[6],
                                                 ArtFilterLevel level,
                                                 ArtAlphaGamma *alphagamma);
    void        art_rgb_affine                  (art_u8 *dst,
                                                 int x0,
                                                 int y0,
                                                 int x1,
                                                 int y1,
                                                 int dst_rowstride,
                                                 const art_u8 *src,
                                                 int src_width,
                                                 int src_height,
                                                 int src_rowstride,
                                                 const double affine[6],
                                                 ArtFilterLevel level,
                                                 ArtAlphaGamma *alphagamma);
    void        art_rgb_rgba_affine             (art_u8 *dst,
                                                 int x0,
                                                 int y0,
                                                 int x1,
                                                 int y1,
                                                 int dst_rowstride,
                                                 const art_u8 *src,
                                                 int src_width,
                                                 int src_height,
                                                 int src_rowstride,
                                                 const double affine[6],
                                                 ArtFilterLevel level,
                                                 ArtAlphaGamma *alphagamma);
    void        art_rgb_bitmap_affine           (art_u8 *dst,
                                                 int x0,
                                                 int y0,
                                                 int x1,
                                                 int y1,
                                                 int dst_rowstride,
                                                 const art_u8 *src,
                                                 int src_width,
                                                 int src_height,
                                                 int src_rowstride,
                                                 art_u32 rgba,
                                                 const double affine[6],
                                                 ArtFilterLevel level,
                                                 ArtAlphaGamma *alphagamma);

## Description

## Details

### enum ArtFilterLevel

    typedef enum {
      ART_FILTER_NEAREST,
      ART_FILTER_TILES,
      ART_FILTER_BILINEAR,
      ART_FILTER_HYPER
    } ArtFilterLevel;

### art_rgb_pixbuf_affine ()

    void        art_rgb_pixbuf_affine           (art_u8 *dst,
                                                 int x0,
                                                 int y0,
                                                 int x1,
                                                 int y1,
                                                 int dst_rowstride,
                                                 const ArtPixBuf *pixbuf,
                                                 const double affine[6],
                                                 ArtFilterLevel level,
                                                 ArtAlphaGamma *alphagamma);

Affine transform the source image stored in `src`, compositing over the area of destination image `dst` specified by the rectangle (`x0`, `y0`) - (`x1`, `y1`). As usual in libart, the left and top edges of this rectangle are included, and the right and bottom edges are excluded.

The `alphagamma` parameter specifies that the alpha compositing be done in a gamma-corrected color space. In the current implementation, it is ignored.

The `level` parameter specifies the speed/quality tradeoff of the image interpolation. Currently, only ART_FILTER_NEAREST is implemented.

`dst` : | Destination image RGB buffer.
`x0` : | Left coordinate of destination rectangle.
`y0` : | Top coordinate of destination rectangle.
`x1` : | Right coordinate of destination rectangle.
`y1` : | Bottom coordinate of destination rectangle.
`dst_rowstride` : | Rowstride of `dst` buffer.
`pixbuf` : | source image pixbuf.
`affine` : | Affine transform.
`level` : | Filter level.
`alphagamma` : | ArtAlphaGamma for gamma-correcting the compositing.

### art_rgb_affine ()

    void        art_rgb_affine                  (art_u8 *dst,
                                                 int x0,
                                                 int y0,
                                                 int x1,
                                                 int y1,
                                                 int dst_rowstride,
                                                 const art_u8 *src,
                                                 int src_width,
                                                 int src_height,
                                                 int src_rowstride,
                                                 const double affine[6],
                                                 ArtFilterLevel level,
                                                 ArtAlphaGamma *alphagamma);

Affine transform the source image stored in `src`, compositing over the area of destination image `dst` specified by the rectangle (`x0`, `y0`) - (`x1`, `y1`). As usual in libart, the left and top edges of this rectangle are included, and the right and bottom edges are excluded.

The `alphagamma` parameter specifies that the alpha compositing be done in a gamma-corrected color space. Since the source image is opaque RGB, this argument only affects the edges. In the current implementation, it is ignored.

The `level` parameter specifies the speed/quality tradeoff of the image interpolation. Currently, only ART_FILTER_NEAREST is implemented.

`dst` : | Destination image RGB buffer.
`x0` : | Left coordinate of destination rectangle.
`y0` : | Top coordinate of destination rectangle.
`x1` : | Right coordinate of destination rectangle.
`y1` : | Bottom coordinate of destination rectangle.
`dst_rowstride` : | Rowstride of `dst` buffer.
`src` : | Source image RGB buffer.
`src_width` : | Width of source image.
`src_height` : | Height of source image.
`src_rowstride` : | Rowstride of `src` buffer.
`affine` : | Affine transform.
`level` : | Filter level.
`alphagamma` : | ArtAlphaGamma for gamma-correcting the compositing.

### art_rgb_rgba_affine ()

    void        art_rgb_rgba_affine             (art_u8 *dst,
                                                 int x0,
                                                 int y0,
                                                 int x1,
                                                 int y1,
                                                 int dst_rowstride,
                                                 const art_u8 *src,
                                                 int src_width,
                                                 int src_height,
                                                 int src_rowstride,
                                                 const double affine[6],
                                                 ArtFilterLevel level,
                                                 ArtAlphaGamma *alphagamma);

Affine transform the source image stored in `src`, compositing over the area of destination image `dst` specified by the rectangle (`x0`, `y0`) - (`x1`, `y1`). As usual in libart, the left and top edges of this rectangle are included, and the right and bottom edges are excluded.

The `alphagamma` parameter specifies that the alpha compositing be done in a gamma-corrected color space. In the current implementation, it is ignored.

The `level` parameter specifies the speed/quality tradeoff of the image interpolation. Currently, only ART_FILTER_NEAREST is implemented.

`dst` : | Destination image RGB buffer.
`x0` : | Left coordinate of destination rectangle.
`y0` : | Top coordinate of destination rectangle.
`x1` : | Right coordinate of destination rectangle.
`y1` : | Bottom coordinate of destination rectangle.
`dst_rowstride` : | Rowstride of `dst` buffer.
`src` : | Source image RGBA buffer.
`src_width` : | Width of source image.
`src_height` : | Height of source image.
`src_rowstride` : | Rowstride of `src` buffer.
`affine` : | Affine transform.
`level` : | Filter level.
`alphagamma` : | ArtAlphaGamma for gamma-correcting the compositing.

### art_rgb_bitmap_affine ()

    void        art_rgb_bitmap_affine           (art_u8 *dst,
                                                 int x0,
                                                 int y0,
                                                 int x1,
                                                 int y1,
                                                 int dst_rowstride,
                                                 const art_u8 *src,
                                                 int src_width,
                                                 int src_height,
                                                 int src_rowstride,
                                                 art_u32 rgba,
                                                 const double affine[6],
                                                 ArtFilterLevel level,
                                                 ArtAlphaGamma *alphagamma);

Affine transform the source image stored in `src`, compositing over the area of destination image `dst` specified by the rectangle (`x0`, `y0`) - (`x1`, `y1`).

The source bitmap stored with MSB as the leftmost pixel. Source 1 bits correspond to the semitransparent color `rgba`, while source 0 bits are transparent.

See art_rgb_affine() for a description of additional parameters.

`dst` : | Destination image RGB buffer.
`x0` : | Left coordinate of destination rectangle.
`y0` : | Top coordinate of destination rectangle.
`x1` : | Right coordinate of destination rectangle.
`y1` : | Bottom coordinate of destination rectangle.
`dst_rowstride` : | Rowstride of `dst` buffer.
`src` : | Source image bitmap buffer.
`src_width` : | Width of source image.
`src_height` : | Height of source image.
`src_rowstride` : | Rowstride of `src` buffer.
`rgba` : | RGBA foreground color, in 0xRRGGBBAA.
`affine` : | Affine transform.
`level` : | Filter level.
`alphagamma` : | ArtAlphaGamma for gamma-correcting the compositing.

<<< Previous Page | Home | Up | Next Page >>>
Pixel Buffers | MicroTile Arrays