mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			163 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights
 | |
| // reserved. Use of this source code is governed by a BSD-style license that
 | |
| // can be found in the LICENSE file.
 | |
| 
 | |
| #include "libcef/browser/print_settings_impl.h"
 | |
| 
 | |
| #include "base/logging.h"
 | |
| 
 | |
| CefPrintSettingsImpl::CefPrintSettingsImpl(
 | |
|     std::unique_ptr<printing::PrintSettings> settings,
 | |
|     bool read_only)
 | |
|     : CefValueBase<CefPrintSettings, printing::PrintSettings>(settings.get(),
 | |
|                                                               nullptr,
 | |
|                                                               kOwnerNoDelete,
 | |
|                                                               read_only,
 | |
|                                                               nullptr),
 | |
|       settings_(std::move(settings)) {}
 | |
| 
 | |
| bool CefPrintSettingsImpl::IsValid() {
 | |
|   return !detached();
 | |
| }
 | |
| 
 | |
| bool CefPrintSettingsImpl::IsReadOnly() {
 | |
|   return read_only();
 | |
| }
 | |
| 
 | |
| void CefPrintSettingsImpl::SetOrientation(bool landscape) {
 | |
|   CEF_VALUE_VERIFY_RETURN_VOID(true);
 | |
|   mutable_value()->SetOrientation(landscape);
 | |
| }
 | |
| 
 | |
| bool CefPrintSettingsImpl::IsLandscape() {
 | |
|   CEF_VALUE_VERIFY_RETURN(false, false);
 | |
|   return const_value().landscape();
 | |
| }
 | |
| 
 | |
| void CefPrintSettingsImpl::SetPrinterPrintableArea(
 | |
|     const CefSize& physical_size_device_units,
 | |
|     const CefRect& printable_area_device_units,
 | |
|     bool landscape_needs_flip) {
 | |
|   CEF_VALUE_VERIFY_RETURN_VOID(true);
 | |
|   gfx::Size size(physical_size_device_units.width,
 | |
|                  physical_size_device_units.height);
 | |
|   gfx::Rect rect(printable_area_device_units.x, printable_area_device_units.y,
 | |
|                  printable_area_device_units.width,
 | |
|                  printable_area_device_units.height);
 | |
|   mutable_value()->SetPrinterPrintableArea(size, rect, landscape_needs_flip);
 | |
| }
 | |
| 
 | |
| void CefPrintSettingsImpl::SetDeviceName(const CefString& name) {
 | |
|   CEF_VALUE_VERIFY_RETURN_VOID(true);
 | |
|   mutable_value()->set_device_name(name.ToString16());
 | |
| }
 | |
| 
 | |
| CefString CefPrintSettingsImpl::GetDeviceName() {
 | |
|   CEF_VALUE_VERIFY_RETURN(false, CefString());
 | |
|   return const_value().device_name();
 | |
| }
 | |
| 
 | |
| void CefPrintSettingsImpl::SetDPI(int dpi) {
 | |
|   CEF_VALUE_VERIFY_RETURN_VOID(true);
 | |
|   mutable_value()->set_dpi(dpi);
 | |
| }
 | |
| 
 | |
| int CefPrintSettingsImpl::GetDPI() {
 | |
|   CEF_VALUE_VERIFY_RETURN(false, 0);
 | |
|   return const_value().dpi();
 | |
| }
 | |
| 
 | |
| void CefPrintSettingsImpl::SetPageRanges(const PageRangeList& ranges) {
 | |
|   CEF_VALUE_VERIFY_RETURN_VOID(true);
 | |
|   printing::PageRanges page_ranges;
 | |
|   PageRangeList::const_iterator it = ranges.begin();
 | |
|   for (; it != ranges.end(); ++it) {
 | |
|     const CefRange& cef_range = *it;
 | |
|     printing::PageRange range;
 | |
|     range.from = cef_range.from;
 | |
|     range.to = cef_range.to;
 | |
|     page_ranges.push_back(range);
 | |
|   }
 | |
|   mutable_value()->set_ranges(page_ranges);
 | |
| }
 | |
| 
 | |
