diff options
author | gene@chromium.org <gene@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-09 17:22:21 +0000 |
---|---|---|
committer | gene@chromium.org <gene@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-09 17:22:21 +0000 |
commit | f64d7a352dd29bb7bc386fc1e829a764cdc9f64e (patch) | |
tree | 11cf115dcb989391b24729eb00f438ad895e50fb /chrome/renderer/print_web_view_helper_win.cc | |
parent | 6c511d3b56ca0c74838e2650f326ec6a617a4350 (diff) | |
download | chromium_src-f64d7a352dd29bb7bc386fc1e829a764cdc9f64e.zip chromium_src-f64d7a352dd29bb7bc386fc1e829a764cdc9f64e.tar.gz chromium_src-f64d7a352dd29bb7bc386fc1e829a764cdc9f64e.tar.bz2 |
A better fix for scaling issue.
Instead of using TLS and static function, pass scaling in the skia dictionary.
BUG=125499
TEST=Make sure printing is working.
Review URL: https://chromiumcodereview.appspot.com/10387022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@136055 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 | 46 |
1 files changed, 12 insertions, 34 deletions
diff --git a/chrome/renderer/print_web_view_helper_win.cc b/chrome/renderer/print_web_view_helper_win.cc index 8f2e3f4..7b1916b 100644 --- a/chrome/renderer/print_web_view_helper_win.cc +++ b/chrome/renderer/print_web_view_helper_win.cc @@ -12,7 +12,6 @@ #include "base/win/scoped_hdc.h" #include "base/win/scoped_select_object.h" #include "chrome/common/print_messages.h" -#include "printing/custom_scaling.h" #include "printing/metafile.h" #include "printing/metafile_impl.h" #include "printing/metafile_skia_wrapper.h" @@ -118,41 +117,11 @@ void PrintWebViewHelper::PrintPageInternal( gfx::Size page_size_in_dpi; gfx::Rect content_area_in_dpi; - // If we are printing PDF, it may not fit into metafile using 72dpi. - // (Metafile is based on screen resolution here.) - // (See http://code.google.com/p/chromium-os/issues/detail?id=16088) - // If PDF plugin encounter this issue it will save custom scale in TLS, - // so we can apply the same scaling factor here. - // If will do so ONLY if default scaling does not work. - // TODO(gene): We should revisit this solution for the next versions. - // Two possible solutions: - // We can create metafile of the right size (or resizable) - // https://code.google.com/p/chromium/issues/detail?id=126037 - // or - // We should return scale factor all the way from the plugin: - // webkit::ppapi::PluginInstance::PrintPDFOutput - scale calculated here - // webkit::ppapi::PluginInstance::PrintPageHelper - // webkit::ppapi::PluginInstance::PrintPage - // webkit::ppapi::WebPluginImpl::printPage - // WebKit::WebPluginContainerImpl::printPage - // WebKit::ChromePluginPrintContext::spoolPage - always return 1.0 scale - // WebKit::WebFrameImpl::printPage - // PrintWebViewHelper::RenderPage - // PrintWebViewHelper::PrintPageInternal - - printing::ClearCustomPrintingPageScale(); - // Render page for printing. metafile.reset(RenderPage(params.params, page_number, frame, false, metafile.get(), &actual_shrink, &page_size_in_dpi, &content_area_in_dpi)); - double custom_scale; - if (printing::GetCustomPrintingPageScale(&custom_scale)) { - actual_shrink = custom_scale; - printing::ClearCustomPrintingPageScale(); - } - // Close the device context to retrieve the compiled metafile. if (!metafile->FinishDocument()) NOTREACHED(); @@ -286,9 +255,18 @@ Metafile* PrintWebViewHelper::RenderPage( if (*actual_shrink <= 0 || webkit_scale_factor <= 0) { NOTREACHED() << "Printing page " << page_number << " failed."; } else { - // Update the dpi adjustment with the "page |actual_shrink|" calculated in - // webkit. - *actual_shrink /= (webkit_scale_factor * css_scale_factor); + // While rendering certain plugins (PDF) to metafile, we might need to + // set custom scale factor. Update |actual_shrink| with custom scale + // if it is set on canvas. + // TODO(gene): We should revisit this solution for the next versions. + // Consider creating metafile of the right size (or resizable) + // https://code.google.com/p/chromium/issues/detail?id=126037 + if (!printing::MetafileSkiaWrapper::GetCustomScaleOnCanvas( + *canvas, actual_shrink)) { + // Update the dpi adjustment with the "page |actual_shrink|" calculated in + // webkit. + *actual_shrink /= (webkit_scale_factor * css_scale_factor); + } } bool result = metafile->FinishPage(); |