diff options
Diffstat (limited to 'chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfRenderer.h')
-rw-r--r-- | chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfRenderer.h | 80 |
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 |