summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfRenderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfRenderer.h')
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfRenderer.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfRenderer.h b/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfRenderer.h
new file mode 100644
index 00000000000..9fc1ff7c6b3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfRenderer.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+
+#ifndef SkPdfRenderer_DEFINED
+#define SkPdfRenderer_DEFINED
+
+#include "SkTypes.h"
+
+class SkBitmap;
+class SkCanvas;
+class SkPdfNativeDoc;
+struct SkRect;
+class SkStream;
+
+// What kind of content to render.
+// FIXME: Currently unused.
+enum SkPdfContent {
+ kNoForms_SkPdfContent,
+ kAll_SkPdfContent,
+};
+
+/** \class SkPdfRenderer
+ *
+ * The SkPdfRenderer class is used to render a PDF into canvas.
+ *
+ */
+class SkPdfRenderer : SkNoncopyable {
+public:
+ // Create a new renderer from a stream.
+ // TODO(edisonn): replace it with a SkSmartStream which would know to to efficiently
+ // deal with a HTTP stream.
+ // FIXME: Untested.
+ static SkPdfRenderer* CreateFromStream(SkStream*);
+ // Create a new renderer from a file.
+ static SkPdfRenderer* CreateFromFile(const char* filename);
+
+ ~SkPdfRenderer();
+
+ // Render a specific page into the canvas, in a specific rectangle.
+ bool renderPage(int page, SkCanvas* canvas, const SkRect& dst) const;
+
+ // Returns the number of pages in the loaded pdf.
+ int pages() const;
+
+ // Returns the MediaBox of a page. Can be used by client to crate a canvas.
+ SkRect MediaBox(int page) const;
+
+ // TODO(edisonn): for testing only, probably it should be removed, unless some client wants to
+ // let users know how much memory the PDF needs.
+ size_t bytesUsed() const;
+
+private:
+ // Takes ownership of SkPdfNativeDoc.
+ SkPdfRenderer(SkPdfNativeDoc*);
+ SkPdfNativeDoc* fPdfDoc;
+};
+
+// For testing only, reports stats about rendering, like how many operations failed, or are NYI, ...
+void reportPdfRenderStats();
+
+// Renders a page of a pdf in a bitmap.
+bool SkPDFNativeRenderToBitmap(SkStream* stream,
+ SkBitmap* output,
+ int page = 0,
+ SkPdfContent content = kAll_SkPdfContent,
+ double dpi = 72.0);
+
+// TODO(edisonn): add options to render forms, checkboxes, ...
+// TODO(edisonn): Add API for Forms viewing and editing
+// e.g. SkBitmap getPage(int page);
+// int formsCount();
+// SkForm getForm(int formID); // SkForm(SkRect, .. other data)
+// TODO (edisonn): Add intend when loading pdf, for example: for viewing, for parsing content, ...
+
+#endif // SkPdfRenderer_DEFINED