summaryrefslogtreecommitdiffstats
path: root/printing
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-02 17:20:21 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-02 17:20:21 +0000
commit7756e5b1e7919fe530ff1ff27503d4893efcee13 (patch)
tree5b7ac359e22bf58e5ae72fbdc57a6b6c92efe285 /printing
parentf3e9d6e12d38ea05e476899eb2620c57d351f74b (diff)
downloadchromium_src-7756e5b1e7919fe530ff1ff27503d4893efcee13.zip
chromium_src-7756e5b1e7919fe530ff1ff27503d4893efcee13.tar.gz
chromium_src-7756e5b1e7919fe530ff1ff27503d4893efcee13.tar.bz2
Revert 76553 - Applying factory pattern (through NativeMetafileFactory class). It is used to retrieve different printing contexts (based on the platform and user preferences).
BUG=NONE TEST=NONE Review URL: http://codereview.chromium.org/6544028 TBR=dpapad@chromium.org Review URL: http://codereview.chromium.org/6594121 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76555 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing')
-rw-r--r--printing/emf_win.h54
-rw-r--r--[-rwxr-xr-x]printing/emf_win_unittest.cc3
-rw-r--r--printing/image.cc11
-rw-r--r--printing/native_metafile.h41
-rw-r--r--printing/native_metafile_factory.cc28
-rw-r--r--printing/native_metafile_factory.h30
-rw-r--r--printing/native_metafile_linux.h81
-rw-r--r--printing/native_metafile_mac.h90
-rw-r--r--printing/native_metafile_win.h103
-rw-r--r--printing/pdf_metafile_mac.h45
-rw-r--r--printing/pdf_metafile_mac_unittest.cc6
-rw-r--r--printing/pdf_ps_metafile_cairo.h41
-rw-r--r--printing/pdf_ps_metafile_cairo_unittest.cc8
-rw-r--r--printing/print_settings_initializer_gtk.cc28
-rw-r--r--printing/printed_document.h2
-rw-r--r--printing/printing.gyp7
-rw-r--r--printing/printing_context_cairo.cc16
17 files changed, 121 insertions, 473 deletions
diff --git a/printing/emf_win.h b/printing/emf_win.h
index ba139d8..f8a0558 100644
--- a/printing/emf_win.h
+++ b/printing/emf_win.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -9,8 +9,6 @@
#include <vector>
#include "base/basictypes.h"
-#include "base/gtest_prod_util.h"
-#include "printing/native_metafile_win.h"
class FilePath;
@@ -21,31 +19,30 @@ class Rect;
namespace printing {
// Simple wrapper class that manage an EMF data stream and its virtual HDC.
-class Emf : public NativeMetafile {
+class Emf {
public:
class Record;
class Enumerator;
struct EnumerationContext;
- virtual ~Emf();
+ Emf();
+ ~Emf();
// Initializes the Emf with the data in |src_buffer|. Returns true on success.
- virtual bool Init(const void* src_buffer, uint32 src_buffer_size);
+ bool Init(const void* src_buffer, uint32 src_buffer_size);
// Generates a virtual HDC that will record every GDI commands and compile it
// in a EMF data stream.
// hdc is used to setup the default DPI and color settings. hdc is optional.
// rect specifies the dimensions (in .01-millimeter units) of the EMF. rect is
// optional.
- virtual bool CreateDc(HDC sibling, const RECT* rect);
+ bool CreateDc(HDC sibling, const RECT* rect);
// Similar to the above method but the metafile is backed by a file.
- virtual bool CreateFileBackedDc(HDC sibling,
- const RECT* rect,
- const FilePath& path);
+ bool CreateFileBackedDc(HDC sibling, const RECT* rect, const FilePath& path);
// Load an EMF file.
- virtual bool CreateFromFile(const FilePath& metafile_path);
+ bool CreateFromFile(const FilePath& metafile_path);
// TODO(maruel): CreateFromFile(). If ever used. Maybe users would like to
// have the ability to save web pages to an EMF file? Afterward, it is easy to
@@ -53,10 +50,10 @@ class Emf : public NativeMetafile {
// Closes the HDC created by CreateDc() and generates the compiled EMF
// data.
- virtual bool CloseDc();
+ bool CloseDc();
// Closes the EMF data handle when it is not needed anymore.
- virtual void CloseEmf();
+ void CloseEmf();
// "Plays" the EMF buffer in a HDC. It is the same effect as calling the
// original GDI function that were called when recording the EMF. |rect| is in
@@ -66,56 +63,47 @@ class Emf : public NativeMetafile {
// functions, whether used directly or indirectly through precompiled EMF
// data. We have to accept the risk here. Since it is used only for printing,
// it requires user intervention.
- virtual bool Playback(HDC hdc, const RECT* rect) const;
+ bool Playback(HDC hdc, const RECT* rect) const;
// The slow version of Playback(). It enumerates all the records and play them
// back in the HDC. The trick is that it skip over the records known to have
// issue with some printers. See Emf::Record::SafePlayback implementation for
// details.
- virtual bool SafePlayback(HDC hdc) const;
+ bool SafePlayback(HDC hdc) const;
// Retrieves the bounds of the painted area by this EMF buffer. This value
// should be passed to Playback to keep the exact same size.
- virtual gfx::Rect GetBounds() const;
+ gfx::Rect GetBounds() const;
// Retrieves the EMF stream size.
- virtual uint32 GetDataSize() const;
+ uint32 GetDataSize() const;
// Retrieves the EMF stream.
- virtual bool GetData(void* buffer, uint32 size) const;
+ bool GetData(void* buffer, uint32 size) const;
// Retrieves the EMF stream. It is an helper function.
- virtual bool GetData(std::vector<uint8>* buffer) const;
+ bool GetData(std::vector<uint8>* buffer) const;
- virtual HENHMETAFILE emf() const {
+ HENHMETAFILE emf() const {
return emf_;
}
- virtual HDC hdc() const {
+ HDC hdc() const {
return hdc_;
}
// 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();
- virtual bool EndPage();
+ bool StartPage();
+ bool EndPage();
// Saves the EMF data to a file as-is. It is recommended to use the .emf file
// extension but it is not enforced. This function synchronously writes to the
// file. For testing only.
- virtual bool SaveTo(const std::wstring& filename) const;
-
- protected:
- Emf();
+ bool SaveTo(const std::wstring& filename) const;
private:
- friend class NativeMetafileFactory;
- FRIEND_TEST_ALL_PREFIXES(EmfTest, DC);
- FRIEND_TEST_ALL_PREFIXES(EmfTest, FileBackedDC);
- FRIEND_TEST_ALL_PREFIXES(EmfPrintingTest, Enumerate);
- FRIEND_TEST_ALL_PREFIXES(EmfPrintingTest, PageBreak);
-
// Playbacks safely one EMF record.
static int CALLBACK SafePlaybackProc(HDC hdc,
HANDLETABLE* handle_table,
diff --git a/printing/emf_win_unittest.cc b/printing/emf_win_unittest.cc
index 9d3aa00..4312b2c 100755..100644
--- a/printing/emf_win_unittest.cc
+++ b/printing/emf_win_unittest.cc
@@ -39,8 +39,6 @@ const uint32 EMF_HEADER_SIZE = 128;
} // namespace
-namespace printing {
-
TEST(EmfTest, DC) {
// Simplest use case.
printing::Emf emf;
@@ -197,4 +195,3 @@ TEST(EmfTest, FileBackedDC) {
emf.CloseEmf();
}
-} // namespace printing
diff --git a/printing/image.cc b/printing/image.cc
index a99e307..1116f32 100644
--- a/printing/image.cc
+++ b/printing/image.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -6,9 +6,7 @@
#include "base/file_util.h"
#include "base/md5.h"
-#include "base/scoped_ptr.h"
#include "base/string_number_conversions.h"
-#include "printing/native_metafile_factory.h"
#include "third_party/skia/include/core/SkColor.h"
#include "ui/gfx/codec/png_codec.h"
@@ -146,10 +144,9 @@ bool Image::LoadPng(const std::string& compressed) {
bool Image::LoadMetafile(const std::string& data) {
DCHECK(!data.empty());
- scoped_ptr<NativeMetafile> metafile(
- printing::NativeMetafileFactory::CreateMetafile());
- metafile->Init(data.data(), data.size());
- return LoadMetafile(*metafile);
+ NativeMetafile metafile;
+ metafile.Init(data.data(), data.size());
+ return LoadMetafile(metafile);
}
} // namespace printing
diff --git a/printing/native_metafile.h b/printing/native_metafile.h
index 7e1d25b..b0f957a 100644
--- a/printing/native_metafile.h
+++ b/printing/native_metafile.h
@@ -1,19 +1,50 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef PRINTING_NATIVE_METAFILE_H_
#define PRINTING_NATIVE_METAFILE_H_
-#include "base/basictypes.h"
#include "build/build_config.h"
+// Define a metafile format for the current platform. We use this platform
+// independent define so we can define interfaces in platform agnostic manner.
+// It is still an outstanding design issue whether we create classes on all
+// platforms that have the same interface as Emf or if we change Emf to support
+// multiple platforms (and rename to NativeMetafile).
+
+
#if defined(OS_WIN)
-#include "printing/native_metafile_win.h"
+
+#include "printing/emf_win.h"
+
+namespace printing {
+
+typedef Emf NativeMetafile;
+
+} // namespace printing
+
#elif defined(OS_MACOSX)
-#include "printing/native_metafile_mac.h"
+
+#include "printing/pdf_metafile_mac.h"
+
+namespace printing {
+
+typedef PdfMetafile NativeMetafile;
+
+} // namespace printing
+
#elif defined(OS_POSIX)
-#include "printing/native_metafile_linux.h"
+
+#include "printing/pdf_ps_metafile_cairo.h"
+
+namespace printing {
+
+typedef PdfPsMetafile NativeMetafile;
+
+} // namespace printing
+
#endif
+
#endif // PRINTING_NATIVE_METAFILE_H_
diff --git a/printing/native_metafile_factory.cc b/printing/native_metafile_factory.cc
deleted file mode 100644
index a41428f..0000000
--- a/printing/native_metafile_factory.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2011 The Chromium 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 "printing/native_metafile_factory.h"
-
-#if defined(OS_WIN)
-#include "printing/emf_win.h"
-#elif defined(OS_MACOSX)
-#include "printing/pdf_metafile_mac.h"
-#elif defined(OS_POSIX)
-#include "printing/pdf_ps_metafile_cairo.h"
-#endif
-
-namespace printing {
-
-// static
-printing::NativeMetafile* NativeMetafileFactory::CreateMetafile() {
-#if defined(OS_WIN)
- return new printing::Emf;
-#elif defined(OS_MACOSX)
- return new printing::PdfMetafile;
-#elif defined(OS_POSIX)
- return new printing::PdfPsMetafile;
-#endif
-}
-
-} // namespace printing
diff --git a/printing/native_metafile_factory.h b/printing/native_metafile_factory.h
deleted file mode 100644
index d1543c7..0000000
--- a/printing/native_metafile_factory.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef PRINTING_NATIVE_METAFILE_FACTORY_H_
-#define PRINTING_NATIVE_METAFILE_FACTORY_H_
-
-#include "base/basictypes.h"
-#include "printing/native_metafile.h"
-
-namespace printing {
-
-// Various printing contexts will be supported in the future (cairo, skia, emf).
-// So this class returns the appropriate context depending on the platform and
-// user preferences.
-// (Note: For the moment there is only one option per platform.)
-class NativeMetafileFactory {
- public:
- // This method returns a pointer to the appropriate NativeMetafile object
- // according to the platform.
- static printing::NativeMetafile* CreateMetafile();
-
- private:
- NativeMetafileFactory();
- DISALLOW_COPY_AND_ASSIGN(NativeMetafileFactory);
-};
-
-} // namespace printing
-
-#endif // PRINTING_NATIVE_METAFILE_FACTORY_H_
diff --git a/printing/native_metafile_linux.h b/printing/native_metafile_linux.h
deleted file mode 100644
index 9fe622b..0000000
--- a/printing/native_metafile_linux.h
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef PRINTING_NATIVE_METAFILE_LINUX_H_
-#define PRINTING_NATIVE_METAFILE_LINUX_H_
-
-#include "base/basictypes.h"
-
-typedef struct _cairo_surface cairo_surface_t;
-typedef struct _cairo cairo_t;
-
-namespace base {
-struct FileDescriptor;
-}
-
-class FilePath;
-
-namespace printing {
-
-// This class is used to generate a PDF stream and to store rendering results
-// in a string buffer.
-class NativeMetafile {
- public:
- virtual ~NativeMetafile() {}
-
- // Initializes to a fresh new metafile. Returns true on success.
- // Note: It should only be called from the renderer process to allocate
- // rendering resources.
- virtual bool Init() = 0;
-
- // Initializes a copy of metafile from PDF stream data.
- // Returns true on success.
- // |src_buffer| should point to the shared memory which stores PDF
- // contents generated in the renderer.
- // Note: It should only be called from the browser process to initialize
- // |data_|.
- virtual bool Init(const void* src_buffer, uint32 src_buffer_size) = 0;
-
- // Sets raw PDF data for the document. This is used when a cairo drawing
- // surface has already been created. This method will cause all subsequent
- // drawing on the surface to be discarded (in Close()). If Init() has not yet
- // been called this method simply calls the second version of Init.
- virtual bool SetRawData(const void* src_buffer, uint32 src_buffer_size) = 0;
-
- // Prepares a new cairo surface/context for rendering a new page.
- // The unit is in point (=1/72 in).
- // Returns NULL when failed.
- virtual cairo_t* StartPage(double width_in_points,
- double height_in_points,
- double margin_top_in_points,
- double margin_right_in_points,
- double margin_bottom_in_points,
- double margin_left_in_points) = 0;
-
- // Destroys the surface and the context used in rendering current page.
- // The results of current page will be appended into buffer |data_|.
- // Returns true on success.
- virtual bool FinishPage() = 0;
-
- // Closes resulting PDF file. No further rendering is allowed.
- virtual void Close() = 0;
-
- // Returns size of PDF contents stored in buffer |data_|.
- // This function should ONLY be called after PDF file is closed.
- virtual uint32 GetDataSize() const = 0;
-
- // Copies PDF contents stored in buffer |data_| into |dst_buffer|.
- // This function should ONLY be called after PDF file is closed.
- // Returns true only when success.
- virtual bool GetData(void* dst_buffer, uint32 dst_buffer_size) const = 0;
-
- // Saves PDF contents stored in buffer |data_| into the file
- // associated with |fd|.
- // This function should ONLY be called after PDF file is closed.
- virtual bool SaveTo(const base::FileDescriptor& fd) const = 0;
-};
-
-} // namespace printing
-
-#endif // PRINTING_NATIVE_METAFILE_LINUX_H_
diff --git a/printing/native_metafile_mac.h b/printing/native_metafile_mac.h
deleted file mode 100644
index 940da50..0000000
--- a/printing/native_metafile_mac.h
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef PRINTING_NATIVE_METAFILE_MAC_H_
-#define PRINTING_NATIVE_METAFILE_MAC_H_
-
-#include <ApplicationServices/ApplicationServices.h>
-#include <CoreFoundation/CoreFoundation.h>
-
-#include "base/basictypes.h"
-#include "base/mac/scoped_cftyperef.h"
-
-namespace gfx {
-class Rect;
-class Size;
-class Point;
-}
-class FilePath;
-
-namespace printing {
-
-// This class creates a graphics context that renders into a PDF data stream.
-class NativeMetafile {
- public:
-
- virtual ~NativeMetafile() {}
-
- // Initializes a new metafile, and returns a drawing context for rendering
- // into the PDF. Returns NULL on failure.
- // Note: The returned context *must not be retained* past Close(). If it is,
- // the data returned from GetData will not be valid PDF data.
- virtual CGContextRef Init() = 0;
-
- // Initializes a copy of metafile from PDF data. Returns true on success.
- virtual bool Init(const void* src_buffer, uint32 src_buffer_size) = 0;
-
- // Prepares a new pdf page at specified |content_origin| with the given
- // |page_size| and a |scale_factor| to use for the drawing.
- virtual CGContextRef StartPage(const gfx::Size& page_size,
- const gfx::Point& content_origin,
- const float& scale_factor) = 0;
-
- // Closes the current page.
- virtual void FinishPage() = 0;
-
- // Closes the PDF file; no further rendering is allowed.
- virtual void Close() = 0;
-
- // Renders the given page into |rect| in the given context.
- // Pages use a 1-based index. The rendering uses the following arguments
- // to determine scaling and translation factors.
- // |shrink_to_fit| specifies whether the output should be shrunk to fit the
- // supplied |rect| if the page size is larger than |rect| in any dimension.
- // If this is false, parts of the PDF page that lie outside the bounds will be
- // clipped.
- // |stretch_to_fit| specifies whether the output should be stretched to fit
- // the supplied bounds if the page size is smaller than |rect| in all
- // dimensions.
- // |center_horizontally| specifies whether the final image (after any scaling
- // is done) should be centered horizontally within the given |rect|.
- // |center_vertically| specifies whether the final image (after any scaling
- // is done) should be centered vertically within the given |rect|.
- // Note that all scaling preserves the original aspect ratio of the page.
- virtual bool RenderPage(unsigned int page_number, CGContextRef context,
- const CGRect rect, bool shrink_to_fit, bool stretch_to_fit,
- bool center_horizontally, bool center_vertically) const = 0;
- virtual unsigned int GetPageCount() const = 0;
-
- // Returns the bounds of the given page.
- // Pages use a 1-based index.
- virtual gfx::Rect GetPageBounds(unsigned int page_number) const = 0;
-
- // Returns the size of the underlying PDF data. Only valid after Close() has
- // been called.
- virtual uint32 GetDataSize() const = 0;
-
- // Copies the first |dst_buffer_size| bytes of the PDF data into |dst_buffer|.
- // Only valid after Close() has been called.
- // Returns true if the copy succeeds.
- virtual bool GetData(void* dst_buffer, uint32 dst_buffer_size) const = 0;
-
- // Saves the raw PDF data to the given file. For testing only.
- // Returns true if writing succeeded.
- virtual bool SaveTo(const FilePath& file_path) const = 0;
-};
-
-} // namespace printing
-
-#endif // PRINTING_NATIVE_METAFILE_MAC_H_
diff --git a/printing/native_metafile_win.h b/printing/native_metafile_win.h
deleted file mode 100644
index fa00121..0000000
--- a/printing/native_metafile_win.h
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef PRINTING_NATIVE_METAFILE_WIN_H_
-#define PRINTING_NATIVE_METAFILE_WIN_H_
-
-#include <windows.h>
-#include <vector>
-
-#include "base/basictypes.h"
-
-class FilePath;
-
-namespace gfx {
-class Rect;
-}
-
-namespace printing {
-
-// Simple wrapper class that manages a data stream and its virtual HDC.
-class NativeMetafile {
- public:
- virtual ~NativeMetafile() {}
-
- // Initializes the data stream with the data in |src_buffer|. Returns
- // true on success.
- virtual bool Init(const void* src_buffer, uint32 src_buffer_size) = 0;
-
- // Generates a virtual HDC that will record every GDI commands and compile it
- // in a EMF data stream.
- // hdc is used to setup the default DPI and color settings. hdc is optional.
- // rect specifies the dimensions (in .01-millimeter units) of the EMF. rect is
- // optional.
- virtual bool CreateDc(HDC sibling, const RECT* rect) = 0;
-
- // Similar to the above method but the metafile is backed by a file.
- virtual bool CreateFileBackedDc(HDC sibling,
- const RECT* rect,
- const FilePath& path) = 0;
-
- // Load a data stream from file.
- virtual bool CreateFromFile(const FilePath& metafile_path) = 0;
-
- // TODO(maruel): CreateFromFile(). If ever used. Maybe users would like to
- // have the ability to save web pages to an EMF file? Afterward, it is easy to
- // convert to PDF.
-
- // Closes the HDC created by CreateDc() and generates the compiled EMF
- // data.
- virtual bool CloseDc() = 0;
-
- // Closes the EMF data handle when it is not needed anymore.
- virtual void CloseEmf() = 0;
-
- // "Plays" the EMF buffer in a HDC. It is the same effect as calling the
- // original GDI function that were called when recording the EMF. |rect| is in
- // "logical units" and is optional. If |rect| is NULL, the natural EMF bounds
- // are used.
- // Note: Windows has been known to have stack buffer overflow in its GDI
- // functions, whether used directly or indirectly through precompiled EMF
- // data. We have to accept the risk here. Since it is used only for printing,
- // it requires user intervention.
- virtual bool Playback(HDC hdc, const RECT* rect) const = 0;
-
- // The slow version of Playback(). It enumerates all the records and play them
- // back in the HDC. The trick is that it skip over the records known to have
- // issue with some printers. See Emf::Record::SafePlayback implementation for
- // details.
- virtual bool SafePlayback(HDC hdc) const = 0;
-
- // Retrieves the bounds of the painted area by this EMF buffer. This value
- // should be passed to Playback to keep the exact same size.
- virtual gfx::Rect GetBounds() const = 0;
-
- // Retrieves the data stream size.
- virtual uint32 GetDataSize() const = 0;
-
- // Retrieves the data stream.
- virtual bool GetData(void* buffer, uint32 size) const = 0;
-
- // Retrieves the data stream. It is an helper function.
- virtual bool GetData(std::vector<uint8>* buffer) const = 0;
-
- virtual HENHMETAFILE emf() const = 0;
-
- virtual HDC hdc() const = 0;
-
- // 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;
- virtual bool EndPage() = 0;
-
- // Saves the EMF data to a file as-is. It is recommended to use the .emf file
- // extension but it is not enforced. This function synchronously writes to the
- // file. For testing only.
- virtual bool SaveTo(const std::wstring& filename) const = 0;
-};
-
-} // namespace printing
-
-#endif // PRINTING_NATIVE_METAFILE_WIN_H_
diff --git a/printing/pdf_metafile_mac.h b/printing/pdf_metafile_mac.h
index c5669a8..557b008 100644
--- a/printing/pdf_metafile_mac.h
+++ b/printing/pdf_metafile_mac.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -9,9 +9,7 @@
#include <CoreFoundation/CoreFoundation.h>
#include "base/basictypes.h"
-#include "base/gtest_prod_util.h"
#include "base/mac/scoped_cftyperef.h"
-#include "printing/native_metafile_mac.h"
namespace gfx {
class Rect;
@@ -23,31 +21,36 @@ class FilePath;
namespace printing {
// This class creates a graphics context that renders into a PDF data stream.
-class PdfMetafile : public NativeMetafile {
+class PdfMetafile {
public:
+ // To create PDF data, callers should also call Init() to set up the
+ // rendering context.
+ // To create a metafile from existing Data, callers should also call
+ // Init(const void*, uint32).
+ PdfMetafile();
- virtual ~PdfMetafile();
+ ~PdfMetafile();
// Initializes a new metafile, and returns a drawing context for rendering
// into the PDF. Returns NULL on failure.
// Note: The returned context *must not be retained* past Close(). If it is,
// the data returned from GetData will not be valid PDF data.
- virtual CGContextRef Init();
+ CGContextRef Init();
// Initializes a copy of metafile from PDF data. Returns true on success.
- virtual bool Init(const void* src_buffer, uint32 src_buffer_size);
+ bool Init(const void* src_buffer, uint32 src_buffer_size);
// Prepares a new pdf page at specified |content_origin| with the given
// |page_size| and a |scale_factor| to use for the drawing.
- virtual CGContextRef StartPage(const gfx::Size& page_size,
+ CGContextRef StartPage(const gfx::Size& page_size,
const gfx::Point& content_origin,
const float& scale_factor);
// Closes the current page.
- virtual void FinishPage();
+ void FinishPage();
// Closes the PDF file; no further rendering is allowed.
- virtual void Close();
+ void Close();
// Renders the given page into |rect| in the given context.
// Pages use a 1-based index. The rendering uses the following arguments
@@ -64,39 +67,29 @@ class PdfMetafile : public NativeMetafile {
// |center_vertically| specifies whether the final image (after any scaling
// is done) should be centered vertically within the given |rect|.
// Note that all scaling preserves the original aspect ratio of the page.
- virtual bool RenderPage(unsigned int page_number, CGContextRef context,
+ bool RenderPage(unsigned int page_number, CGContextRef context,
const CGRect rect, bool shrink_to_fit, bool stretch_to_fit,
bool center_horizontally, bool center_vertically) const;
- virtual unsigned int GetPageCount() const;
+ unsigned int GetPageCount() const;
// Returns the bounds of the given page.
// Pages use a 1-based index.
- virtual gfx::Rect GetPageBounds(unsigned int page_number) const;
+ gfx::Rect GetPageBounds(unsigned int page_number) const;
// Returns the size of the underlying PDF data. Only valid after Close() has
// been called.
- virtual uint32 GetDataSize() const;
+ uint32 GetDataSize() const;
// Copies the first |dst_buffer_size| bytes of the PDF data into |dst_buffer|.
// Only valid after Close() has been called.
// Returns true if the copy succeeds.
- virtual bool GetData(void* dst_buffer, uint32 dst_buffer_size) const;
+ bool GetData(void* dst_buffer, uint32 dst_buffer_size) const;
// Saves the raw PDF data to the given file. For testing only.
// Returns true if writing succeeded.
- virtual bool SaveTo(const FilePath& file_path) const;
-
- protected:
- // To create PDF data, callers should call Init() to set up the rendering
- // context.
- // To create a metafile from existing data, callers should call
- // Init(const void*, uint32).
- PdfMetafile();
+ bool SaveTo(const FilePath& file_path) const;
private:
- friend class NativeMetafileFactory;
- FRIEND_TEST_ALL_PREFIXES(PdfMetafileTest, Pdf);
-
// Returns a CGPDFDocumentRef version of pdf_data_.
CGPDFDocumentRef GetPDFDocument() const;
diff --git a/printing/pdf_metafile_mac_unittest.cc b/printing/pdf_metafile_mac_unittest.cc
index 8b52b06..ec8cd3a 100644
--- a/printing/pdf_metafile_mac_unittest.cc
+++ b/printing/pdf_metafile_mac_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -12,8 +12,6 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/rect.h"
-namespace printing {
-
TEST(PdfMetafileTest, Pdf) {
// Test in-renderer constructor.
printing::PdfMetafile pdf;
@@ -62,5 +60,3 @@ TEST(PdfMetafileTest, Pdf) {
EXPECT_EQ(720, page_size.width());
EXPECT_EQ(540, page_size.height());
}
-
-} // namespace printing
diff --git a/printing/pdf_ps_metafile_cairo.h b/printing/pdf_ps_metafile_cairo.h
index 645a462..7274dd8 100644
--- a/printing/pdf_ps_metafile_cairo.h
+++ b/printing/pdf_ps_metafile_cairo.h
@@ -8,8 +8,6 @@
#include <string>
#include "base/basictypes.h"
-#include "base/gtest_prod_util.h"
-#include "printing/native_metafile_linux.h"
typedef struct _cairo_surface cairo_surface_t;
typedef struct _cairo cairo_t;
@@ -24,58 +22,59 @@ namespace printing {
// This class uses Cairo graphics library to generate PostScript/PDF stream
// and stores rendering results in a string buffer.
-class PdfPsMetafile : public NativeMetafile {
+class PdfPsMetafile {
public:
- virtual ~PdfPsMetafile();
+ PdfPsMetafile();
+ ~PdfPsMetafile();
// Initializes to a fresh new metafile. Returns true on success.
// Note: Only call in the renderer to allocate rendering resources.
- virtual bool Init();
+ bool Init();
// Initializes a copy of metafile from PDF stream data.
// Returns true on success.
// |src_buffer| should point to the shared memory which stores PDF
// contents generated in the renderer.
// Note: Only call in the browser to initialize |data_|.
- virtual bool Init(const void* src_buffer, uint32 src_buffer_size);
+ bool Init(const void* src_buffer, uint32 src_buffer_size);
// Sets raw PDF data for the document. This is used when a cairo drawing
// surface has already been created. This method will cause all subsequent
// drawing on the surface to be discarded (in Close()). If Init() has not yet
// been called this method simply calls the second version of Init.
- virtual bool SetRawData(const void* src_buffer, uint32 src_buffer_size);
+ bool SetRawData(const void* src_buffer, uint32 src_buffer_size);
// Prepares a new cairo surface/context for rendering a new page.
// The unit is in point (=1/72 in).
// Returns NULL when failed.
- virtual cairo_t* StartPage(double width_in_points,
- double height_in_points,
- double margin_top_in_points,
- double margin_right_in_points,
- double margin_bottom_in_points,
- double margin_left_in_points);
+ cairo_t* StartPage(double width_in_points,
+ double height_in_points,
+ double margin_top_in_points,
+ double margin_right_in_points,
+ double margin_bottom_in_points,
+ double margin_left_in_points);
// Destroys the surface and the context used in rendering current page.
// The results of current page will be appended into buffer |data_|.
// Returns true on success.
- virtual bool FinishPage();
+ bool FinishPage();
// Closes resulting PDF file. No further rendering is allowed.
- virtual void Close();
+ void Close();
// Returns size of PDF contents stored in buffer |data_|.
// This function should ONLY be called after PDF file is closed.
- virtual uint32 GetDataSize() const;
+ uint32 GetDataSize() const;
// Copies PDF contents stored in buffer |data_| into |dst_buffer|.
// This function should ONLY be called after PDF file is closed.
// Returns true only when success.
- virtual bool GetData(void* dst_buffer, uint32 dst_buffer_size) const;
+ bool GetData(void* dst_buffer, uint32 dst_buffer_size) const;
// Saves PDF contents stored in buffer |data_| into the file
// associated with |fd|.
// This function should ONLY be called after PDF file is closed.
- virtual bool SaveTo(const base::FileDescriptor& fd) const;
+ 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.
@@ -88,13 +87,7 @@ class PdfPsMetafile : public NativeMetafile {
// if the context was not created by a PdfPsMetafile object.
static PdfPsMetafile* FromCairoContext(cairo_t* context);
- protected:
- PdfPsMetafile();
-
private:
- friend class NativeMetafileFactory;
- FRIEND_TEST_ALL_PREFIXES(PdfPsTest, Pdf);
-
// Cleans up all resources.
void CleanUpAll();
diff --git a/printing/pdf_ps_metafile_cairo_unittest.cc b/printing/pdf_ps_metafile_cairo_unittest.cc
index a3442c8..b7ed449 100644
--- a/printing/pdf_ps_metafile_cairo_unittest.cc
+++ b/printing/pdf_ps_metafile_cairo_unittest.cc
@@ -15,8 +15,6 @@
typedef struct _cairo cairo_t;
-namespace {
-
class PdfPsTest : public testing::Test {
protected:
base::FileDescriptor DevNullFD() {
@@ -24,10 +22,6 @@ class PdfPsTest : public testing::Test {
}
};
-} // namespace
-
-namespace printing {
-
TEST_F(PdfPsTest, Pdf) {
// Tests in-renderer constructor.
printing::PdfPsMetafile pdf;
@@ -87,5 +81,3 @@ TEST_F(PdfPsTest, Pdf) {
pdf3.GetData(WriteInto(&output, size + 1), size);
EXPECT_EQ(test_raw_data, output);
}
-
-} // namespace printing
diff --git a/printing/print_settings_initializer_gtk.cc b/printing/print_settings_initializer_gtk.cc
index 8a62929..60ab530 100644
--- a/printing/print_settings_initializer_gtk.cc
+++ b/printing/print_settings_initializer_gtk.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -9,7 +9,7 @@
#include "base/string_piece.h"
#include "base/utf_string_conversions.h"
-#include "printing/pdf_ps_metafile_cairo.h"
+#include "printing/native_metafile.h"
#include "printing/print_settings.h"
#include "printing/units.h"
@@ -58,19 +58,19 @@ void PrintSettingsInitializerGtk::InitPrintSettings(
double page_width_in_pixel = 8.5 * dpi;
double page_height_in_pixel = 11.0 * dpi;
physical_size_device_units.SetSize(
- static_cast<int>(page_width_in_pixel),
- static_cast<int>(page_height_in_pixel));
+ static_cast<int>(page_width_in_pixel),
+ static_cast<int>(page_height_in_pixel));
printable_area_device_units.SetRect(
- static_cast<int>(
- PdfPsMetafile::kLeftMarginInInch * dpi),
- static_cast<int>(
- PdfPsMetafile::kTopMarginInInch * dpi),
- page_width_in_pixel -
- (PdfPsMetafile::kLeftMarginInInch +
- PdfPsMetafile::kRightMarginInInch) * dpi,
- page_height_in_pixel -
- (PdfPsMetafile::kTopMarginInInch +
- PdfPsMetafile::kBottomMarginInInch) * dpi);
+ static_cast<int>(
+ NativeMetafile::kLeftMarginInInch * dpi),
+ static_cast<int>(
+ NativeMetafile::kTopMarginInInch * dpi),
+ page_width_in_pixel -
+ (NativeMetafile::kLeftMarginInInch +
+ NativeMetafile::kRightMarginInInch) * dpi,
+ page_height_in_pixel -
+ (NativeMetafile::kTopMarginInInch +
+ NativeMetafile::kBottomMarginInInch) * dpi);
}
print_settings->set_dpi(dpi);
diff --git a/printing/printed_document.h b/printing/printed_document.h
index 14e5e8c..f95ddcf 100644
--- a/printing/printed_document.h
+++ b/printing/printed_document.h
@@ -13,6 +13,7 @@
#include "base/synchronization/lock.h"
#include "googleurl/src/gurl.h"
#include "printing/print_settings.h"
+#include "printing/native_metafile.h"
#include "ui/gfx/native_widget_types.h"
class FilePath;
@@ -24,7 +25,6 @@ class Font;
namespace printing {
-class NativeMetafile;
class PrintedPage;
class PrintedPagesSource;
class PrintingContext;
diff --git a/printing/printing.gyp b/printing/printing.gyp
index 9201e69..270306f 100644
--- a/printing/printing.gyp
+++ b/printing/printing.gyp
@@ -1,4 +1,4 @@
-# Copyright (c) 2011 The Chromium Authors. All rights reserved.
+# Copyright (c) 2010 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
@@ -36,11 +36,6 @@
'image_mac.cc',
'image_win.cc',
'image.h',
- 'native_metafile_factory.cc',
- 'native_metafile_factory.h',
- 'native_metafile_linux.h',
- 'native_metafile_mac.h',
- 'native_metafile_win.h',
'native_metafile.h',
'page_number.cc',
'page_number.h',
diff --git a/printing/printing_context_cairo.cc b/printing/printing_context_cairo.cc
index 84aaa64..d0110b1 100644
--- a/printing/printing_context_cairo.cc
+++ b/printing/printing_context_cairo.cc
@@ -9,9 +9,7 @@
#if defined(OS_CHROMEOS)
#include <unicode/ulocdata.h>
-
-#include "printing/native_metafile.h"
-#include "printing/pdf_ps_metafile_cairo.h"
+#include <printing/native_metafile.h>
#else
#include <gtk/gtk.h>
#include <gtk/gtkprintunixdialog.h>
@@ -121,12 +119,12 @@ PrintingContext::Result PrintingContextCairo::UseDefaultSettings() {
physical_size_device_units.SetSize(width, height);
printable_area_device_units.SetRect(
- static_cast<int>(PdfPsMetafile::kLeftMarginInInch * dpi),
- static_cast<int>(PdfPsMetafile::kTopMarginInInch * dpi),
- width - (PdfPsMetafile::kLeftMarginInInch +
- PdfPsMetafile::kRightMarginInInch) * dpi,
- height - (PdfPsMetafile::kTopMarginInInch +
- PdfPsMetafile::kBottomMarginInInch) * dpi);
+ static_cast<int>(NativeMetafile::kLeftMarginInInch * dpi),
+ static_cast<int>(NativeMetafile::kTopMarginInInch * dpi),
+ width - (NativeMetafile::kLeftMarginInInch +
+ NativeMetafile::kRightMarginInInch) * dpi,
+ height - (NativeMetafile::kTopMarginInInch +
+ NativeMetafile::kBottomMarginInInch) * dpi);
settings_.set_dpi(dpi);
settings_.SetPrinterPrintableArea(physical_size_device_units,