blob: e597d00900e18bb7b4c91f6324d4470559b7ee68 [file]
// Copyright 2026 The PDFium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef FPDFSDK_DISPLAY_LIST_RENDERER_H_
#define FPDFSDK_DISPLAY_LIST_RENDERER_H_
#include <memory>
#include <string>
#include "core/fxcrt/unowned_ptr.h"
#include "public/fpdfview.h"
class CFX_RenderDevice;
class CPDF_PageRenderContext;
class DisplayListDeviceDriver;
class DisplayListRenderer {
public:
// Convenience method for one-shot synchronous rendering of a page.
static std::string RenderPage(FPDF_PAGE page,
FPDF_FORMHANDLE form,
int flags);
DisplayListRenderer(FPDF_PAGE page, int width, int height, int flags);
~DisplayListRenderer();
bool Start();
void Finish(FPDF_FORMHANDLE form);
std::string GetDisplayList() const;
private:
FPDF_PAGE const page_;
const int width_;
const int height_;
const int flags_;
std::unique_ptr<CPDF_PageRenderContext> context_; // must outlive `driver_`
std::unique_ptr<CFX_RenderDevice> device_; // must outlive `driver_`
UnownedPtr<DisplayListDeviceDriver> driver_;
};
#endif // FPDFSDK_DISPLAY_LIST_RENDERER_H_