diff options
author | halcanary <halcanary@google.com> | 2014-11-10 14:20:05 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-10 22:20:34 +0000 |
commit | 5be808e0b7478b27304f5a29b47ba1af1de627d2 (patch) | |
tree | 366bb7805c87248f62a55edd86584828fc58f0c6 /chrome/renderer/printing | |
parent | eeb7d1b688e3eabaf37341f8a84dec3c29aeac07 (diff) | |
download | chromium_src-5be808e0b7478b27304f5a29b47ba1af1de627d2.zip chromium_src-5be808e0b7478b27304f5a29b47ba1af1de627d2.tar.gz chromium_src-5be808e0b7478b27304f5a29b47ba1af1de627d2.tar.bz2 |
PdfMetafileSkia gives out a SkCanvas, not a SkBaseDevice.
Motivation: hide SkPDFDevice and SkPDFDocument behind PdfMetafileSkia class.
pdf_metafile_skia.cc:
Implement GetVectorCanvasForNewPage.
Remove StartPageForVectorCanvas.
Own the SkCanvas pointer (current_page_canvas_).
Replace page_outstanding_ field with a method that checks to see
if current_page_canvas_ is NULL.
Implement SaveTo.
skia::VectorPlatformDeviceSkia
remove class
print_web_view_helper.cc
Remove calls to canvas->getTopDevice()->setDrawingArea(...); (SkDFDevice)
This API is no longer effective.
print_web_view_helper_linux.cc,
print_web_view_helper_mac.mm,
print_web_view_helper_pdf_win.cc:
call GetVectorCanvasForNewPage rather than StartPageForVectorCanvas
BUG=278148
Review URL: https://codereview.chromium.org/704813002
Cr-Commit-Position: refs/heads/master@{#303522}
Diffstat (limited to 'chrome/renderer/printing')
4 files changed, 24 insertions, 57 deletions
diff --git a/chrome/renderer/printing/print_web_view_helper.cc b/chrome/renderer/printing/print_web_view_helper.cc index 67e000f..494ab7e 100644 --- a/chrome/renderer/printing/print_web_view_helper.cc +++ b/chrome/renderer/printing/print_web_view_helper.cc @@ -28,7 +28,6 @@ #include "net/base/escape.h" #include "printing/pdf_metafile_skia.h" #include "printing/units.h" -#include "skia/ext/vector_platform_device_skia.h" #include "third_party/WebKit/public/platform/WebSize.h" #include "third_party/WebKit/public/platform/WebURLRequest.h" #include "third_party/WebKit/public/web/WebConsoleMessage.h" @@ -453,10 +452,6 @@ void PrintWebViewHelper::PrintHeaderAndFooter( float webkit_scale_factor, const PageSizeMargins& page_layout, const PrintMsg_Print_Params& params) { - skia::VectorPlatformDeviceSkia* device = - static_cast<skia::VectorPlatformDeviceSkia*>(canvas->getTopDevice()); - device->setDrawingArea(SkPDFDevice::kMargin_DrawingArea); - SkAutoCanvasRestore auto_restore(canvas, true); canvas->scale(1 / webkit_scale_factor, 1 / webkit_scale_factor); @@ -503,8 +498,6 @@ void PrintWebViewHelper::PrintHeaderAndFooter( web_view->close(); frame->close(); - - device->setDrawingArea(SkPDFDevice::kContent_DrawingArea); } #endif // defined(ENABLE_PRINT_PREVIEW) diff --git a/chrome/renderer/printing/print_web_view_helper_linux.cc b/chrome/renderer/printing/print_web_view_helper_linux.cc index 18bfd31..ae862d9 100644 --- a/chrome/renderer/printing/print_web_view_helper_linux.cc +++ b/chrome/renderer/printing/print_web_view_helper_linux.cc @@ -161,16 +161,11 @@ void PrintWebViewHelper::PrintPageInternal( gfx::Rect canvas_area = params.params.display_header_footer ? gfx::Rect(page_size) : content_area; - SkBaseDevice* device = metafile->StartPageForVectorCanvas(page_size, - canvas_area, - scale_factor); - if (!device) + skia::VectorCanvas* canvas = + metafile->GetVectorCanvasForNewPage(page_size, canvas_area, scale_factor); + if (!canvas) return; - // The printPage method take a reference to the canvas we pass down, so it - // can't be a stack object. - skia::RefPtr<skia::VectorCanvas> canvas = - skia::AdoptRef(new skia::VectorCanvas(device)); MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile); skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_); @@ -178,20 +173,17 @@ void PrintWebViewHelper::PrintPageInternal( if (params.params.display_header_footer) { // |page_number| is 0-based, so 1 is added. // TODO(vitalybuka) : why does it work only with 1.25? - PrintHeaderAndFooter(canvas.get(), - params.page_number + 1, - print_preview_context_.total_page_count(), - *frame, - scale_factor / 1.25, - page_layout_in_points, + PrintHeaderAndFooter(canvas, params.page_number + 1, + print_preview_context_.total_page_count(), *frame, + scale_factor / 1.25, page_layout_in_points, params.params); } #endif // defined(ENABLE_PRINT_PREVIEW) RenderPageContent(frame, params.page_number, canvas_area, content_area, - scale_factor, canvas.get()); + scale_factor, canvas); - // Done printing. Close the device context to retrieve the compiled metafile. + // Done printing. Close the canvas to retrieve the compiled metafile. if (!metafile->FinishPage()) NOTREACHED() << "metafile failed"; } diff --git a/chrome/renderer/printing/print_web_view_helper_mac.mm b/chrome/renderer/printing/print_web_view_helper_mac.mm index db8bb80..ffde22c 100644 --- a/chrome/renderer/printing/print_web_view_helper_mac.mm +++ b/chrome/renderer/printing/print_web_view_helper_mac.mm @@ -118,29 +118,23 @@ void PrintWebViewHelper::RenderPage(const PrintMsg_Print_Params& params, params.display_header_footer ? gfx::Rect(*page_size) : content_area; { - SkBaseDevice* device = metafile->StartPageForVectorCanvas( + skia::VectorCanvas* canvas = metafile->GetVectorCanvasForNewPage( *page_size, canvas_area, scale_factor); - if (!device) + if (!canvas) return; - skia::RefPtr<skia::VectorCanvas> canvas = - skia::AdoptRef(new skia::VectorCanvas(device)); - blink::WebCanvas* canvas_ptr = canvas.get(); MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile); skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_); skia::SetIsPreviewMetafile(*canvas, is_preview); if (params.display_header_footer) { - PrintHeaderAndFooter(canvas_ptr, + PrintHeaderAndFooter(static_cast<blink::WebCanvas*>(canvas), page_number + 1, - print_preview_context_.total_page_count(), - *frame, - scale_factor, - page_layout_in_points, - params); + print_preview_context_.total_page_count(), *frame, + scale_factor, page_layout_in_points, params); } RenderPageContent(frame, page_number, canvas_area, content_area, - scale_factor, canvas_ptr); + scale_factor, static_cast<blink::WebCanvas*>(canvas)); } // Done printing. Close the device context to retrieve the compiled metafile. diff --git a/chrome/renderer/printing/print_web_view_helper_pdf_win.cc b/chrome/renderer/printing/print_web_view_helper_pdf_win.cc index b6300b0..d9554d7 100644 --- a/chrome/renderer/printing/print_web_view_helper_pdf_win.cc +++ b/chrome/renderer/printing/print_web_view_helper_pdf_win.cc @@ -179,38 +179,26 @@ void PrintWebViewHelper::PrintPageInternal( frame->getPrintPageShrink(params.page_number); float scale_factor = css_scale_factor * webkit_page_shrink_factor; - SkBaseDevice* device = metafile->StartPageForVectorCanvas(page_size, - canvas_area, - scale_factor); - if (!device) + skia::VectorCanvas* canvas = + metafile->GetVectorCanvasForNewPage(page_size, canvas_area, scale_factor); + if (!canvas) return; - // The printPage method take a reference to the canvas we pass down, so it - // can't be a stack object. - skia::RefPtr<skia::VectorCanvas> canvas = - skia::AdoptRef(new skia::VectorCanvas(device)); MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile); skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_); if (params.params.display_header_footer) { // |page_number| is 0-based, so 1 is added. - PrintHeaderAndFooter(canvas.get(), - params.page_number + 1, - print_preview_context_.total_page_count(), - *frame, - scale_factor, - page_layout_in_points, - params.params); + PrintHeaderAndFooter(canvas, params.page_number + 1, + print_preview_context_.total_page_count(), *frame, + scale_factor, page_layout_in_points, params.params); } - float webkit_scale_factor = RenderPageContent(frame, - params.page_number, - canvas_area, - content_area, - scale_factor, - canvas.get()); + float webkit_scale_factor = + RenderPageContent(frame, params.page_number, canvas_area, content_area, + scale_factor, canvas); DCHECK_GT(webkit_scale_factor, 0.0f); - // Done printing. Close the device context to retrieve the compiled metafile. + // Done printing. Close the canvas to retrieve the compiled metafile. if (!metafile->FinishPage()) NOTREACHED() << "metafile failed"; } |