diff options
author | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-19 04:37:08 +0000 |
---|---|---|
committer | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-19 04:37:08 +0000 |
commit | 4a146de428a502f0de45e571f415039b3989ef38 (patch) | |
tree | 75e661ee9d2fcdae72ff35dc5e953054885b5c4a /chrome/renderer/print_web_view_helper_win.cc | |
parent | 09d8b96b586dc972f31b6e1c72643de6ffb5ad16 (diff) | |
download | chromium_src-4a146de428a502f0de45e571f415039b3989ef38.zip chromium_src-4a146de428a502f0de45e571f415039b3989ef38.tar.gz chromium_src-4a146de428a502f0de45e571f415039b3989ef38.tar.bz2 |
Unfork VectorPlatformCanvas.
Unfork VectorPlatformCanvas by making NativeMetafile know how to create an appropriate VectorPlatformDevice. This will also be useful when we have multiple NativeMetafile implemenations (each requiring a different VectorPlatformDevices).
BUG=NONE
TEST=NONE
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=78662
Reverted: http://src.chromium.org/viewvc/chrome?view=rev&revision=78663
Review URL: http://codereview.chromium.org/6665046
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78812 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/print_web_view_helper_win.cc')
-rw-r--r-- | chrome/renderer/print_web_view_helper_win.cc | 57 |
1 files changed, 10 insertions, 47 deletions
diff --git a/chrome/renderer/print_web_view_helper_win.cc b/chrome/renderer/print_web_view_helper_win.cc index d4b37db..2e87939 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 content_origin(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)->FinishDocument()) |