Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(194)

Unified Diff: printing/pdf_metafile_cg_mac.h

Issue 2802093006: printing::Metafile: Simplify OS_MACOSX-specific code path (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: printing/pdf_metafile_cg_mac.h
diff --git a/printing/pdf_metafile_cg_mac.h b/printing/pdf_metafile_cg_mac.h
index f68ac4fa3a065839df71960b96dd16c9008289f1..1b4b9ef46f79dd462ea65e749bff22114f46cfd3 100644
--- a/printing/pdf_metafile_cg_mac.h
+++ b/printing/pdf_metafile_cg_mac.h
@@ -5,68 +5,51 @@
#ifndef PRINTING_PDF_METAFILE_CG_MAC_H_
#define PRINTING_PDF_METAFILE_CG_MAC_H_
-#include <ApplicationServices/ApplicationServices.h>
-#include <CoreFoundation/CoreFoundation.h>
-#include <stdint.h>
+#include <stddef.h>
-#include "base/mac/scoped_cftyperef.h"
-#include "base/macros.h"
-#include "printing/metafile.h"
+#include "build/build_config.h"
Lei Zhang 2017/04/08 01:24:24 Not needed?
hal.canary 2017/04/11 19:07:27 I reverted most of this file. No longer applicab
+#include "printing/printing_export.h"
-namespace gfx {
-class Rect;
-class Size;
-}
+struct CGRect;
+typedef struct CGContext* CGContextRef;
Lei Zhang 2017/04/08 01:24:24 Can we use "using CGContextRef = struct CGContext*
hal.canary 2017/04/11 19:07:27 I reverted most of this file. No longer applicab
namespace printing {
-// This class creates a graphics context that renders into a PDF data stream.
-class PRINTING_EXPORT PdfMetafileCg : public Metafile {
+class PRINTING_EXPORT PdfMetafileCg {
public:
- PdfMetafileCg();
- ~PdfMetafileCg() override;
-
- // Metafile methods.
- bool Init() override;
- bool InitFromData(const void* src_buffer, size_t src_buffer_size) override;
- void StartPage(const gfx::Size& page_size,
- const gfx::Rect& content_area,
- const float& scale_factor) override;
- bool FinishPage() override;
- bool FinishDocument() override;
-
- uint32_t GetDataSize() const override;
- bool GetData(void* dst_buffer, uint32_t dst_buffer_size) const override;
-
- gfx::Rect GetPageBounds(unsigned int page_number) const override;
- unsigned int GetPageCount() const override;
-
- // 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 context() const override;
-
- bool RenderPage(unsigned int page_number,
- skia::NativeDrawingContext context,
- const CGRect rect,
- const MacRenderPageParams& params) const override;
-
- private:
- // Returns a CGPDFDocumentRef version of |pdf_data_|.
- CGPDFDocumentRef GetPDFDocument() const;
-
- // Context for rendering to the pdf.
- base::ScopedCFTypeRef<CGContextRef> context_;
-
- // PDF backing store.
- base::ScopedCFTypeRef<CFMutableDataRef> pdf_data_;
-
- // Lazily-created CGPDFDocument representation of |pdf_data_|.
- mutable base::ScopedCFTypeRef<CGPDFDocumentRef> pdf_doc_;
-
- // Whether or not a page is currently open.
- bool page_is_open_;
-
- DISALLOW_COPY_AND_ASSIGN(PdfMetafileCg);
+ // |shrink_to_fit| specifies whether the output should be shrunk to fit a
+ // destination page if the source PDF is bigger than the destination page in
+ // any dimension. If this is false, parts of the source PDF page that lie
+ // outside the bounds will be clipped.
+ //
+ // |stretch_to_fit| specifies whether the output should be stretched to fit
+ // the destination page if the source page size is smaller in all dimensions.
+ //
+ // |center_horizontally| specifies whether the output (after any scaling is
+ // done) should be centered horizontally within the destination page.
+ //
+ // |center_vertically| specifies whether the output (after any scaling is
+ // done) should be centered vertically within the destination page.
+ // Note that all scaling preserves the original aspect ratio of the page.
+ //
+ // |autorotate| specifies whether the source PDF should be autorotated to fit
+ // on the destination page.
+ struct RenderPageParams {
+ bool shrink_to_fit = false;
+ bool stretch_to_fit = false;
+ bool center_horizontally = false;
+ bool center_vertically = false;
+ bool autorotate = false;
+ };
+ // Renders the given page from src_buffer into |rect| in the given context.
Lei Zhang 2017/04/08 01:24:24 Refer to |src_buffer| consistently like other vari
hal.canary 2017/04/11 19:07:27 Done.
+ // Pages use a 1-based index. The rendering uses the arguments in
+ // |params| to determine scaling, translation, and rotation.
+ static bool RenderPage(const void* src_buffer,
Lei Zhang 2017/04/08 01:24:24 Change this to take: const std::vector& buffer, si
hal.canary 2017/04/11 19:07:27 Done.
+ size_t src_buffer_size,
+ unsigned int page_number,
+ CGContextRef context,
+ const CGRect rect,
+ const RenderPageParams& params);
};
} // namespace printing

Powered by Google App Engine
This is Rietveld 408576698