| // Copyright 2023 The PDFium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SAMPLES_HELPERS_PAGE_RENDERER_H_ |
| #define SAMPLES_HELPERS_PAGE_RENDERER_H_ |
| |
| #include <string> |
| |
| #include "public/fpdfview.h" |
| |
| // Renderer for a single page. |
| class PageRenderer { |
| public: |
| virtual ~PageRenderer(); |
| |
| // Returns `true` if the rendered output exists. Must call `Finish()` first. |
| virtual bool HasOutput() const = 0; |
| |
| // Starts rendering the page, returning `false` on failure. |
| virtual bool Start() = 0; |
| |
| // Continues rendering the page, returning `false` when complete. |
| virtual bool Continue(); |
| |
| // Finishes rendering the page. |
| virtual void Finish(FPDF_FORMHANDLE form) = 0; |
| |
| // Writes rendered output to a file, returning `false` on failure. |
| virtual bool Write(const std::string& name, int page_index, bool md5) = 0; |
| |
| protected: |
| PageRenderer(FPDF_PAGE page, int width, int height, int flags); |
| |
| FPDF_PAGE page() { return page_; } |
| int width() const { return width_; } |
| int height() const { return height_; } |
| int flags() const { return flags_; } |
| |
| private: |
| FPDF_PAGE page_; |
| int width_; |
| int height_; |
| int flags_; |
| }; |
| |
| #endif // SAMPLES_HELPERS_PAGE_RENDERER_H_ |