## gimppixelfetcher

gimppixelfetcher — Functions for operating on pixel regions.

## Synopsis

    enum                GimpPixelFetcherEdgeMode;
                        GimpPixelFetcher;
    GimpPixelFetcher *  gimp_pixel_fetcher_new              (GimpDrawable *drawable,
                                                             gboolean shadow);
    void                gimp_pixel_fetcher_set_edge_mode    (GimpPixelFetcher *pf,
                                                             GimpPixelFetcherEdgeMode mode);
    void                gimp_pixel_fetcher_set_bg_color     (GimpPixelFetcher *pf,
                                                             const GimpRGB *color);
    void                gimp_pixel_fetcher_get_pixel        (GimpPixelFetcher *pf,
                                                             gint x,
                                                             gint y,
                                                             guchar *pixel);
    void                gimp_pixel_fetcher_put_pixel        (GimpPixelFetcher *pf,
                                                             gint x,
                                                             gint y,
                                                             const guchar *pixel);
    void                gimp_pixel_fetcher_destroy          (GimpPixelFetcher *pf);

## Description

These functions provide neighbourhood-based algorithms which get dramatically slower on region boundaries, to the point where a special treatment for neighbourhoods which are completely inside a tile is called for. It hides the special treatment of tile borders, making plug-in code more readable and shorter.

## Details

### enum GimpPixelFetcherEdgeMode

    typedef enum {
      GIMP_PIXEL_FETCHER_EDGE_NONE,
      GIMP_PIXEL_FETCHER_EDGE_WRAP,
      GIMP_PIXEL_FETCHER_EDGE_SMEAR,
      GIMP_PIXEL_FETCHER_EDGE_BLACK,
      GIMP_PIXEL_FETCHER_EDGE_BACKGROUND
    } GimpPixelFetcherEdgeMode;

### GimpPixelFetcher

    typedef struct _GimpPixelFetcher GimpPixelFetcher;

### gimp_pixel_fetcher_new ()

    GimpPixelFetcher *  gimp_pixel_fetcher_new              (GimpDrawable *drawable,
                                                             gboolean shadow);

Initialize a pixel region from the drawable.

`drawable` : | the GimpDrawable the new region will be attached to.
`shadow` : | a gboolean indicating whether the region is attached to the shadow tiles or the real `drawable` tiles.
Returns : | a pointer to a GimpPixelRgn structure (or NULL).

### gimp_pixel_fetcher_set_edge_mode ()

    void                gimp_pixel_fetcher_set_edge_mode    (GimpPixelFetcher *pf,
                                                             GimpPixelFetcherEdgeMode mode);

Change the edage mode of a previously initialized pixel region.

`pf` : | a pointer to a previously initialized GimpPixelFetcher.
`mode` : | the new edge mode from GimpPixelFetcherEdgeMode.

### gimp_pixel_fetcher_set_bg_color ()

    void                gimp_pixel_fetcher_set_bg_color     (GimpPixelFetcher *pf,
                                                             const GimpRGB *color);

Change the background color of a previously initialized pixel region.

`pf` : | a pointer to a previously initialized GimpPixelFetcher.
`color` : | the color to be used as bg color.

### gimp_pixel_fetcher_get_pixel ()

    void                gimp_pixel_fetcher_get_pixel        (GimpPixelFetcher *pf,
                                                             gint x,
                                                             gint y,
                                                             guchar *pixel);

Get a pixel from the pixel region.

`pf` : | a pointer to a previously initialized GimpPixelFetcher.
`x` : | the x coordinate of the pixel to get.
`y` : | the y coordinate of the pixel to get.
`pixel` : | the memory location where to return the pixel.

### gimp_pixel_fetcher_put_pixel ()

    void                gimp_pixel_fetcher_put_pixel        (GimpPixelFetcher *pf,
                                                             gint x,
                                                             gint y,
                                                             const guchar *pixel);

Set a pixel in the pixel region.

`pf` : | a pointer to a previously initialized GimpPixelFetcher.
`x` : | the x coordinate of the pixel to set.
`y` : | the y coordinate of the pixel to set.
`pixel` : | the pixel to set.

### gimp_pixel_fetcher_destroy ()

    void                gimp_pixel_fetcher_destroy          (GimpPixelFetcher *pf);

Close a previously initializd pixel region.

`pf` : | a pointer to a previously initialized GimpPixelFetcher.