gegl_buffer_get and gegl_buffer_set are the functions to read and
write pixels in a GeglBuffer. They both take an array of pixels and
write/read data from tiles according to the region of interest.

Abyss is a rectangle that defines what area of the buffer is
readable. Abyss policy determines how to read pixels when the
requested region of interest (or pixel) is not contained within the
abyss. Abyss policy only affects reading and not writing of pixels and
does so when gegl_buffer_get is called. Each policy has a separate
iterator function that reads data to the array. If the region of
interest is inside the abyss rectangle a simple read function is used
to avoid the overhead of dealing with abyss. Abyss policy also affects
samplers since they use gegl_bufer_get.

There are 5 abyss policies represented by the following enums
GEGL_ABYSS_NONE - abyss pixels are zeroed
GEGL_ABYSS_WHITE - abyss pixels are white
GEGL_ABYSS_BLACK - abyss pixels are black
GEGL_ABYSS_CLAMP - each pixel's coordinates are clamped to the abyss
rectangle
GEGL_ABYSS_LOOP - each pixel's coordinates wrap when exceeding the
abyss rectangle (the buffer is essentially tiled)

