summaryrefslogtreecommitdiffstats
path: root/printing/pdf_metafile_mac.h
diff options
context:
space:
mode:
authordpapad@chromium.org <dpapad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-02 19:25:17 +0000
committerdpapad@chromium.org <dpapad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-02 19:25:17 +0000
commit5ad7617cd93b48a67395f532b8483b8ace445ca2 (patch)
treeef6ec65870ccdea737de7e0fdcf1d89e2d887511 /printing/pdf_metafile_mac.h
parentf83773f72845ed180a23dcbbfa9afbc3c295f758 (diff)
downloadchromium_src-5ad7617cd93b48a67395f532b8483b8ace445ca2.zip
chromium_src-5ad7617cd93b48a67395f532b8483b8ace445ca2.tar.gz
chromium_src-5ad7617cd93b48a67395f532b8483b8ace445ca2.tar.bz2
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 Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=76553 Reverted: http://src.chromium.org/viewvc/chrome?view=rev&revision=76555 Review URL: http://codereview.chromium.org/6544028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76581 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing/pdf_metafile_mac.h')
-rw-r--r--printing/pdf_metafile_mac.h45
1 files changed, 26 insertions, 19 deletions
diff --git a/printing/pdf_metafile_mac.h b/printing/pdf_metafile_mac.h
index 557b008..c5669a8 100644
--- a/printing/pdf_metafile_mac.h
+++ b/printing/pdf_metafile_mac.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// 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.
@@ -9,7 +9,9 @@
#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;
@@ -21,36 +23,31 @@ class FilePath;
namespace printing {
// This class creates a graphics context that renders into a PDF data stream.
-class PdfMetafile {
+class PdfMetafile : public NativeMetafile {
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();
- ~PdfMetafile();
+ virtual ~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.
- CGContextRef Init();
+ virtual CGContextRef Init();
// Initializes a copy of metafile from PDF data. Returns true on success.
- bool Init(const void* src_buffer, uint32 src_buffer_size);
+ virtual 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.
- CGContextRef StartPage(const gfx::Size& page_size,
+ virtual CGContextRef StartPage(const gfx::Size& page_size,
const gfx::Point& content_origin,
const float& scale_factor);
// Closes the current page.
- void FinishPage();
+ virtual void FinishPage();
// Closes the PDF file; no further rendering is allowed.
- void Close();
+ virtual void Close();
// Renders the given page into |rect| in the given context.
// Pages use a 1-based index. The rendering uses the following arguments
@@ -67,29 +64,39 @@ class PdfMetafile {
// |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.
- bool RenderPage(unsigned int page_number, CGContextRef context,
+ 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;
- unsigned int GetPageCount() const;
+ virtual unsigned int GetPageCount() const;
// Returns the bounds of the given page.
// Pages use a 1-based index.
- gfx::Rect GetPageBounds(unsigned int page_number) const;
+ virtual gfx::Rect GetPageBounds(unsigned int page_number) const;
// Returns the size of the underlying PDF data. Only valid after Close() has
// been called.
- uint32 GetDataSize() const;
+ virtual 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.
- bool GetData(void* dst_buffer, uint32 dst_buffer_size) const;
+ virtual 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.
- bool SaveTo(const FilePath& file_path) const;
+ 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();
private:
+ friend class NativeMetafileFactory;
+ FRIEND_TEST_ALL_PREFIXES(PdfMetafileTest, Pdf);
+
// Returns a CGPDFDocumentRef version of pdf_data_.
CGPDFDocumentRef GetPDFDocument() const;