Avi Drissman | db497b3 | 2022-09-15 19:47:28 | [diff] [blame] | 1 | // Copyright 2011 The Chromium Authors |
license.bot | bf09a50 | 2008-08-24 00:55:55 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 4 | |
maruel@chromium.org | 4ae30d08 | 2009-02-20 17:55:55 | [diff] [blame] | 5 | #ifndef PRINTING_UNITS_H_ |
| 6 | #define PRINTING_UNITS_H_ |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 7 | |
Alan Screen | 9347cae | 2021-04-27 18:11:24 | [diff] [blame] | 8 | #include "base/component_export.h" |
Andy Phan | f864aac | 2023-02-22 00:12:29 | [diff] [blame] | 9 | #include "build/build_config.h" |
darin@chromium.org | 69f5b1e6 | 2011-09-01 06:34:04 | [diff] [blame] | 10 | |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 11 | namespace printing { |
| 12 | |
Lei Zhang | d11ab16 | 2018-06-26 04:28:50 | [diff] [blame] | 13 | // Length of an inch in 0.001mm unit. |
| 14 | constexpr int kMicronsPerInch = 25400; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 15 | |
Andy Phan | 24b783d | 2023-01-04 17:43:45 | [diff] [blame] | 16 | // A micron is a thousandth of a mm. |
| 17 | constexpr int kMicronsPerMm = 1000; |
| 18 | |
Andy Phan | 37fb872 | 2023-02-01 19:22:25 | [diff] [blame] | 19 | // Length of a PWG unit in 0.001mm unit. |
| 20 | constexpr int kMicronsPerPwgUnit = kMicronsPerMm / 100; |
| 21 | |
Vladislav Kuzkokov | e219910 | 2018-02-20 16:25:13 | [diff] [blame] | 22 | // Mil is a thousandth of an inch. |
| 23 | constexpr float kMicronsPerMil = 25.4f; |
| 24 | constexpr int kMilsPerInch = 1000; |
| 25 | |
hamaji@chromium.org | 4ebf5d1 | 2010-06-28 09:46:00 | [diff] [blame] | 26 | // Length of an inch in CSS's 1pt unit. |
| 27 | // http://dev.w3.org/csswg/css3-values/#absolute-length-units-cm-mm.-in-pt-pc |
Daniel Hosseinian | d8f4bc7 | 2019-12-16 20:13:17 | [diff] [blame] | 28 | constexpr int kPointsPerInch = 72; |
hamaji@chromium.org | 4ebf5d1 | 2010-06-28 09:46:00 | [diff] [blame] | 29 | |
| 30 | // Length of an inch in CSS's 1px unit. |
| 31 | // http://dev.w3.org/csswg/css3-values/#the-px-unit |
Daniel Hosseinian | d8f4bc7 | 2019-12-16 20:13:17 | [diff] [blame] | 32 | constexpr int kPixelsPerInch = 96; |
hamaji@chromium.org | 4ebf5d1 | 2010-06-28 09:46:00 | [diff] [blame] | 33 | |
Andy Phan | f864aac | 2023-02-22 00:12:29 | [diff] [blame] | 34 | #if BUILDFLAG(IS_MAC) |
| 35 | constexpr int kDefaultMacDpi = 72; |
| 36 | #endif // BUILDFLAG(IS_MAC) |
| 37 | |
Lei Zhang | 53fefd8 | 2023-06-06 01:24:11 | [diff] [blame] | 38 | // DPI used for Save to PDF. Also used as the default DPI in various use cases |
| 39 | // where there is no specified DPI. |
Daniel Hosseinian | d8f4bc7 | 2019-12-16 20:13:17 | [diff] [blame] | 40 | constexpr int kDefaultPdfDpi = 300; |
vitalybuka@chromium.org | 4c9054b | 2013-11-04 18:34:29 | [diff] [blame] | 41 | |
| 42 | // LETTER: 8.5 x 11 inches |
Daniel Hosseinian | d8f4bc7 | 2019-12-16 20:13:17 | [diff] [blame] | 43 | constexpr float kLetterWidthInch = 8.5f; |
| 44 | constexpr float kLetterHeightInch = 11.0f; |
vitalybuka@chromium.org | 4c9054b | 2013-11-04 18:34:29 | [diff] [blame] | 45 | |
| 46 | // LEGAL: 8.5 x 14 inches |
Daniel Hosseinian | d8f4bc7 | 2019-12-16 20:13:17 | [diff] [blame] | 47 | constexpr float kLegalWidthInch = 8.5f; |
| 48 | constexpr float kLegalHeightInch = 14.0f; |
vitalybuka@chromium.org | 4c9054b | 2013-11-04 18:34:29 | [diff] [blame] | 49 | |
| 50 | // A4: 8.27 x 11.69 inches |
Daniel Hosseinian | d8f4bc7 | 2019-12-16 20:13:17 | [diff] [blame] | 51 | constexpr float kA4WidthInch = 8.27f; |
| 52 | constexpr float kA4HeightInch = 11.69f; |
vitalybuka@chromium.org | 4c9054b | 2013-11-04 18:34:29 | [diff] [blame] | 53 | |
| 54 | // A3: 11.69 x 16.54 inches |
Daniel Hosseinian | d8f4bc7 | 2019-12-16 20:13:17 | [diff] [blame] | 55 | constexpr float kA3WidthInch = 11.69f; |
| 56 | constexpr float kA3HeightInch = 16.54f; |
vitalybuka@chromium.org | 4c9054b | 2013-11-04 18:34:29 | [diff] [blame] | 57 | |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 58 | // Converts from one unit system to another using integer arithmetics. |
Alan Screen | 04f4dfe | 2021-04-29 07:05:25 | [diff] [blame] | 59 | COMPONENT_EXPORT(PRINTING_BASE) |
Xianzhu Wang | 805d745 | 2022-01-19 06:55:33 | [diff] [blame] | 60 | int ConvertUnit(float value, int old_unit, int new_unit); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 61 | |
Xianzhu Wang | 805d745 | 2022-01-19 06:55:33 | [diff] [blame] | 62 | // Converts from one unit system to another using floats. |
Alan Screen | 04f4dfe | 2021-04-29 07:05:25 | [diff] [blame] | 63 | COMPONENT_EXPORT(PRINTING_BASE) |
Xianzhu Wang | 805d745 | 2022-01-19 06:55:33 | [diff] [blame] | 64 | float ConvertUnitFloat(float value, float old_unit, float new_unit); |
aayushkumar@chromium.org | 55b23a0 | 2011-08-17 23:09:36 | [diff] [blame] | 65 | |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 66 | } // namespace printing |
| 67 | |
maruel@chromium.org | 4ae30d08 | 2009-02-20 17:55:55 | [diff] [blame] | 68 | #endif // PRINTING_UNITS_H_ |