al_create_sub_bitmap man page
al_create_sub_bitmap — Allegro 5 API
#include <allegro5/allegro.h> ALLEGRO_BITMAP *al_create_sub_bitmap(ALLEGRO_BITMAP *parent, int x, int y, int w, int h)
Creates a sub-bitmap of the parent, at the specified coordinates and of the specified size. A sub-bitmap is a bitmap that shares drawing memory with a pre-existing (parent) bitmap, but possibly with a different size and clipping settings.
The sub-bitmap may originate off or extend past the parent bitmap.
See the discussion in al_get_backbuffer(3) about using sub-bitmaps of the backbuffer.
The parent bitmap's clipping rectangles are ignored.
If a sub-bitmap was not or cannot be created then NULL is returned.
When you are done with using the sub-bitmap you must call al_destroy_bitmap(3) on it to free any resources allocated for it.
Note that destroying parents of sub-bitmaps will not destroy the sub-bitmaps; instead the sub-bitmaps become invalid and should no longer be used for drawing - they still must be destroyed with al_destroy_bitmap(3) however. It does not matter whether you destroy a sub-bitmap before or after its parent otherwise.
al_create_bitmap(3), al_get_bitmap_x(3), al_get_bitmap_y(3), al_get_parent_bitmap(3), al_is_sub_bitmap(3), al_reparent_bitmap(3).