blob: effe69c5e50e10afb218b48b57571a6a573cf236 [file] [log] [blame]
edisonn@google.com222382b2013-07-10 22:33:10 +00001/*
2 * Copyright 2013 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8
edisonn@google.com15b11182013-07-11 14:43:15 +00009#ifndef SkPdfRenderer_DEFINED
10#define SkPdfRenderer_DEFINED
edisonn@google.com222382b2013-07-10 22:33:10 +000011
edisonn@google.com147adb12013-07-24 15:56:19 +000012class SkBitmap;
edisonn@google.com222382b2013-07-10 22:33:10 +000013class SkCanvas;
14class SkNativeParsedPDF;
edisonn@google.com96ba3aa2013-07-28 20:04:35 +000015struct SkRect;
edisonn@google.com147adb12013-07-24 15:56:19 +000016class SkStream;
17
18enum SkPdfContent {
19 kNoForms_SkPdfContent,
20 kAll_SkPdfContent,
21};
edisonn@google.com222382b2013-07-10 22:33:10 +000022
23// TODO(edisonn): move in another file
24class SkPdfRenderer : public SkRefCnt {
25 SkNativeParsedPDF* fPdfDoc;
26public:
27 SkPdfRenderer() : fPdfDoc(NULL) {}
28 virtual ~SkPdfRenderer() {unload();}
29
30 // TODO(edisonn): add options to render forms, or not
edisonn@google.com444e25a2013-07-11 15:20:50 +000031 bool renderPage(int page, SkCanvas* canvas, const SkRect& dst) const;
edisonn@google.com222382b2013-07-10 22:33:10 +000032
33 bool load(const SkString inputFileName);
edisonn@google.com147adb12013-07-24 15:56:19 +000034 bool load(SkStream* stream);
edisonn@google.com222382b2013-07-10 22:33:10 +000035 bool loaded() const {return fPdfDoc != NULL;}
36 int pages() const;
37 void unload();
38 SkRect MediaBox(int page) const;
edisonn@google.com7b328fd2013-07-11 12:53:06 +000039 size_t bytesUsed() const;
edisonn@google.com222382b2013-07-10 22:33:10 +000040};
41
42void reportPdfRenderStats();
43
edisonn@google.com147adb12013-07-24 15:56:19 +000044bool SkPDFNativeRenderToBitmap(SkStream* stream,
45 SkBitmap* output,
46 int page = 0,
47 SkPdfContent content = kAll_SkPdfContent,
48 double dpi = 72.0);
49
edisonn@google.com15b11182013-07-11 14:43:15 +000050#endif // SkPdfRenderer_DEFINED