xref: /aosp_15_r20/external/pdfium/samples/helpers/page_renderer.h (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
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