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_job.h" | 5 #include "chrome/browser/printing/print_job.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
229 std::unique_ptr<PdfConverter> converter) | 229 std::unique_ptr<PdfConverter> converter) |
230 : page_count_(0), | 230 : page_count_(0), |
231 current_page_(0), | 231 current_page_(0), |
232 pages_in_progress_(0), | 232 pages_in_progress_(0), |
233 page_size_(page_size), | 233 page_size_(page_size), |
234 content_area_(content_area), | 234 content_area_(content_area), |
235 converter_(std::move(converter)) {} | 235 converter_(std::move(converter)) {} |
236 | 236 |
237 void Start(const scoped_refptr<base::RefCountedMemory>& data, | 237 void Start(const scoped_refptr<base::RefCountedMemory>& data, |
238 const PdfRenderSettings& conversion_settings, | 238 const PdfRenderSettings& conversion_settings, |
239 bool print_text_with_gdi, | |
240 const PdfConverter::StartCallback& start_callback) { | 239 const PdfConverter::StartCallback& start_callback) { |
241 converter_->Start(data, conversion_settings, print_text_with_gdi, | 240 converter_->Start(data, conversion_settings, start_callback); |
242 start_callback); | |
243 } | 241 } |
244 | 242 |
245 void GetMorePages(const PdfConverter::GetPageCallback& get_page_callback) { | 243 void GetMorePages(const PdfConverter::GetPageCallback& get_page_callback) { |
246 const int kMaxNumberOfTempFilesPerDocument = 3; | 244 const int kMaxNumberOfTempFilesPerDocument = 3; |
247 while (pages_in_progress_ < kMaxNumberOfTempFilesPerDocument && | 245 while (pages_in_progress_ < kMaxNumberOfTempFilesPerDocument && |
248 current_page_ < page_count_) { | 246 current_page_ < page_count_) { |
249 ++pages_in_progress_; | 247 ++pages_in_progress_; |
250 converter_->GetPage(current_page_++, get_page_callback); | 248 converter_->GetPage(current_page_++, get_page_callback); |
251 } | 249 } |
252 } | 250 } |
(...skipping 22 matching lines...) Expand all Loading... | |
275 void PrintJob::AppendPrintedPage(int page_number) { | 273 void PrintJob::AppendPrintedPage(int page_number) { |
276 pdf_page_mapping_.push_back(page_number); | 274 pdf_page_mapping_.push_back(page_number); |
277 } | 275 } |
278 | 276 |
279 void PrintJob::StartPdfToEmfConversion( | 277 void PrintJob::StartPdfToEmfConversion( |
280 const scoped_refptr<base::RefCountedMemory>& bytes, | 278 const scoped_refptr<base::RefCountedMemory>& bytes, |
281 const gfx::Size& page_size, | 279 const gfx::Size& page_size, |
282 const gfx::Rect& content_area, | 280 const gfx::Rect& content_area, |
283 bool print_text_with_gdi) { | 281 bool print_text_with_gdi) { |
284 DCHECK(!pdf_conversion_state_); | 282 DCHECK(!pdf_conversion_state_); |
283 | |
285 pdf_conversion_state_ = | 284 pdf_conversion_state_ = |
286 base::MakeUnique<PdfConversionState>(page_size, content_area, | 285 base::MakeUnique<PdfConversionState>(page_size, content_area, |
287 PdfConverter::CreatePdfToEmfConverter()); | 286 PdfConverter::CreatePdfToEmfConverter()); |
287 is_postscript_ = false; | |
288 const int kPrinterDpi = settings().dpi(); | 288 const int kPrinterDpi = settings().dpi(); |
289 PdfRenderSettings settings(content_area, kPrinterDpi, true /* autorotate? */); | 289 PdfRenderSettings settings( |
290 content_area, gfx::Point(0, 0), kPrinterDpi, true /* autorotate? */, | |
291 print_text_with_gdi ? PdfRenderSettings::Mode::GDI_TEXT | |
292 : PdfRenderSettings::Mode::NORMAL); | |
290 pdf_conversion_state_->Start( | 293 pdf_conversion_state_->Start( |
291 bytes, settings, print_text_with_gdi, | 294 bytes, settings, base::Bind(&PrintJob::OnPdfConversionStarted, this)); |
292 base::Bind(&PrintJob::OnPdfConversionStarted, this)); | |
293 } | 295 } |
294 | 296 |
295 void PrintJob::OnPdfConversionStarted(int page_count) { | 297 void PrintJob::OnPdfConversionStarted(int page_count) { |
296 if (page_count <= 0) { | 298 if (page_count <= 0) { |
297 pdf_conversion_state_.reset(); | 299 pdf_conversion_state_.reset(); |
298 Cancel(); | 300 Cancel(); |
299 return; | 301 return; |
300 } | 302 } |
301 pdf_conversion_state_->set_page_count(page_count); | 303 pdf_conversion_state_->set_page_count(page_count); |
302 pdf_conversion_state_->GetMorePages( | 304 pdf_conversion_state_->GetMorePages( |
303 base::Bind(&PrintJob::OnPdfPageConverted, this)); | 305 base::Bind(&PrintJob::OnPdfPageConverted, this)); |
304 } | 306 } |
305 | 307 |
306 void PrintJob::OnPdfPageConverted(int page_number, | 308 void PrintJob::OnPdfPageConverted(int page_number, |
307 float scale_factor, | 309 float scale_factor, |
308 std::unique_ptr<MetafilePlayer> metafile) { | 310 std::unique_ptr<MetafilePlayer> metafile) { |
309 DCHECK(pdf_conversion_state_); | 311 DCHECK(pdf_conversion_state_); |
310 if (!document_.get() || !metafile || page_number < 0 || | 312 if (!document_.get() || !metafile || page_number < 0 || |
311 static_cast<size_t>(page_number) >= pdf_page_mapping_.size()) { | 313 static_cast<size_t>(page_number) >= pdf_page_mapping_.size()) { |
312 pdf_conversion_state_.reset(); | 314 pdf_conversion_state_.reset(); |
313 Cancel(); | 315 Cancel(); |
314 return; | 316 return; |
315 } | 317 } |
316 | 318 |
317 // Update the rendered document. It will send notifications to the listener. | 319 // Update the rendered document. It will send notifications to the listener. |
318 document_->SetPage(pdf_page_mapping_[page_number], std::move(metafile), | 320 document_->SetPage( |
319 scale_factor, pdf_conversion_state_->page_size(), | 321 pdf_page_mapping_[page_number], std::move(metafile), |
320 pdf_conversion_state_->content_area()); | 322 is_postscript_ ? 0.0f : scale_factor, |
Vitaly Buka (NO REVIEWS)
2017/01/27 00:38:49
I guess better to remove conditiond and just use
s
rbpotter
2017/01/27 16:37:21
Done.
| |
323 is_postscript_ ? gfx::Size() : pdf_conversion_state_->page_size(), | |
324 is_postscript_ ? gfx::Rect() : pdf_conversion_state_->content_area()); | |
Vitaly Buka (NO REVIEWS)
2017/01/27 00:38:49
why do you need condition here?
PdfConversionState
rbpotter
2017/01/27 16:37:21
Done.
| |
321 | 325 |
322 pdf_conversion_state_->GetMorePages( | 326 pdf_conversion_state_->GetMorePages( |
323 base::Bind(&PrintJob::OnPdfPageConverted, this)); | 327 base::Bind(&PrintJob::OnPdfPageConverted, this)); |
324 } | 328 } |
329 | |
330 void PrintJob::StartPdfToPostScriptConversion( | |
331 const scoped_refptr<base::RefCountedMemory>& bytes, | |
332 const gfx::Rect& content_area, | |
333 const gfx::Point& physical_offsets, | |
334 bool ps_level2) { | |
335 DCHECK(!pdf_conversion_state_); | |
336 pdf_conversion_state_ = base::MakeUnique<PdfConversionState>( | |
337 gfx::Size(), gfx::Rect(), PdfConverter::CreatePdfToPostScriptConverter()); | |
338 is_postscript_ = true; | |
Vitaly Buka (NO REVIEWS)
2017/01/27 00:38:49
looks like is_postscript_ can be removed
rbpotter
2017/01/27 16:37:21
Done.
| |
339 const int kPrinterDpi = settings().dpi(); | |
340 PdfRenderSettings settings( | |
341 content_area, physical_offsets, kPrinterDpi, true /* autorotate? */, | |
342 ps_level2 ? PdfRenderSettings::Mode::POSTSCRIPT_LEVEL2 | |
343 : PdfRenderSettings::Mode::POSTSCRIPT_LEVEL3); | |
344 pdf_conversion_state_->Start( | |
345 bytes, settings, base::Bind(&PrintJob::OnPdfConversionStarted, this)); | |
346 } | |
325 #endif // defined(OS_WIN) | 347 #endif // defined(OS_WIN) |
326 | 348 |
327 void PrintJob::UpdatePrintedDocument(PrintedDocument* new_document) { | 349 void PrintJob::UpdatePrintedDocument(PrintedDocument* new_document) { |
328 if (document_.get() == new_document) | 350 if (document_.get() == new_document) |
329 return; | 351 return; |
330 | 352 |
331 document_ = new_document; | 353 document_ = new_document; |
332 | 354 |
333 if (document_.get()) | 355 if (document_.get()) |
334 settings_ = document_->settings(); | 356 settings_ = document_->settings(); |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
460 } | 482 } |
461 | 483 |
462 JobEventDetails::~JobEventDetails() { | 484 JobEventDetails::~JobEventDetails() { |
463 } | 485 } |
464 | 486 |
465 PrintedDocument* JobEventDetails::document() const { return document_.get(); } | 487 PrintedDocument* JobEventDetails::document() const { return document_.get(); } |
466 | 488 |
467 PrintedPage* JobEventDetails::page() const { return page_.get(); } | 489 PrintedPage* JobEventDetails::page() const { return page_.get(); } |
468 | 490 |
469 } // namespace printing | 491 } // namespace printing |
OLD | NEW |