1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2023 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker #ifndef SAMPLES_HELPERS_PAGE_RENDERER_H_ 6*3ac0a46fSAndroid Build Coastguard Worker #define SAMPLES_HELPERS_PAGE_RENDERER_H_ 7*3ac0a46fSAndroid Build Coastguard Worker 8*3ac0a46fSAndroid Build Coastguard Worker #include <string> 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include "public/fpdfview.h" 11*3ac0a46fSAndroid Build Coastguard Worker 12*3ac0a46fSAndroid Build Coastguard Worker // Renderer for a single page. 13*3ac0a46fSAndroid Build Coastguard Worker class PageRenderer { 14*3ac0a46fSAndroid Build Coastguard Worker public: 15*3ac0a46fSAndroid Build Coastguard Worker virtual ~PageRenderer(); 16*3ac0a46fSAndroid Build Coastguard Worker 17*3ac0a46fSAndroid Build Coastguard Worker // Returns `true` if the rendered output exists. Must call `Finish()` first. 18*3ac0a46fSAndroid Build Coastguard Worker virtual bool HasOutput() const = 0; 19*3ac0a46fSAndroid Build Coastguard Worker 20*3ac0a46fSAndroid Build Coastguard Worker // Starts rendering the page, returning `false` on failure. 21*3ac0a46fSAndroid Build Coastguard Worker virtual bool Start() = 0; 22*3ac0a46fSAndroid Build Coastguard Worker 23*3ac0a46fSAndroid Build Coastguard Worker // Continues rendering the page, returning `false` when complete. 24*3ac0a46fSAndroid Build Coastguard Worker virtual bool Continue(); 25*3ac0a46fSAndroid Build Coastguard Worker 26*3ac0a46fSAndroid Build Coastguard Worker // Finishes rendering the page. 27*3ac0a46fSAndroid Build Coastguard Worker virtual void Finish(FPDF_FORMHANDLE form) = 0; 28*3ac0a46fSAndroid Build Coastguard Worker 29*3ac0a46fSAndroid Build Coastguard Worker // Writes rendered output to a file, returning `false` on failure. 30*3ac0a46fSAndroid Build Coastguard Worker virtual bool Write(const std::string& name, int page_index, bool md5) = 0; 31*3ac0a46fSAndroid Build Coastguard Worker 32*3ac0a46fSAndroid Build Coastguard Worker protected: 33*3ac0a46fSAndroid Build Coastguard Worker PageRenderer(FPDF_PAGE page, int width, int height, int flags); 34*3ac0a46fSAndroid Build Coastguard Worker page()35*3ac0a46fSAndroid Build Coastguard Worker FPDF_PAGE page() { return page_; } width()36*3ac0a46fSAndroid Build Coastguard Worker int width() const { return width_; } height()37*3ac0a46fSAndroid Build Coastguard Worker int height() const { return height_; } flags()38*3ac0a46fSAndroid Build Coastguard Worker int flags() const { return flags_; } 39*3ac0a46fSAndroid Build Coastguard Worker 40*3ac0a46fSAndroid Build Coastguard Worker private: 41*3ac0a46fSAndroid Build Coastguard Worker FPDF_PAGE page_; 42*3ac0a46fSAndroid Build Coastguard Worker int width_; 43*3ac0a46fSAndroid Build Coastguard Worker int height_; 44*3ac0a46fSAndroid Build Coastguard Worker int flags_; 45*3ac0a46fSAndroid Build Coastguard Worker }; 46*3ac0a46fSAndroid Build Coastguard Worker 47*3ac0a46fSAndroid Build Coastguard Worker #endif // SAMPLES_HELPERS_PAGE_RENDERER_H_ 48