Chromium Code Reviews| Index: chrome/renderer/print_web_view_helper_mac.mm |
| diff --git a/chrome/renderer/print_web_view_helper_mac.mm b/chrome/renderer/print_web_view_helper_mac.mm |
| index 64761af6b6e9d5868bcb53252185764be1a00b2a..6d3f680243eaa0d9ddb8c984b5b055d756102e84 100644 |
| --- a/chrome/renderer/print_web_view_helper_mac.mm |
| +++ b/chrome/renderer/print_web_view_helper_mac.mm |
| @@ -66,17 +66,23 @@ void PrintWebViewHelper::RenderPreviewPage(int page_number) { |
| printParams.printable_size.width(), |
| printParams.printable_size.height()); |
| + scoped_ptr<printing::Metafile> draft_metafile; |
| printing::Metafile* initial_render_metafile = |
| print_preview_context_.metafile(); |
| -#if !defined(USE_SKIA) |
| - if (print_preview_context_.IsModifiable()) { |
| - initial_render_metafile = new printing::PreviewMetafile(); |
| - if (!initial_render_metafile->Init()) { |
| + |
| + if (print_preview_context_.IsModifiable() && |
| +#if defined(USE_SKIA) |
| + is_complete_metafile_sent_) { |
| +#else |
| + print_preview_context_.generate_draft_pages()) { |
| +#endif |
| + draft_metafile.reset(new printing::PreviewMetafile()); |
| + if (!draft_metafile->Init()) { |
| DidFinishPrinting(FAIL_PREVIEW); |
| return; |
| } |
| + initial_render_metafile = draft_metafile.get(); |
| } |
| -#endif |
| base::TimeTicks begin_time = base::TimeTicks::Now(); |
| RenderPage(printParams.page_size, content_area, scale_factor, page_number, |
| @@ -84,30 +90,37 @@ void PrintWebViewHelper::RenderPreviewPage(int page_number) { |
| print_preview_context_.RenderedPreviewPage( |
| base::TimeTicks::Now() - begin_time); |
| - printing::Metafile* draft_metafile = NULL; |
| if (print_preview_context_.IsModifiable()) { |
|
vandebo (ex-Chrome)
2011/08/08 20:11:46
Not sure it if would be cleaner, but if you like,
kmadhusu
2011/08/09 22:09:26
Done.
|
| + if (draft_metafile.get()) { |
| + draft_metafile->FinishDocument(); |
| +#if !defined(USE_SKIA) |
| + if (!is_complete_metafile_sent_) { |
| + bool success = print_preview_context_.metafile()->StartPage( |
| + printParams.page_size, content_area, scale_factor); |
| + DCHECK(success); |
| + // With CG, we rendered into a new metafile so we could get it as a |
| + // draft document. Now we need to add it to complete document. |
| + draft_metafile->RenderPage(1, |
| + print_preview_context_.metafile()->context(), |
| + CGRectMake(content_area.x(), content_area.y(), |
| + content_area.width(), |
| + content_area.height()), |
| + false /*shrunk_to_fit*/, |
| + false /*stretch_to_fit*/, |
| + true /*center_horizontally*/, |
| + true /*center_vertically*/); |
| + print_preview_context_.metafile()->FinishPage(); |
| + } |
| +#endif |
| + } else { |
|
vandebo (ex-Chrome)
2011/08/08 20:11:46
Actually, does this need to check ppc_generate_dra
kmadhusu
2011/08/09 22:09:26
Yes, I need to check ppc_generate_draft_pages(), b
|
| #if defined(USE_SKIA) |
| - draft_metafile = reinterpret_cast<printing::PreviewMetafile*>( |
| - print_preview_context_.metafile())->GetMetafileForCurrentPage(); |
| -#else |
| - draft_metafile = initial_render_metafile; |
| - draft_metafile->FinishDocument(); |
| - |
| - // With CG, we rendered into a new metafile so we could get it as a draft |
| - // document. Now we need to add it to complete document. |
| - draft_metafile->RenderPage(1, |
| - print_preview_context_.metafile()->context(), |
| - CGRectMake(content_area.x(), content_area.y(), |
| - content_area.width(), |
| - content_area.height()), |
| - false /*shrunk_to_fit*/, |
| - false /*stretch_to_fit*/, |
| - true /*center_horizontally*/, |
| - true /*center_vertically*/); |
| + draft_metafile.reset(reinterpret_cast<printing::PreviewMetafile*>( |
| + initial_render_metafile)->GetMetafileForCurrentPage()); |
| #endif |
| + } |
| } |
| - PreviewPageRendered(page_number, draft_metafile); |
| + PreviewPageRendered(page_number, draft_metafile.get()); |
| } |
| void PrintWebViewHelper::RenderPage( |
| @@ -126,6 +139,8 @@ void PrintWebViewHelper::RenderPage( |
| canvas->unref(); // SkRefPtr and new both took a reference. |
| WebKit::WebCanvas* canvasPtr = canvas.get(); |
| printing::MetafileSkiaWrapper::SetMetafileOnCanvas(canvasPtr, metafile); |
| + printing::MetafileSkiaWrapper::SetDraftMode(canvasPtr, |
| + is_complete_metafile_sent_); |
| #else |
| bool success = metafile->StartPage(page_size, content_area, scale_factor); |
| DCHECK(success); |