Index: skia/ext/bitmap_platform_device_linux.cc |
diff --git a/skia/ext/bitmap_platform_device_linux.cc b/skia/ext/bitmap_platform_device_linux.cc |
index 6f7277e3afe162ad731c2e4e4847be7e1e2a0135..f6a0e6d07b80e11cb2b8570400a17c2fba5cc84a 100644 |
--- a/skia/ext/bitmap_platform_device_linux.cc |
+++ b/skia/ext/bitmap_platform_device_linux.cc |
@@ -41,11 +41,7 @@ class BitmapPlatformDeviceLinux::BitmapPlatformDeviceLinuxData |
// required so that we can call the base class' constructor with the pixel |
// data. |
BitmapPlatformDeviceLinux* BitmapPlatformDeviceLinux::Create( |
- int width, int height, bool is_opaque) { |
- cairo_surface_t* surface = |
- cairo_image_surface_create(CAIRO_FORMAT_ARGB32, |
- width, height); |
- |
+ int width, int height, bool is_opaque, cairo_surface_t* surface) { |
SkBitmap bitmap; |
bitmap.setConfig(SkBitmap::kARGB_8888_Config, width, height, |
cairo_image_surface_get_stride(surface)); |
@@ -63,6 +59,24 @@ BitmapPlatformDeviceLinux* BitmapPlatformDeviceLinux::Create( |
(bitmap, new BitmapPlatformDeviceLinuxData(surface)); |
} |
+BitmapPlatformDeviceLinux* BitmapPlatformDeviceLinux::Create( |
+ int width, int height, bool is_opaque) { |
+ cairo_surface_t* surface = |
+ cairo_image_surface_create(CAIRO_FORMAT_ARGB32, |
+ width, height); |
+ |
+ return Create(width, height, is_opaque, surface); |
+} |
+ |
+BitmapPlatformDeviceLinux* BitmapPlatformDeviceLinux::Create( |
+ int width, int height, bool is_opaque, uint8_t* data) { |
+ cairo_surface_t* surface = cairo_image_surface_create_for_data( |
+ data, CAIRO_FORMAT_ARGB32, width, height, |
+ cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, width)); |
+ |
+ return Create(width, height, is_opaque, surface); |
+} |
+ |
// The device will own the bitmap, which corresponds to also owning the pixel |
// data. Therefore, we do not transfer ownership to the SkDevice's bitmap. |
BitmapPlatformDeviceLinux::BitmapPlatformDeviceLinux( |