/// it is in the `Exclusive` state, while in the `Shared` state it only allows read-only access.
pub fn empty(width: i32, height: i32, surface_type: SurfaceType) -> Result<Self, cairo::Error> {
/// Scales the given surface by `x` and `y` into a surface `width`×`height` in size, clipped by
pub fn flood(&self, bounds: IRect, color: Color) -> Result<SharedImageSurface, cairo::Error> {
// https://cairographics.org/manual/cairo-Image-Surfaces.html#cairo-image-surface-create-for-data
// https://cairographics.org/manual/cairo-Image-Surfaces.html#cairo-image-surface-create-for-data
pub fn modify(&mut self, draw_fn: &mut dyn FnMut(&mut cairo::ImageSurfaceData<'_>, usize)) {