| Index: chrome/renderer/print_web_view_helper_win.cc
|
| diff --git a/chrome/renderer/print_web_view_helper_win.cc b/chrome/renderer/print_web_view_helper_win.cc
|
| index 33ff59be7cbb7c17eaacb1602e7b17e525ba2a31..9ddb7eb31c5ac441a110d9fe4ecc46b27df4ffb2 100644
|
| --- a/chrome/renderer/print_web_view_helper_win.cc
|
| +++ b/chrome/renderer/print_web_view_helper_win.cc
|
| @@ -197,8 +197,7 @@ void PrintWebViewHelper::CreatePreviewDocument(
|
| void PrintWebViewHelper::RenderPage(
|
| const ViewMsg_Print_Params& params, float* scale_factor, int page_number,
|
| WebFrame* frame, scoped_ptr<printing::NativeMetafile>* metafile) {
|
| - HDC hdc = (*metafile)->context();
|
| - DCHECK(hdc);
|
| + DCHECK(metafile->get()->context());
|
|
|
| double content_width_in_points;
|
| double content_height_in_points;
|
| @@ -216,49 +215,14 @@ void PrintWebViewHelper::RenderPage(
|
| int width = static_cast<int>(content_width_in_points * params.max_shrink);
|
| int height = static_cast<int>(content_height_in_points * params.max_shrink);
|
|
|
| - bool result = (*metafile)->StartPage(
|
| - gfx::Size(width, height),
|
| - gfx::Point(static_cast<int>(margin_top_in_points),
|
| - static_cast<int>(margin_left_in_points)),
|
| - *scale_factor);
|
| - DCHECK(result);
|
| -
|
| -#if 0
|
| - // TODO(maruel): This code is kept for testing until the 100% GDI drawing
|
| - // code is stable. maruels use this code's output as a reference when the
|
| - // GDI drawing code fails.
|
| -
|
| - // Mix of Skia and GDI based.
|
| - skia::PlatformCanvas canvas(width, height, true);
|
| - canvas.drawARGB(255, 255, 255, 255, SkXfermode::kSrc_Mode);
|
| - float webkit_scale_factor = frame->printPage(page_number, &canvas);
|
| - if (*scale_factor <= 0 || webkit_scale_factor <= 0) {
|
| - NOTREACHED() << "Printing page " << page_number << " failed.";
|
| - } else {
|
| - // Update the dpi adjustment with the "page |scale_factor|" calculated in
|
| - // webkit.
|
| - *scale_factor /= webkit_scale_factor;
|
| - }
|
| + gfx::Size page_size(width, height);
|
| + gfx::Point(static_cast<int>(margin_left_in_points),
|
| + static_cast<int>(margin_top_in_points));
|
| + skia::PlatformDevice* device = (*metafile)->StartPageForVectorCanvas(
|
| + page_size, content_origin, 1.0f);
|
| + DCHECK(device);
|
| + skia::VectorCanvas canvas(device);
|
|
|
| - // Create a BMP v4 header that we can serialize.
|
| - BITMAPV4HEADER bitmap_header;
|
| - gfx::CreateBitmapV4Header(width, height, &bitmap_header);
|
| - const SkBitmap& src_bmp = canvas.getDevice()->accessBitmap(true);
|
| - SkAutoLockPixels src_lock(src_bmp);
|
| - int retval = StretchDIBits(hdc,
|
| - 0,
|
| - 0,
|
| - width, height,
|
| - 0, 0,
|
| - width, height,
|
| - src_bmp.getPixels(),
|
| - reinterpret_cast<BITMAPINFO*>(&bitmap_header),
|
| - DIB_RGB_COLORS,
|
| - SRCCOPY);
|
| - DCHECK(retval != GDI_ERROR);
|
| -#else
|
| - // 100% GDI based.
|
| - skia::VectorCanvas canvas(hdc, width, height);
|
| float webkit_scale_factor = frame->printPage(page_number, &canvas);
|
| if (*scale_factor <= 0 || webkit_scale_factor <= 0) {
|
| NOTREACHED() << "Printing page " << page_number << " failed.";
|
| @@ -267,13 +231,12 @@ void PrintWebViewHelper::RenderPage(
|
| // webkit.
|
| *scale_factor /= webkit_scale_factor;
|
| }
|
| -#endif
|
|
|
| - result = (*metafile)->FinishPage();
|
| + bool result = (*metafile)->FinishPage();
|
| DCHECK(result);
|
|
|
| skia::VectorPlatformDevice* platform_device =
|
| - static_cast<skia::VectorPlatformDevice*>(canvas.getDevice());
|
| + static_cast<skia::VectorPlatformDevice*>(device);
|
| if (platform_device->alpha_blend_used() && !params.supports_alpha_blend) {
|
| // Close the device context to retrieve the compiled metafile.
|
| if (!(*metafile)->Close())
|
|
|