Bitmap subbitmap(const Image& image, const IntRect& rect){ return image.GetBackground().Visit( [&](const Bitmap& bmp){ return subbitmap(bmp, rect); }, [&](const ColorSpan& span){ return Bitmap(rect.GetSize(), span.color); }); }