Gegl.Buffer.iterator_new

### Method

# Gegl Bufferiterator_new

#### Declaration [src]

    GeglBufferIterator*
    gegl_buffer_iterator_new (
      GeglBuffer* buffer,
      const GeglRectangle* roi,
      gint level,
      const Babl* format,
      GeglAccessMode access_mode,
      GeglAbyssPolicy abyss_policy,
      gint max_slots
    )

#### Description [src]

Creates a new `GeglBufferIterator`. The iterator can use one or more sub-iterators to iterate over one or more `GeglBuffer`. `GeglBufferIterator` takes care of accessing the given buffers in the most optimal ways.

See the documentation of [method.Gegl.BufferIterator.add] and [method.Gegl.BufferIterator.next].

This method is not directly available to language bindings.

skip-reason | babl_since_7dcbb732

#### Parameters

`roi`

  Type: `GeglRectangle`

  The region in `buffer` to iterate over.

  The data is owned by the caller of the method.

`level`

  Type: `gint`

  The level at which we are iterating. The `roi` will indicate the extent at 1:1. `x`, `y`, `width` and `height` are `/ (2^level)`.

`format`

  Type: `Babl`

  The format we want to process this buffers data in, pass 0 to use the buffers format.

  The data is owned by the caller of the method.

`access_mode`

  Type: `GeglAccessMode`

  Whether we need reading or writing to this buffer one of `GEGL_ACCESS_READ`, `GEGL_ACCESS_WRITE` and `GEGL_ACCESS_READWRITE`.

`abyss_policy`

  Type: `GeglAbyssPolicy`

  How requests outside the buffer extent are handled.

`max_slots`

  Type: `gint`

  The maximum number of buffer iterators.

#### Return value

Type: `GeglBufferIterator`

A new `GeglBufferIterator` with one sub-iterator.

The returned data is owned by the instance.