OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/printing/print_view_manager.h" | 5 #include "chrome/browser/printing/print_view_manager.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 if (!metafile->InitFromData(shared_buf.memory(), params.data_size)) { | 253 if (!metafile->InitFromData(shared_buf.memory(), params.data_size)) { |
254 NOTREACHED() << "Invalid metafile header"; | 254 NOTREACHED() << "Invalid metafile header"; |
255 web_contents()->Stop(); | 255 web_contents()->Stop(); |
256 return; | 256 return; |
257 } | 257 } |
258 } | 258 } |
259 | 259 |
260 #if defined(OS_WIN) | 260 #if defined(OS_WIN) |
261 bool big_emf = (params.data_size && params.data_size >= kMetafileMaxSize); | 261 bool big_emf = (params.data_size && params.data_size >= kMetafileMaxSize); |
262 const CommandLine* cmdline = CommandLine::ForCurrentProcess(); | 262 const CommandLine* cmdline = CommandLine::ForCurrentProcess(); |
263 if (big_emf || | 263 int raster_size = std::min(params.page_size.GetArea(), |
264 (cmdline && cmdline->HasSwitch(switches::kPrintRaster)) || | 264 kMaxRasterSizeInPixels); |
265 (!print_job_->settings().supports_alpha_blend() && | 265 if (big_emf || (cmdline && cmdline->HasSwitch(switches::kPrintRaster))) { |
266 metafile->IsAlphaBlendUsed())) { | |
267 int raster_size = std::min(params.page_size.GetArea(), | |
268 kMaxRasterSizeInPixels); | |
269 scoped_ptr<NativeMetafile> raster_metafile( | 266 scoped_ptr<NativeMetafile> raster_metafile( |
270 metafile->RasterizeMetafile(raster_size)); | 267 metafile->RasterizeMetafile(raster_size)); |
271 if (raster_metafile.get()) { | 268 if (raster_metafile.get()) { |
272 metafile.swap(raster_metafile); | 269 metafile.swap(raster_metafile); |
273 } else if (big_emf) { | 270 } else if (big_emf) { |
274 // Don't fall back to emf here. | 271 // Don't fall back to emf here. |
275 NOTREACHED() << "size:" << params.data_size; | 272 NOTREACHED() << "size:" << params.data_size; |
276 TerminatePrintJob(true); | 273 TerminatePrintJob(true); |
277 web_contents()->Stop(); | 274 web_contents()->Stop(); |
278 return; | 275 return; |
279 } | 276 } |
| 277 } else if (!print_job_->settings().supports_alpha_blend() && |
| 278 metafile->IsAlphaBlendUsed()) { |
| 279 scoped_ptr<NativeMetafile> raster_metafile( |
| 280 metafile->RasterizeAlphaBlend()); |
| 281 if (raster_metafile.get()) |
| 282 metafile.swap(raster_metafile); |
280 } | 283 } |
281 | 284 |
282 #endif | 285 #endif |
283 | 286 |
284 // Update the rendered document. It will send notifications to the listener. | 287 // Update the rendered document. It will send notifications to the listener. |
285 document->SetPage(params.page_number, | 288 document->SetPage(params.page_number, |
286 metafile.release(), | 289 metafile.release(), |
287 params.actual_shrink, | 290 params.actual_shrink, |
288 params.page_size, | 291 params.page_size, |
289 params.content_area); | 292 params.content_area); |
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
683 scoped_refptr<printing::PrinterQuery> printer_query; | 686 scoped_refptr<printing::PrinterQuery> printer_query; |
684 print_job_manager->PopPrinterQuery(cookie, &printer_query); | 687 print_job_manager->PopPrinterQuery(cookie, &printer_query); |
685 if (!printer_query.get()) | 688 if (!printer_query.get()) |
686 return; | 689 return; |
687 BrowserThread::PostTask( | 690 BrowserThread::PostTask( |
688 BrowserThread::IO, FROM_HERE, | 691 BrowserThread::IO, FROM_HERE, |
689 base::Bind(&PrinterQuery::StopWorker, printer_query.get())); | 692 base::Bind(&PrinterQuery::StopWorker, printer_query.get())); |
690 } | 693 } |
691 | 694 |
692 } // namespace printing | 695 } // namespace printing |
OLD | NEW |