diff options
Diffstat (limited to 'printing')
| -rw-r--r-- | printing/emf_win.cc | 7 | ||||
| -rw-r--r-- | printing/emf_win.h | 10 | ||||
| -rw-r--r-- | printing/emf_win_unittest.cc | 4 | ||||
| -rw-r--r-- | printing/native_metafile.h | 28 | ||||
| -rw-r--r-- | printing/pdf_metafile_mac.cc | 7 | ||||
| -rw-r--r-- | printing/pdf_metafile_mac.h | 6 | ||||
| -rw-r--r-- | printing/pdf_ps_metafile_cairo.cc | 14 | ||||
| -rw-r--r-- | printing/pdf_ps_metafile_cairo.h | 12 | ||||
| -rw-r--r-- | printing/pdf_ps_metafile_cairo_unittest.cc | 12 |
9 files changed, 54 insertions, 46 deletions
diff --git a/printing/emf_win.cc b/printing/emf_win.cc index 6fea291..1b57add 100644 --- a/printing/emf_win.cc +++ b/printing/emf_win.cc @@ -13,7 +13,9 @@ #include "ui/gfx/codec/jpeg_codec.h" #include "ui/gfx/codec/png_codec.h" #include "ui/gfx/gdi_util.h" +#include "ui/gfx/point.h" #include "ui/gfx/rect.h" +#include "ui/gfx/size.h" namespace { const int kCustomGdiCommentSignature = 0xdeadbabe; @@ -410,7 +412,10 @@ bool Emf::Record::SafePlayback(const XFORM* base_matrix) const { return res; } -bool Emf::StartPage() { +bool Emf::StartPage(const gfx::Size& /*page_size*/, + const gfx::Point& /*content_origin*/, + const float& scale_factor) { + DCHECK_EQ(scale_factor, 1); DCHECK(hdc_); if (!hdc_) return false; diff --git a/printing/emf_win.h b/printing/emf_win.h index 5150356..d1a5038 100644 --- a/printing/emf_win.h +++ b/printing/emf_win.h @@ -15,7 +15,9 @@ class FilePath; namespace gfx { +class Point; class Rect; +class Size; } namespace printing { @@ -33,7 +35,13 @@ class Emf : public NativeMetafile { virtual bool Init() { return true; } virtual bool InitFromData(const void* src_buffer, uint32 src_buffer_size); - virtual bool StartPage(); + // Inserts a custom GDICOMMENT records indicating StartPage/EndPage calls + // (since StartPage and EndPage do not work in a metafile DC). Only valid + // when hdc_ is non-NULL. |page_size| and |content_origin| are ignored. + // |scale_factor| must be 1.0. + virtual bool StartPage(const gfx::Size& page_size, + const gfx::Point& content_origin, + const float& scale_factor); virtual bool FinishPage(); virtual bool Close(); diff --git a/printing/emf_win_unittest.cc b/printing/emf_win_unittest.cc index 2f4e2ae..a5bd583 100644 --- a/printing/emf_win_unittest.cc +++ b/printing/emf_win_unittest.cc @@ -17,6 +17,8 @@ #include "base/win/scoped_hdc.h" #include "printing/printing_context.h" #include "testing/gtest/include/gtest/gtest.h" +#include "ui/gfx/point.h" +#include "ui/gfx/size.h" namespace { @@ -131,7 +133,7 @@ TEST_F(EmfPrintingTest, PageBreak) { EXPECT_TRUE(emf.context() != NULL); int pages = 3; while (pages) { - EXPECT_TRUE(emf.StartPage()); + EXPECT_TRUE(emf.StartPage(gfx::Size(), gfx::Point(), 1)); ::Rectangle(emf.context(), 10, 10, 190, 190); EXPECT_TRUE(emf.FinishPage()); --pages; diff --git a/printing/native_metafile.h b/printing/native_metafile.h index a076b32..5981bf5 100644 --- a/printing/native_metafile.h +++ b/printing/native_metafile.h @@ -21,9 +21,9 @@ class FilePath; namespace gfx { +class Point; class Rect; class Size; -class Point; } #if defined(OS_CHROMEOS) @@ -50,26 +50,12 @@ class NativeMetafile { // Note: It should only be called from within the browser process. virtual bool InitFromData(const void* src_buffer, uint32 src_buffer_size) = 0; -#if defined(OS_WIN) - // Inserts a custom GDICOMMENT records indicating StartPage/EndPage calls - // (since StartPage and EndPage do not work in a metafile DC). Only valid - // when hdc_ is non-NULL. - virtual bool StartPage() = 0; -#elif defined(OS_MACOSX) - // Prepares a new pdf page at specified |content_origin| with the given - // |page_size| and a |scale_factor| to use for the drawing. - virtual gfx::NativeDrawingContext StartPage(const gfx::Size& page_size, - const gfx::Point& content_origin, - const float& scale_factor) = 0; -#elif defined(OS_POSIX) - // Prepares a new cairo surface/context for rendering a new page. - // The unit is in point (=1/72 in). - // Returns NULL when failed. - virtual gfx::NativeDrawingContext StartPage(const gfx::Size& page_size, - double margin_top_in_points, - double margin_left_in_points) = 0; -#endif - + // Prepares a context for rendering a new page at the specified + // |content_origin| with the given |page_size| and a |scale_factor| to use for + // the drawing. The units are in points (=1/72 in). Returns true on success. + virtual bool StartPage(const gfx::Size& page_size, + const gfx::Point& content_origin, + const float& scale_factor) = 0; // Closes the current page and destroys the context used in rendering that // page. The results of current page will be appended into the underlying diff --git a/printing/pdf_metafile_mac.cc b/printing/pdf_metafile_mac.cc index 6c53de9..031ca21 100644 --- a/printing/pdf_metafile_mac.cc +++ b/printing/pdf_metafile_mac.cc @@ -62,8 +62,9 @@ bool PdfMetafile::InitFromData(const void* src_buffer, uint32 src_buffer_size) { return true; } -CGContextRef PdfMetafile::StartPage(const gfx::Size& page_size, - const gfx::Point& content_origin, const float& scale_factor) { +bool PdfMetafile::StartPage(const gfx::Size& page_size, + const gfx::Point& content_origin, + const float& scale_factor) { DCHECK(context_.get()); DCHECK(!page_is_open_); @@ -82,7 +83,7 @@ CGContextRef PdfMetafile::StartPage(const gfx::Size& page_size, // Move the context to origin. CGContextTranslateCTM(context_, content_origin.x(), content_origin.y()); - return context_.get(); + return context_.get() != NULL; } bool PdfMetafile::FinishPage() { diff --git a/printing/pdf_metafile_mac.h b/printing/pdf_metafile_mac.h index d1dbbef..6641062 100644 --- a/printing/pdf_metafile_mac.h +++ b/printing/pdf_metafile_mac.h @@ -33,9 +33,9 @@ class PdfMetafile : public NativeMetafile { virtual bool Init(); virtual bool InitFromData(const void* src_buffer, uint32 src_buffer_size); - virtual CGContextRef StartPage(const gfx::Size& page_size, - const gfx::Point& content_origin, - const float& scale_factor); + virtual bool StartPage(const gfx::Size& page_size, + const gfx::Point& content_origin, + const float& scale_factor); virtual bool FinishPage(); virtual bool Close(); diff --git a/printing/pdf_ps_metafile_cairo.cc b/printing/pdf_ps_metafile_cairo.cc index cfa89e4..32d882f 100644 --- a/printing/pdf_ps_metafile_cairo.cc +++ b/printing/pdf_ps_metafile_cairo.cc @@ -145,23 +145,25 @@ bool PdfPsMetafile::SetRawData(const void* src_buffer, return true; } -cairo_t* PdfPsMetafile::StartPage(const gfx::Size& page_size, - double margin_top_in_points, - double margin_left_in_points) { +bool PdfPsMetafile::StartPage(const gfx::Size& page_size, + const gfx::Point& content_origin, + const float& scale_factor) { DCHECK(IsSurfaceValid(surface_)); DCHECK(IsContextValid(context_)); // Passing this check implies page_surface_ is NULL, and current_page_ is // empty. DCHECK_GT(page_size.width(), 0); DCHECK_GT(page_size.height(), 0); + // |scale_factor| is not supported yet. + DCHECK_EQ(scale_factor, 1); // Don't let WebKit draw over the margins. cairo_surface_set_device_offset(surface_, - margin_left_in_points, - margin_top_in_points); + content_origin.x(), + content_origin.y()); cairo_pdf_surface_set_size(surface_, page_size.width(), page_size.height()); - return context_; + return context_ != NULL; } bool PdfPsMetafile::FinishPage() { diff --git a/printing/pdf_ps_metafile_cairo.h b/printing/pdf_ps_metafile_cairo.h index 1294862..d3d3824 100644 --- a/printing/pdf_ps_metafile_cairo.h +++ b/printing/pdf_ps_metafile_cairo.h @@ -11,6 +11,12 @@ #include "base/gtest_prod_util.h" #include "printing/native_metafile.h" +namespace gfx { +class Point; +class Rect; +class Size; +} + typedef struct _cairo_surface cairo_surface_t; namespace printing { @@ -25,9 +31,9 @@ class PdfPsMetafile : public NativeMetafile { virtual bool Init(); virtual bool InitFromData(const void* src_buffer, uint32 src_buffer_size); - virtual cairo_t* StartPage(const gfx::Size& page_size, - double margin_top_in_points, - double margin_left_in_points); + virtual bool StartPage(const gfx::Size& page_size, + const gfx::Point& content_origin, + const float& scale_factor); virtual bool FinishPage(); virtual bool Close(); diff --git a/printing/pdf_ps_metafile_cairo_unittest.cc b/printing/pdf_ps_metafile_cairo_unittest.cc index e180538..d4f2090 100644 --- a/printing/pdf_ps_metafile_cairo_unittest.cc +++ b/printing/pdf_ps_metafile_cairo_unittest.cc @@ -14,6 +14,7 @@ #include "base/string_util.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/gfx/size.h" +#include "ui/gfx/point.h" typedef struct _cairo cairo_t; @@ -31,15 +32,13 @@ TEST_F(PdfPsTest, Pdf) { EXPECT_TRUE(pdf.Init()); // Renders page 1. - cairo_t* context = pdf.StartPage(gfx::Size(72 + 2 + 4, 72 + 1 + 3), 1, 4); - EXPECT_TRUE(context != NULL); - EXPECT_EQ(printing::PdfPsMetafile::FromCairoContext(context), &pdf); + EXPECT_TRUE(pdf.StartPage(gfx::Size(72, 73), gfx::Point(4, 5), 1)); + EXPECT_EQ(printing::PdfPsMetafile::FromCairoContext(pdf.context()), &pdf); // In theory, we should use Cairo to draw something on |context|. EXPECT_TRUE(pdf.FinishPage()); // Renders page 2. - context = pdf.StartPage(gfx::Size(64 + 2 + 4, 64 + 1 + 3), 1, 4); - EXPECT_TRUE(context != NULL); + EXPECT_TRUE(pdf.StartPage(gfx::Size(72, 73), gfx::Point(4, 5), 1)); // In theory, we should use Cairo to draw something on |context|. EXPECT_TRUE(pdf.FinishPage()); @@ -72,8 +71,7 @@ TEST_F(PdfPsTest, Pdf) { // Test overriding the metafile with raw data. printing::PdfPsMetafile pdf3; EXPECT_TRUE(pdf3.Init()); - context = pdf3.StartPage(gfx::Size(72 + 2 + 4, 72 + 1 + 3), 1, 4); - EXPECT_TRUE(context != NULL); + EXPECT_TRUE(pdf3.StartPage(gfx::Size(72, 73), gfx::Point(4, 5), 1)); std::string test_raw_data = "Dummy PDF"; EXPECT_TRUE(pdf3.SetRawData(test_raw_data.c_str(), test_raw_data.size())); EXPECT_TRUE(pdf3.FinishPage()); |
