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)