blob: 277bd0fd93215033f674c4457b1123e1c1c24888 [file] [log] [blame]
// 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_