Index: webkit/plugins/ppapi/ppapi_plugin_instance.cc |
=================================================================== |
--- webkit/plugins/ppapi/ppapi_plugin_instance.cc (revision 80358) |
+++ webkit/plugins/ppapi/ppapi_plugin_instance.cc (working copy) |
@@ -1231,10 +1231,7 @@ |
#elif defined(OS_WIN) |
// On Windows, we now need to render the PDF to the DC that backs the |
// supplied canvas. |
- skia::VectorPlatformDevice& device = |
- static_cast<skia::VectorPlatformDevice&>( |
- canvas->getTopPlatformDevice()); |
- HDC dc = device.getBitmapDC(); |
+ HDC dc = skia::BeginPlatformPaint(canvas); |
gfx::Size size_in_pixels; |
size_in_pixels.set_width( |
printing::ConvertUnit(current_print_settings_.printable_area.size.width, |
@@ -1256,6 +1253,7 @@ |
current_print_settings_.dpi, current_print_settings_.dpi, |
0, 0, size_in_pixels.width(), |
size_in_pixels.height(), true, false, true, true); |
+ skia::EndPlatformPaint(canvas); |
#endif // defined(OS_WIN) |
return ret; |
@@ -1322,18 +1320,6 @@ |
const SkBitmap& bitmap, |
const gfx::Rect& printable_area, |
WebKit::WebCanvas* canvas) { |
- skia::VectorPlatformDevice& device = |
- static_cast<skia::VectorPlatformDevice&>( |
- canvas->getTopPlatformDevice()); |
- HDC dc = device.getBitmapDC(); |
- // TODO(sanjeevr): This is a temporary hack. If we output a JPEG |
- // to the EMF, the EnumEnhMetaFile call fails in the browser |
- // process. The failure also happens if we output nothing here. |
- // We need to investigate the reason for this failure and fix it. |
- // In the meantime this temporary hack of drawing an empty |
- // rectangle in the DC gets us by. |
- Rectangle(dc, 0, 0, 0, 0); |
- |
// Ideally we should add JPEG compression to the VectorPlatformDevice class |
// However, Skia currently has no JPEG compression code and we cannot |
// depend on gfx/jpeg_codec.h in Skia. So we do the compression here. |
@@ -1353,17 +1339,27 @@ |
NOTREACHED(); |
return false; |
} |
+ |
BITMAPINFOHEADER bmi = {0}; |
gfx::CreateBitmapHeader(bitmap.width(), bitmap.height(), &bmi); |
bmi.biCompression = BI_JPEG; |
bmi.biSizeImage = compressed_image.size(); |
bmi.biHeight = -bmi.biHeight; |
+ HDC dc = skia::BeginPlatformPaint(canvas); |
+ // TODO(sanjeevr): This is a temporary hack. If we output a JPEG |
+ // to the EMF, the EnumEnhMetaFile call fails in the browser |
+ // process. The failure also happens if we output nothing here. |
+ // We need to investigate the reason for this failure and fix it. |
+ // In the meantime this temporary hack of drawing an empty |
+ // rectangle in the DC gets us by. |
+ Rectangle(dc, 0, 0, 0, 0); |
StretchDIBits(dc, printable_area.x(), printable_area.y(), |
printable_area.width(), printable_area.height(), |
0, 0, bitmap.width(), bitmap.height(), |
&compressed_image.front(), |
reinterpret_cast<const BITMAPINFO*>(&bmi), |
DIB_RGB_COLORS, SRCCOPY); |
+ skia::EndPlatformPaint(canvas); |
return true; |
} |
#endif // OS_WIN |