From 4c9054b4d4aad1c2b53e2d893e1928b836fad5f2 Mon Sep 17 00:00:00 2001 From: "vitalybuka@chromium.org" Date: Mon, 4 Nov 2013 18:34:29 +0000 Subject: Move settings setup for PDF and cloud print into single location in PrintingContext. Hard-code CloudPrint printable area until we start to receive this data from server. BUG=305731 NOTRY=true Review URL: https://codereview.chromium.org/46623002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@232741 0039d316-1c4b-4281-b951-d872f2087c98 --- printing/print_dialog_gtk_interface.h | 6 +- printing/print_settings.cc | 6 +- printing/print_settings.h | 1 - printing/print_settings_initializer_gtk.cc | 8 +-- printing/print_settings_initializer_mac.cc | 4 +- printing/print_settings_initializer_win.cc | 4 +- printing/printing_context.cc | 26 ++++++++- printing/printing_context.h | 9 ++- printing/printing_context_android.h | 4 +- printing/printing_context_gtk.cc | 17 +++++- printing/printing_context_gtk.h | 4 +- printing/printing_context_mac.h | 4 +- printing/printing_context_mac.mm | 30 ++++++++-- printing/printing_context_no_system_dialog.cc | 43 +++++++-------- printing/printing_context_no_system_dialog.h | 4 +- printing/printing_context_win.cc | 79 ++++++++++----------------- printing/printing_context_win.h | 4 +- printing/units.h | 21 ++++++- 18 files changed, 160 insertions(+), 114 deletions(-) (limited to 'printing') diff --git a/printing/print_dialog_gtk_interface.h b/printing/print_dialog_gtk_interface.h index 3b3fcdd..e3506dd 100644 --- a/printing/print_dialog_gtk_interface.h +++ b/printing/print_dialog_gtk_interface.h @@ -24,11 +24,7 @@ class PrintDialogGtkInterface { // Updates the dialog to use |settings|. Only used when printing without the // system print dialog. E.g. for Print Preview. Returns false on error. - // |target_is_pdf| is true if implementation needs to generate PDF without - // actual printing. In this case implementation may avoid setup of native - // print system. Ex. "save to pdf" or Cloud Print. - virtual bool UpdateSettings(bool target_is_pdf, - PrintSettings* settings) = 0; + virtual bool UpdateSettings(PrintSettings* settings) = 0; // Shows the dialog and handles the response with |callback|. Only used when // printing with the native print dialog. diff --git a/printing/print_settings.cc b/printing/print_settings.cc index 9e2a251..f2dc425 100644 --- a/printing/print_settings.cc +++ b/printing/print_settings.cc @@ -140,10 +140,10 @@ void PrintSettings::Clear() { } void PrintSettings::SetPrinterPrintableArea( - gfx::Size const& physical_size_device_units, - gfx::Rect const& printable_area_device_units, - int units_per_inch, + const gfx::Size& physical_size_device_units, + const gfx::Rect& printable_area_device_units, bool landscape_needs_flip) { + int units_per_inch = device_units_per_inch(); int header_footer_text_height = 0; if (display_header_footer_) { // Hard-code text_height = 0.5cm = ~1/5 of inch. diff --git a/printing/print_settings.h b/printing/print_settings.h index b80d354..b18d860 100644 --- a/printing/print_settings.h +++ b/printing/print_settings.h @@ -48,7 +48,6 @@ class PRINTING_EXPORT PrintSettings { // to false on those platforms to avoid double flipping. void SetPrinterPrintableArea(const gfx::Size& physical_size_device_units, const gfx::Rect& printable_area_device_units, - int units_per_inch, bool landscape_needs_flip); const PageSetup& page_setup_device_units() const { return page_setup_device_units_; diff --git a/printing/print_settings_initializer_gtk.cc b/printing/print_settings_initializer_gtk.cc index 793fdb8..53cb9bb 100644 --- a/printing/print_settings_initializer_gtk.cc +++ b/printing/print_settings_initializer_gtk.cc @@ -43,8 +43,8 @@ void PrintSettingsInitializerGtk::InitPrintSettings( } else { // Use default values if we cannot get valid values from the print dialog. dpi = kPixelsPerInch; - double page_width_in_pixel = 8.5 * dpi; - double page_height_in_pixel = 11.0 * dpi; + double page_width_in_pixel = kLetterWidthInch * dpi; + double page_height_in_pixel = kLetterHeightInch * dpi; physical_size_device_units.SetSize( static_cast(page_width_in_pixel), static_cast(page_height_in_pixel)); @@ -67,10 +67,10 @@ void PrintSettingsInitializerGtk::InitPrintSettings( GtkPageOrientation orientation = gtk_print_settings_get_orientation(settings); // Set before SetPrinterPrintableArea to make it flip area if necessary. print_settings->SetOrientation(orientation == GTK_PAGE_ORIENTATION_LANDSCAPE); - + DCHECK_EQ(print_settings->device_units_per_inch(), dpi); print_settings->SetPrinterPrintableArea(physical_size_device_units, printable_area_device_units, - dpi, true); + true); } const double PrintSettingsInitializerGtk::kTopMarginInInch = 0.25; diff --git a/printing/print_settings_initializer_mac.cc b/printing/print_settings_initializer_mac.cc index 9333ec9..7dc41a6 100644 --- a/printing/print_settings_initializer_mac.cc +++ b/printing/print_settings_initializer_mac.cc @@ -6,6 +6,7 @@ #include "base/strings/sys_string_conversions.h" #include "printing/print_settings.h" +#include "printing/units.h" namespace printing { @@ -54,9 +55,10 @@ void PrintSettingsInitializerMac::InitPrintSettings( (page_rect.right - page_rect.left), (page_rect.bottom - page_rect.top)); + DCHECK_EQ(print_settings->device_units_per_inch(), kPointsPerInch); print_settings->SetPrinterPrintableArea(physical_size_device_units, printable_area_device_units, - 72, false); + false); } } // namespace printing diff --git a/printing/print_settings_initializer_win.cc b/printing/print_settings_initializer_win.cc index ef46f8d..c10562b 100644 --- a/printing/print_settings_initializer_win.cc +++ b/printing/print_settings_initializer_win.cc @@ -48,10 +48,10 @@ void PrintSettingsInitializerWin::InitPrintSettings( printable_area_device_units)) { printable_area_device_units = gfx::Rect(physical_size_device_units); } - + DCHECK_EQ(print_settings->device_units_per_inch(), dpi); print_settings->SetPrinterPrintableArea(physical_size_device_units, printable_area_device_units, - dpi, false); + false); } } // namespace printing diff --git a/printing/printing_context.cc b/printing/printing_context.cc index 9b3b8ae..40342e9 100644 --- a/printing/printing_context.cc +++ b/printing/printing_context.cc @@ -9,9 +9,14 @@ #include "printing/page_setup.h" #include "printing/page_size_margins.h" #include "printing/print_settings_initializer.h" +#include "printing/units.h" namespace printing { +namespace { +const float kCloudPrintMarginInch = 0.25; +} + PrintingContext::PrintingContext(const std::string& app_locale) : dialog_box_dismissed_(false), in_print_job_(false), @@ -66,9 +71,24 @@ PrintingContext::Result PrintingContext::UpdatePrintSettings( bool open_in_external_preview = job_settings.HasKey(kSettingOpenPDFInPreview); - return UpdatePrinterSettings( - print_to_pdf || is_cloud_dialog || print_to_cloud, - open_in_external_preview); + if (!open_in_external_preview && + (print_to_pdf || print_to_cloud || is_cloud_dialog)) { + settings_.set_dpi(kDefaultPdfDpi); + // Cloud print should get size and rect from capabilities received from + // server. + gfx::Size paper_size(GetPdfPaperSizeDeviceUnits()); + gfx::Rect paper_rect(0, 0, paper_size.width(), paper_size.height()); + if (print_to_cloud) { + paper_rect.Inset( + kCloudPrintMarginInch * settings_.device_units_per_inch(), + kCloudPrintMarginInch * settings_.device_units_per_inch()); + } + DCHECK_EQ(settings_.device_units_per_inch(), kDefaultPdfDpi); + settings_.SetPrinterPrintableArea(paper_size, paper_rect, true); + return OK; + } + + return UpdatePrinterSettings(open_in_external_preview); } } // namespace printing diff --git a/printing/printing_context.h b/printing/printing_context.h index 7fa90d2..7a0a8c8 100644 --- a/printing/printing_context.h +++ b/printing/printing_context.h @@ -51,14 +51,13 @@ class PRINTING_EXPORT PrintingContext { // default device settings. virtual Result UseDefaultSettings() = 0; + // Returns paper size to be used for PDF or Cloud Print in device units. + virtual gfx::Size GetPdfPaperSizeDeviceUnits() = 0; + // Updates printer settings. - // |target_is_pdf| is true if implementation needs to generate PDF without - // actual printing. In this case implementation may avoid setup of native - // print system. Ex. "save to pdf" or Cloud Print. // |external_preview| is true if pdf is going to be opened in external // preview. Used by MacOS only now to open Preview.app. - virtual Result UpdatePrinterSettings(bool target_is_pdf, - bool external_preview) = 0; + virtual Result UpdatePrinterSettings(bool external_preview) = 0; // Updates Print Settings. |job_settings| contains all print job // settings information. |ranges| has the new page range settings. diff --git a/printing/printing_context_android.h b/printing/printing_context_android.h index 67d68eb..b198e7b 100644 --- a/printing/printing_context_android.h +++ b/printing/printing_context_android.h @@ -37,8 +37,8 @@ class PRINTING_EXPORT PrintingContextAndroid : public PrintingContext { bool has_selection, const PrintSettingsCallback& callback) OVERRIDE; virtual Result UseDefaultSettings() OVERRIDE; - virtual Result UpdatePrinterSettings(bool target_is_pdf, - bool external_preview) OVERRIDE; + virtual gfx::Size GetPdfPaperSizeDeviceUnits() OVERRIDE; + virtual Result UpdatePrinterSettings(bool external_preview) OVERRIDE; virtual Result InitWithSettings(const PrintSettings& settings) OVERRIDE; virtual Result NewDocument(const base::string16& document_name) OVERRIDE; virtual Result NewPage() OVERRIDE; diff --git a/printing/printing_context_gtk.cc b/printing/printing_context_gtk.cc index 6cf0015..d757df7 100644 --- a/printing/printing_context_gtk.cc +++ b/printing/printing_context_gtk.cc @@ -78,8 +78,21 @@ PrintingContext::Result PrintingContextGtk::UseDefaultSettings() { return OK; } +gfx::Size PrintingContextGtk::GetPdfPaperSizeDeviceUnits() { + GtkPageSetup* page_setup = gtk_page_setup_new(); + + gfx::SizeF paper_size( + gtk_page_setup_get_paper_width(page_setup, GTK_UNIT_INCH), + gtk_page_setup_get_paper_height(page_setup, GTK_UNIT_INCH)); + + g_object_unref(page_setup); + + return gfx::Size( + paper_size.width() * settings_.device_units_per_inch(), + paper_size.height() * settings_.device_units_per_inch()); +} + PrintingContext::Result PrintingContextGtk::UpdatePrinterSettings( - bool target_is_pdf, bool external_preview) { DCHECK(!in_print_job_); DCHECK(!external_preview) << "Not implemented"; @@ -89,7 +102,7 @@ PrintingContext::Result PrintingContextGtk::UpdatePrinterSettings( print_dialog_->AddRefToDialog(); } - if (!print_dialog_->UpdateSettings(target_is_pdf, &settings_)) + if (!print_dialog_->UpdateSettings(&settings_)) return OnError(); return OK; diff --git a/printing/printing_context_gtk.h b/printing/printing_context_gtk.h index 1977893..8476bfb 100644 --- a/printing/printing_context_gtk.h +++ b/printing/printing_context_gtk.h @@ -37,9 +37,9 @@ class PRINTING_EXPORT PrintingContextGtk : public PrintingContext { int max_pages, bool has_selection, const PrintSettingsCallback& callback) OVERRIDE; + virtual gfx::Size GetPdfPaperSizeDeviceUnits() OVERRIDE; virtual Result UseDefaultSettings() OVERRIDE; - virtual Result UpdatePrinterSettings(bool target_is_pdf, - bool external_preview) OVERRIDE; + virtual Result UpdatePrinterSettings(bool external_preview) OVERRIDE; virtual Result InitWithSettings(const PrintSettings& settings) OVERRIDE; virtual Result NewDocument(const base::string16& document_name) OVERRIDE; virtual Result NewPage() OVERRIDE; diff --git a/printing/printing_context_mac.h b/printing/printing_context_mac.h index 8e7e510..9257510 100644 --- a/printing/printing_context_mac.h +++ b/printing/printing_context_mac.h @@ -31,8 +31,8 @@ class PRINTING_EXPORT PrintingContextMac : public PrintingContext { bool has_selection, const PrintSettingsCallback& callback) OVERRIDE; virtual Result UseDefaultSettings() OVERRIDE; - virtual Result UpdatePrinterSettings(bool target_is_pdf, - bool external_preview) OVERRIDE; + virtual gfx::Size GetPdfPaperSizeDeviceUnits() OVERRIDE; + virtual Result UpdatePrinterSettings(bool external_preview) OVERRIDE; virtual Result InitWithSettings(const PrintSettings& settings) OVERRIDE; virtual Result NewDocument(const base::string16& document_name) OVERRIDE; virtual Result NewPage() OVERRIDE; diff --git a/printing/printing_context_mac.mm b/printing/printing_context_mac.mm index 9ed31dd..d91ce6f 100644 --- a/printing/printing_context_mac.mm +++ b/printing/printing_context_mac.mm @@ -18,6 +18,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/values.h" #include "printing/print_settings_initializer_mac.h" +#include "printing/units.h" namespace printing { @@ -106,6 +107,25 @@ void PrintingContextMac::AskUserForSettings( } } +gfx::Size PrintingContextMac::GetPdfPaperSizeDeviceUnits() { + // NOTE: Reset |print_info_| with a copy of |sharedPrintInfo| so as to start + // with a clean slate. + print_info_.reset([[NSPrintInfo sharedPrintInfo] copy]); + UpdatePageFormatWithPaperInfo(); + + PMPageFormat page_format = + static_cast([print_info_.get() PMPageFormat]); + PMRect paper_rect; + PMGetAdjustedPaperRect(page_format, &paper_rect); + + // Device units are in points. Units per inch is 72. + gfx::Size physical_size_device_units( + (paper_rect.right - paper_rect.left), + (paper_rect.bottom - paper_rect.top)); + DCHECK(settings_.device_units_per_inch() == kPointsPerInch); + return physical_size_device_units; +} + PrintingContext::Result PrintingContextMac::UseDefaultSettings() { DCHECK(!in_print_job_); @@ -117,7 +137,6 @@ PrintingContext::Result PrintingContextMac::UseDefaultSettings() { } PrintingContext::Result PrintingContextMac::UpdatePrinterSettings( - bool target_is_pdf, bool external_preview) { DCHECK(!in_print_job_); @@ -125,7 +144,11 @@ PrintingContext::Result PrintingContextMac::UpdatePrinterSettings( // with a clean slate. print_info_.reset([[NSPrintInfo sharedPrintInfo] copy]); - if (!target_is_pdf) { + if (external_preview) { + if (!SetPrintPreviewJob()) + return OnError(); + } else { + // Don't need this for preview. if (!SetPrinter(UTF16ToUTF8(settings_.device_name())) || !SetCopiesInPrintSettings(settings_.copies()) || !SetCollateInPrintSettings(settings_.collate()) || @@ -135,8 +158,7 @@ PrintingContext::Result PrintingContextMac::UpdatePrinterSettings( } } - if ((external_preview && !SetPrintPreviewJob()) || - !UpdatePageFormatWithPaperInfo() || + if (!UpdatePageFormatWithPaperInfo() || !SetOrientationIsLandscape(settings_.landscape())) { return OnError(); } diff --git a/printing/printing_context_no_system_dialog.cc b/printing/printing_context_no_system_dialog.cc index 869620f..4768e4d 100644 --- a/printing/printing_context_no_system_dialog.cc +++ b/printing/printing_context_no_system_dialog.cc @@ -41,13 +41,16 @@ PrintingContext::Result PrintingContextNoSystemDialog::UseDefaultSettings() { DCHECK(!in_print_job_); ResetSettings(); - // TODO(abodenha): Fetch these settings from the OS where possible. See - // bug 102583. - // TODO(sanjeevr): We need a better feedback loop between the cloud print - // dialog and this code. - int dpi = 300; - gfx::Size physical_size_device_units; - gfx::Rect printable_area_device_units; + settings_.set_dpi(kDefaultPdfDpi); + gfx::Size physical_size = GetPdfPaperSizeDeviceUnits(); + // Assume full page is printable for now. + gfx::Rect printable_area(0, 0, physical_size.width(), physical_size.height()); + DCHECK_EQ(settings_.device_units_per_inch(), kDefaultPdfDpi); + settings_.SetPrinterPrintableArea(physical_size, printable_area, true); + return OK; +} + +gfx::Size PrintingContextNoSystemDialog::GetPdfPaperSizeDeviceUnits() { int32_t width = 0; int32_t height = 0; UErrorCode error = U_ZERO_ERROR; @@ -56,30 +59,22 @@ PrintingContext::Result PrintingContextNoSystemDialog::UseDefaultSettings() { // If the call failed, assume a paper size of 8.5 x 11 inches. LOG(WARNING) << "ulocdata_getPaperSize failed, using 8.5 x 11, error: " << error; - width = static_cast(8.5 * dpi); - height = static_cast(11 * dpi); + width = static_cast( + kLetterWidthInch * settings_.device_units_per_inch()); + height = static_cast( + kLetterHeightInch * settings_.device_units_per_inch()); } else { // ulocdata_getPaperSize returns the width and height in mm. // Convert this to pixels based on the dpi. - width = static_cast(ConvertUnitDouble(width, 25.4, 1.0) * dpi); - height = static_cast(ConvertUnitDouble(height, 25.4, 1.0) * dpi); + float multiplier = 100 * settings_.device_units_per_inch(); + multiplier /= kHundrethsMMPerInch; + width *= multiplier; + height *= multiplier; } - - physical_size_device_units.SetSize(width, height); - - // Assume full page is printable for now. - printable_area_device_units.SetRect(0, 0, width, height); - - settings_.set_dpi(dpi); - settings_.SetPrinterPrintableArea(physical_size_device_units, - printable_area_device_units, - dpi, true); - - return OK; + return gfx::Size(width, height); } PrintingContext::Result PrintingContextNoSystemDialog::UpdatePrinterSettings( - bool target_is_pdf, bool external_preview) { if (settings_.dpi() == 0) diff --git a/printing/printing_context_no_system_dialog.h b/printing/printing_context_no_system_dialog.h index f45fb46..5472a81 100644 --- a/printing/printing_context_no_system_dialog.h +++ b/printing/printing_context_no_system_dialog.h @@ -27,8 +27,8 @@ class PRINTING_EXPORT PrintingContextNoSystemDialog : public PrintingContext { bool has_selection, const PrintSettingsCallback& callback) OVERRIDE; virtual Result UseDefaultSettings() OVERRIDE; - virtual Result UpdatePrinterSettings(bool target_is_pdf, - bool external_preview) OVERRIDE; + virtual gfx::Size GetPdfPaperSizeDeviceUnits() OVERRIDE; + virtual Result UpdatePrinterSettings(bool external_preview) OVERRIDE; virtual Result InitWithSettings(const PrintSettings& settings) OVERRIDE; virtual Result NewDocument(const base::string16& document_name) OVERRIDE; virtual Result NewPage() OVERRIDE; diff --git a/printing/printing_context_win.cc b/printing/printing_context_win.cc index 9de7cdb..76d96bf 100644 --- a/printing/printing_context_win.cc +++ b/printing/printing_context_win.cc @@ -36,21 +36,6 @@ using base::Time; namespace { -// Constants for setting default PDF settings. -const int kPDFDpi = 300; // 300 dpi -// LETTER: 8.5 x 11 inches -const int kPDFLetterWidth = 8.5 * kPDFDpi; -const int kPDFLetterHeight = 11 * kPDFDpi; -// LEGAL: 8.5 x 14 inches -const int kPDFLegalWidth = 8.5 * kPDFDpi; -const int kPDFLegalHeight = 14 * kPDFDpi; -// A4: 8.27 x 11.69 inches -const int kPDFA4Width = 8.27 * kPDFDpi; -const int kPDFA4Height = 11.69 * kPDFDpi; -// A3: 11.69 x 16.54 inches -const int kPDFA3Width = 11.69 * kPDFDpi; -const int kPDFA3Height = 16.54 * kPDFDpi; - HWND GetRootWindow(gfx::NativeView view) { HWND window = NULL; #if defined(USE_AURA) @@ -307,45 +292,41 @@ PrintingContext::Result PrintingContextWin::UseDefaultSettings() { return FAILED; } +gfx::Size PrintingContextWin::GetPdfPaperSizeDeviceUnits() { + // Default fallback to Letter size. + gfx::SizeF paper_size(kLetterWidthInch, kLetterHeightInch); + + // Get settings from locale. Paper type buffer length is at most 4. + const int paper_type_buffer_len = 4; + wchar_t paper_type_buffer[paper_type_buffer_len] = {0}; + GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_IPAPERSIZE, paper_type_buffer, + paper_type_buffer_len); + if (wcslen(paper_type_buffer)) { // The call succeeded. + int paper_code = _wtoi(paper_type_buffer); + switch (paper_code) { + case DMPAPER_LEGAL: + paper_size.SetSize(kLegalWidthInch, kLegalHeightInch); + break; + case DMPAPER_A4: + paper_size.SetSize(kA4WidthInch, kA4HeightInch); + break; + case DMPAPER_A3: + paper_size.SetSize(kA3WidthInch, kA3HeightInch); + break; + default: // DMPAPER_LETTER is used for default fallback. + break; + } + } + return gfx::Size( + paper_size.width() * settings_.device_units_per_inch(), + paper_size.height() * settings_.device_units_per_inch()); +} + PrintingContext::Result PrintingContextWin::UpdatePrinterSettings( - bool target_is_pdf, bool external_preview) { DCHECK(!in_print_job_); DCHECK(!external_preview) << "Not implemented"; - if (target_is_pdf) { - // Default fallback to Letter size. - gfx::Size paper_size; - gfx::Rect paper_rect; - paper_size.SetSize(kPDFLetterWidth, kPDFLetterHeight); - - // Get settings from locale. Paper type buffer length is at most 4. - const int paper_type_buffer_len = 4; - wchar_t paper_type_buffer[paper_type_buffer_len] = {0}; - GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_IPAPERSIZE, paper_type_buffer, - paper_type_buffer_len); - if (wcslen(paper_type_buffer)) { // The call succeeded. - int paper_code = _wtoi(paper_type_buffer); - switch (paper_code) { - case DMPAPER_LEGAL: - paper_size.SetSize(kPDFLegalWidth, kPDFLegalHeight); - break; - case DMPAPER_A4: - paper_size.SetSize(kPDFA4Width, kPDFA4Height); - break; - case DMPAPER_A3: - paper_size.SetSize(kPDFA3Width, kPDFA3Height); - break; - default: // DMPAPER_LETTER is used for default fallback. - break; - } - } - paper_rect.SetRect(0, 0, paper_size.width(), paper_size.height()); - settings_.SetPrinterPrintableArea(paper_size, paper_rect, kPDFDpi, true); - settings_.set_dpi(kPDFDpi); - return OK; - } - ScopedPrinterHandle printer; LPWSTR device_name_wide = const_cast(settings_.device_name().c_str()); diff --git a/printing/printing_context_win.h b/printing/printing_context_win.h index 37e5b04..3be4917 100644 --- a/printing/printing_context_win.h +++ b/printing/printing_context_win.h @@ -32,8 +32,8 @@ class PRINTING_EXPORT PrintingContextWin bool has_selection, const PrintSettingsCallback& callback) OVERRIDE; virtual Result UseDefaultSettings() OVERRIDE; - virtual Result UpdatePrinterSettings(bool target_is_pdf, - bool external_preview) OVERRIDE; + virtual gfx::Size GetPdfPaperSizeDeviceUnits() OVERRIDE; + virtual Result UpdatePrinterSettings(bool external_preview) OVERRIDE; virtual Result InitWithSettings(const PrintSettings& settings) OVERRIDE; virtual Result NewDocument(const base::string16& document_name) OVERRIDE; virtual Result NewPage() OVERRIDE; diff --git a/printing/units.h b/printing/units.h index 8f02832..0e6cfd2 100644 --- a/printing/units.h +++ b/printing/units.h @@ -9,7 +9,7 @@ namespace printing { -// Length of a thousanth of inches in 0.01mm unit. +// Length of a thousandth of inches in 0.01mm unit. const int kHundrethsMMPerInch = 2540; // Length of an inch in CSS's 1pt unit. @@ -20,6 +20,25 @@ const int kPointsPerInch = 72; // http://dev.w3.org/csswg/css3-values/#the-px-unit const int kPixelsPerInch = 96; +// Dpi used to save to PDF or Cloud Print. +const int kDefaultPdfDpi = 300; + +// LETTER: 8.5 x 11 inches +const float kLetterWidthInch = 8.5f; +const float kLetterHeightInch = 11.0f; + +// LEGAL: 8.5 x 14 inches +const float kLegalWidthInch = 8.5f; +const float kLegalHeightInch = 14.0f; + +// A4: 8.27 x 11.69 inches +const float kA4WidthInch = 8.27f; +const float kA4HeightInch = 11.69f; + +// A3: 11.69 x 16.54 inches +const float kA3WidthInch = 11.69f; +const float kA3HeightInch = 16.54f; + // Converts from one unit system to another using integer arithmetics. PRINTING_EXPORT int ConvertUnit(int value, int old_unit, int new_unit); -- cgit v1.1