#include <allegro5/allegro.h>

Users who wish to manually edit or read from a bitmap are required to lock it first. The ALLEGRO_LOCKED_REGION structure represents the locked region of the bitmap. This call will work with any bitmap, including memory bitmaps.

typedef struct ALLEGRO_LOCKED_REGION {

void *data;
int format;
int pitch;
int pixel_size; } ALLEGRO_LOCKED_REGION;
data points to the leftmost pixel of the first row (row 0) of the locked region. For blocked formats, this points to the leftmost block of the first row of blocks.
format indicates the pixel format of the data.
pitch gives the size in bytes of a single row (also known as the stride). The pitch may be greater than width * pixel_size due to padding; this is not uncommon. It is also not uncommon for the pitch to be negative (the bitmap may be upside down). For blocked formats, `row' refers to the row of blocks, not of pixels.
pixel_size is the number of bytes used to represent a single block of pixels for the pixel format of this locked region. For most formats (and historically, this used to be true for all formats), this is just the size of a single pixel, but for blocked pixel formats this value is different.

al_lock_bitmap(3), al_lock_bitmap_region(3), al_unlock_bitmap(3), ALLEGRO_PIXEL_FORMAT(3)

Allegro reference manual