| 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
|
|
|