Index: chrome/browser/printing/print_view_manager.cc |
diff --git a/chrome/browser/printing/print_view_manager.cc b/chrome/browser/printing/print_view_manager.cc |
index ed57b697becb7cdd35918b10e44632b5a6684447..4b83da0ba78f04da3d838117394209771978b36e 100644 |
--- a/chrome/browser/printing/print_view_manager.cc |
+++ b/chrome/browser/printing/print_view_manager.cc |
@@ -260,12 +260,9 @@ void PrintViewManager::OnDidPrintPage( |
#if defined(OS_WIN) |
bool big_emf = (params.data_size && params.data_size >= kMetafileMaxSize); |
const CommandLine* cmdline = CommandLine::ForCurrentProcess(); |
- if (big_emf || |
- (cmdline && cmdline->HasSwitch(switches::kPrintRaster)) || |
- (!print_job_->settings().supports_alpha_blend() && |
- metafile->IsAlphaBlendUsed())) { |
- int raster_size = std::min(params.page_size.GetArea(), |
- kMaxRasterSizeInPixels); |
+ int raster_size = std::min(params.page_size.GetArea(), |
+ kMaxRasterSizeInPixels); |
+ if (big_emf || (cmdline && cmdline->HasSwitch(switches::kPrintRaster))) { |
scoped_ptr<NativeMetafile> raster_metafile( |
metafile->RasterizeMetafile(raster_size)); |
if (raster_metafile.get()) { |
@@ -277,6 +274,12 @@ void PrintViewManager::OnDidPrintPage( |
web_contents()->Stop(); |
return; |
} |
+ } else if (!print_job_->settings().supports_alpha_blend() && |
+ metafile->IsAlphaBlendUsed()) { |
+ scoped_ptr<NativeMetafile> raster_metafile( |
+ metafile->RasterizeAlphaBlend()); |
+ if (raster_metafile.get()) |
+ metafile.swap(raster_metafile); |
} |
#endif |