void ShareableBitmap::paint(GraphicsContext& context, float scaleFactor, const IntPoint& dstPoint, const IntRect& srcRect) { RefPtr<cairo_surface_t> surface = createSurfaceFromData(data(), m_size); FloatRect destRect(dstPoint, srcRect.size()); FloatRect srcRectScaled(srcRect); srcRectScaled.scale(scaleFactor); context.platformContext()->drawSurfaceToContext(surface.get(), destRect, srcRectScaled, context); }
PassRefPtr<cairo_surface_t> ShareableBitmap::createCairoSurface() { RefPtr<cairo_surface_t> image = createSurfaceFromData(data(), m_size); ref(); // Balanced by deref in releaseSurfaceData. static cairo_user_data_key_t dataKey; cairo_surface_set_user_data(image.get(), &dataKey, this, releaseSurfaceData); return image.release(); }