Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(810)

Side by Side Diff: chrome/browser/printing/print_view_manager.cc

Issue 11078018: Restored partial rasterization for AlphaBlend. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | printing/emf_win.h » ('j') | printing/emf_win.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « no previous file | printing/emf_win.h » ('j') | printing/emf_win.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698