void gbitmap_init_as_sub_bitmap(GBitmap *sub_bitmap, const GBitmap *base_bitmap, GRect sub_rect) { grect_clip (&sub_rect,&base_bitmap->bounds); sub_bitmap->addr=base_bitmap->addr; sub_bitmap->info_flags=base_bitmap->info_flags; sub_bitmap->row_size_bytes=base_bitmap->row_size_bytes; sub_bitmap->bounds=sub_rect; }
GBitmap* gbitmap_create_as_sub_bitmap(const GBitmap *base_bitmap, GRect sub_rect) { GBitmap* sub_bitmap=(GBitmap*)malloc(sizeof(GBitmap)); if (!sub_bitmap) { printf ("Memory allocation failed!\n"); return 0; } grect_clip (&sub_rect,&base_bitmap->bounds); sub_bitmap->addr=base_bitmap->addr; GBITMAP_SET_INFO_FLAGS(sub_bitmap,GBITMAP_GET_INFO_FLAGS(base_bitmap)); GBITMAP_SET_IS_HEAP_ALLOCATED(sub_bitmap,false); sub_bitmap->row_size_bytes=base_bitmap->row_size_bytes; sub_bitmap->bounds=sub_rect; return sub_bitmap; }