Index: webkit/plugins/ppapi/ppapi_plugin_instance.cc |
=================================================================== |
--- webkit/plugins/ppapi/ppapi_plugin_instance.cc (revision 81254) |
+++ webkit/plugins/ppapi/ppapi_plugin_instance.cc (working copy) |
@@ -76,6 +76,10 @@ |
#include "ui/gfx/gdi_util.h" |
#endif |
+#if defined(OS_MACOSX) && defined(USE_SKIA) |
+#include "skia/ext/skia_utils_mac.h" |
+#endif |
+ |
using WebKit::WebBindings; |
using WebKit::WebCanvas; |
using WebKit::WebCursorInfo; |
@@ -1212,18 +1216,24 @@ |
// Create a PDF metafile and render from there into the passed in context. |
if (metafile.InitFromData(buffer->mapped_buffer(), buffer->size())) { |
// Flip the transform. |
- CGContextSaveGState(canvas); |
- CGContextTranslateCTM(canvas, 0, |
+#if defined(USE_SKIA) |
+ gfx::SkiaBitLocker bitLocker(canvas); |
stuartmorgan
2011/04/12 17:35:51
Indentation is wrong on this whole block
_cary
2011/04/12 21:03:55
Done.
|
+ CGContextRef cgContext = bitLocker.cgContext(); |
+#else |
+ CGContextRef cgContext = canvas; |
+#endif |
+ CGContextSaveGState(cgContext); |
+ CGContextTranslateCTM(cgContext, 0, |
current_print_settings_.printable_area.size.height); |
- CGContextScaleCTM(canvas, 1.0, -1.0); |
+ CGContextScaleCTM(cgContext, 1.0, -1.0); |
CGRect page_rect; |
page_rect.origin.x = current_print_settings_.printable_area.point.x; |
page_rect.origin.y = current_print_settings_.printable_area.point.y; |
page_rect.size.width = current_print_settings_.printable_area.size.width; |
page_rect.size.height = current_print_settings_.printable_area.size.height; |
- ret = metafile.RenderPage(1, canvas, page_rect, true, false, true, true); |
- CGContextRestoreGState(canvas); |
+ ret = metafile.RenderPage(1, cgContext, page_rect, true, false, true, true); |
+ CGContextRestoreGState(cgContext); |
} |
#elif defined(OS_WIN) |
// On Windows, we now need to render the PDF to the DC that backs the |
@@ -1380,10 +1390,16 @@ |
kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host, |
data_provider, NULL, false, kCGRenderingIntentDefault)); |
+#if defined(USE_SKIA) |
+ gfx::SkiaBitLocker bitLocker(canvas); |
+ CGContextRef cgContext = bitLocker.cgContext(); |
stuartmorgan
2011/04/12 17:35:51
Is round-tripping through CG actually the best way
_cary
2011/04/12 21:03:55
Fixed, by using non-CG code paths where appropriat
|
+#else |
+ CGContextRef cgContext = canvas; |
+#endif |
// Flip the transform |
- CGContextSaveGState(canvas); |
- CGContextTranslateCTM(canvas, 0, canvas_height); |
- CGContextScaleCTM(canvas, 1.0, -1.0); |
+ CGContextSaveGState(cgContext); |
+ CGContextTranslateCTM(cgContext, 0, canvas_height); |
+ CGContextScaleCTM(cgContext, 1.0, -1.0); |
CGRect bounds; |
bounds.origin.x = dest_rect.x(); |
@@ -1391,8 +1407,8 @@ |
bounds.size.width = dest_rect.width(); |
bounds.size.height = dest_rect.height(); |
- CGContextDrawImage(canvas, bounds, image); |
- CGContextRestoreGState(canvas); |
+ CGContextDrawImage(cgContext, bounds, image); |
+ CGContextRestoreGState(cgContext); |
} |
#endif // defined(OS_MACOSX) |