| size_t CefPrintSettingsImpl::GetPageRangesCount() {
 | |
|   CEF_VALUE_VERIFY_RETURN(false, 0);
 | |
|   return const_value().ranges().size();
 | |
| }
 | |
| 
 | |
| void CefPrintSettingsImpl::GetPageRanges(PageRangeList& ranges) {
 | |
|   CEF_VALUE_VERIFY_RETURN_VOID(false);
 | |
|   if (!ranges.empty())
 | |
|     ranges.clear();
 | |
|   const printing::PageRanges& page_ranges = const_value().ranges();
 | |
|   printing::PageRanges::const_iterator it = page_ranges.begin();
 | |
|   for (; it != page_ranges.end(); ++it) {
 | |
|     const printing::PageRange& range = *it;
 | |
|     ranges.push_back(CefRange(range.from, range.to));
 | |
|   }
 | |
| }
 | |
| 
 | |
| void CefPrintSettingsImpl::SetSelectionOnly(bool selection_only) {
 | |
|   CEF_VALUE_VERIFY_RETURN_VOID(true);
 | |
|   mutable_value()->set_selection_only(selection_only);
 | |
| }
 | |
| 
 | |
| bool CefPrintSettingsImpl::IsSelectionOnly() {
 | |
|   CEF_VALUE_VERIFY_RETURN(false, false);
 | |
|   return const_value().selection_only();
 | |
| }
 | |
| 
 | |
| void CefPrintSettingsImpl::SetCollate(bool collate) {
 | |
|   CEF_VALUE_VERIFY_RETURN_VOID(true);
 | |
|   mutable_value()->set_collate(collate);
 | |
| }
 | |
| 
 | |
| bool CefPrintSettingsImpl::WillCollate() {
 | |
|   CEF_VALUE_VERIFY_RETURN(false, false);
 | |
|   return const_value().collate();
 | |
| }
 | |
| 
 | |
| void CefPrintSettingsImpl::SetColorModel(ColorModel model) {
 | |
|   CEF_VALUE_VERIFY_RETURN_VOID(true);
 | |
|   mutable_value()->set_color(static_cast<printing::ColorModel>(model));
 | |
| }
 | |
| 
 | |
| CefPrintSettings::ColorModel CefPrintSettingsImpl::GetColorModel() {
 | |
|   CEF_VALUE_VERIFY_RETURN(false, COLOR_MODEL_UNKNOWN);
 | |
|   return static_cast<ColorModel>(const_value().color());
 | |
| }
 | |
| 
 | |
| void CefPrintSettingsImpl::SetCopies(int copies) {
 | |
|   CEF_VALUE_VERIFY_RETURN_VOID(true);
 | |
|   mutable_value()->set_copies(copies);
 | |
| }
 | |
| 
 | |
| int CefPrintSettingsImpl::GetCopies() {
 | |
|   CEF_VALUE_VERIFY_RETURN(false, false);
 | |
|   return const_value().copies();
 | |
| }
 | |
| 
 | |
| void CefPrintSettingsImpl::SetDuplexMode(DuplexMode mode) {
 | |
|   CEF_VALUE_VERIFY_RETURN_VOID(true);
 | |
|   mutable_value()->set_duplex_mode(static_cast<printing::DuplexMode>(mode));
 | |
| }
 | |
| 
 | |
| CefPrintSettings::DuplexMode CefPrintSettingsImpl::GetDuplexMode() {
 | |
|   CEF_VALUE_VERIFY_RETURN(false, DUPLEX_MODE_UNKNOWN);
 | |
|   return static_cast<DuplexMode>(const_value().duplex_mode());
 | |
| }
 | |
| 
 | |
| std::unique_ptr<printing::PrintSettings> CefPrintSettingsImpl::TakeOwnership() {
 | |
|   Detach(nullptr);
 | |
|   return std::move(settings_);
 | |
| }
 | |
| 
 | |
| // CefPrintSettings implementation.
 | |
| 
 | |
| // static
 | |
| CefRefPtr<CefPrintSettings> CefPrintSettings::Create() {
 | |
|   return new CefPrintSettingsImpl(std::make_unique<printing::PrintSettings>(),
 | |
|                                   false);
 | |
| }
 |