diff options
Diffstat (limited to 'printing')
-rw-r--r-- | printing/pdf_ps_metafile_cairo.cc | 13 | ||||
-rw-r--r-- | printing/pdf_ps_metafile_cairo.h | 7 | ||||
-rw-r--r-- | printing/units.cc | 8 | ||||
-rw-r--r-- | printing/units.h | 14 | ||||
-rw-r--r-- | printing/units_unittest.cc | 8 |
5 files changed, 43 insertions, 7 deletions
diff --git a/printing/pdf_ps_metafile_cairo.cc b/printing/pdf_ps_metafile_cairo.cc index b87992f..96b72c5 100644 --- a/printing/pdf_ps_metafile_cairo.cc +++ b/printing/pdf_ps_metafile_cairo.cc @@ -14,17 +14,11 @@ #include "base/file_descriptor_posix.h" #include "base/file_util.h" #include "base/logging.h" +#include "printing/units.h" #include "skia/ext/vector_platform_device_linux.h" namespace { -// The hardcoded margins, in points. These values are based on 72 dpi, -// with approximately 0.25 margins on top, left, and right, and 0.56 on bottom. -const double kTopMargin = 0.25 * 72.0; -const double kBottomMargin = 0.56 * 72.0; -const double kLeftMargin = 0.25 * 72.0; -const double kRightMargin = 0.25 * 72.0; - // Tests if |surface| is valid. bool IsSurfaceValid(cairo_surface_t* surface) { return cairo_surface_status(surface) == CAIRO_STATUS_SUCCESS; @@ -249,4 +243,9 @@ void PdfPsMetafile::CleanUpAll() { skia::VectorPlatformDevice::ClearFontCache(); } +const double PdfPsMetafile::kTopMargin = 0.25 * printing::kPointsPerInch; +const double PdfPsMetafile::kBottomMargin = 0.56 * printing::kPointsPerInch; +const double PdfPsMetafile::kLeftMargin = 0.25 * printing::kPointsPerInch; +const double PdfPsMetafile::kRightMargin = 0.25 * printing::kPointsPerInch; + } // namespace printing diff --git a/printing/pdf_ps_metafile_cairo.h b/printing/pdf_ps_metafile_cairo.h index a5ea5be..8027188 100644 --- a/printing/pdf_ps_metafile_cairo.h +++ b/printing/pdf_ps_metafile_cairo.h @@ -77,6 +77,13 @@ class PdfPsMetafile { // This function should ONLY be called after PDF/PS file is closed. bool SaveTo(const base::FileDescriptor& fd) const; + // The hardcoded margins, in points. These values are based on 72 dpi, + // with 0.25 margins on top, left, and right, and 0.56 on bottom. + static const double kTopMargin; + static const double kRightMargin; + static const double kBottomMargin; + static const double kLeftMargin; + private: // Cleans up all resources. void CleanUpAll(); diff --git a/printing/units.cc b/printing/units.cc index 5f543fe..976fa80 100644 --- a/printing/units.cc +++ b/printing/units.cc @@ -39,4 +39,12 @@ int ConvertHundredThousanthMeterToMilliInch(int cmm) { return ConvertUnit(cmm, 254, 100); } +int ConvertPixelsToPoint(int pixels) { + return ConvertUnit(pixels, kPixelsPerInch, kPointsPerInch); +} + +double ConvertPixelsToPointDouble(double pixels) { + return ConvertUnitDouble(pixels, kPixelsPerInch, kPointsPerInch); +} + } // namespace printing diff --git a/printing/units.h b/printing/units.h index d23e268..cc61241 100644 --- a/printing/units.h +++ b/printing/units.h @@ -10,6 +10,14 @@ namespace printing { // Length of a thousanth of inches in 0.01mm unit. const int kHundrethsMMPerInch = 2540; +// Length of an inch in CSS's 1pt unit. +// http://dev.w3.org/csswg/css3-values/#absolute-length-units-cm-mm.-in-pt-pc +const int kPointsPerInch = 72; + +// Length of an inch in CSS's 1px unit. +// http://dev.w3.org/csswg/css3-values/#the-px-unit +const int kPixelsPerInch = 96; + // Converts from one unit system to another using integer arithmetics. int ConvertUnit(int value, int old_unit, int new_unit); @@ -22,6 +30,12 @@ int ConvertMilliInchToHundredThousanthMeter(int milli_inch); // Converts from 0.00001 meter unit to 0.001 inch. int ConvertHundredThousanthMeterToMilliInch(int cmm); +// Converts from 1 pixel to 1 point using integers. +int ConvertPixelsToPoint(int pixels); + +// Converts from 1 pixel to 1 point using doubles. +double ConvertPixelsToPointDouble(double pixels); + } // namespace printing #endif // PRINTING_UNITS_H_ diff --git a/printing/units_unittest.cc b/printing/units_unittest.cc index b2db567..82f9acb 100644 --- a/printing/units_unittest.cc +++ b/printing/units_unittest.cc @@ -50,4 +50,12 @@ TEST(UnitsTest, Convertions) { EXPECT_EQ(-1000, ConvertHundredThousanthMeterToMilliInch(-kHundrethsMMPerInch)); EXPECT_EQ(0, ConvertHundredThousanthMeterToMilliInch(0)); + + EXPECT_EQ(8.25, ConvertPixelsToPointDouble(11.0)); + // Round down. + EXPECT_EQ(8, ConvertPixelsToPoint(11)); + EXPECT_EQ(7.5, ConvertPixelsToPointDouble(10.0)); + // Round up. + EXPECT_EQ(8, ConvertPixelsToPoint(10)); + EXPECT_EQ(0, ConvertPixelsToPoint(0)); } |