pdf2htmlEX/src/BackgroundRenderer/BackgroundRenderer.h

53 lines
1.5 KiB
C
Raw Normal View History

2012-08-06 06:21:37 +00:00
/*
* Background renderer
* Render all those things not supported as Image
*
2013-09-18 10:01:56 +00:00
* Copyright (C) 2012,2013 Lu Wang <coolwanglu@gmail.com>
2012-08-06 06:21:37 +00:00
*/
#ifndef BACKGROUND_RENDERER_H__
#define BACKGROUND_RENDERER_H__
2013-09-18 10:01:56 +00:00
#include <string>
2014-06-27 03:35:00 +00:00
#include <memory>
2012-10-02 12:56:40 +00:00
2013-09-18 10:01:56 +00:00
class PDFDoc;
2014-06-26 13:28:32 +00:00
class GfxState;
2014-06-27 03:35:00 +00:00
class OutputDev;
2012-08-06 06:21:37 +00:00
namespace pdf2htmlEX {
2013-09-18 10:01:56 +00:00
class Param;
class HTMLRenderer;
class BackgroundRenderer
{
public:
// return nullptr upon failure
2014-11-16 14:04:02 +00:00
static std::unique_ptr<BackgroundRenderer> getBackgroundRenderer(const std::string & format, HTMLRenderer * html_renderer, const Param & param);
// Return a fallback bg renderer according to param.bg_format.
// Currently only svg bg format might need a bitmap fallback.
2014-11-16 14:04:02 +00:00
static std::unique_ptr<BackgroundRenderer> getFallbackBackgroundRenderer(HTMLRenderer * html_renderer, const Param & param);
2012-08-06 06:21:37 +00:00
2014-06-27 03:35:00 +00:00
BackgroundRenderer() {}
virtual ~BackgroundRenderer() {}
2012-10-02 12:56:40 +00:00
2013-09-18 10:01:56 +00:00
virtual void init(PDFDoc * doc) = 0;
//return true on success, false otherwise (e.g. need a fallback)
virtual bool render_page(PDFDoc * doc, int pageno) = 0;
2013-09-18 10:01:56 +00:00
virtual void embed_image(int pageno) = 0;
2014-06-26 13:28:32 +00:00
// for proof output
protected:
void proof_begin_text_object(GfxState * state, OutputDev * dev);
2014-06-27 03:35:00 +00:00
void proof_begin_string(GfxState * state, OutputDev * dev);
void proof_end_text_object(GfxState * state, OutputDev * dev);
void proof_update_render(GfxState * state, OutputDev * dev);
2014-06-26 13:28:32 +00:00
private:
2014-06-27 03:35:00 +00:00
std::unique_ptr<GfxState> proof_state;
2013-09-18 10:01:56 +00:00
};
2012-08-06 06:21:37 +00:00
2013-09-18 10:01:56 +00:00
} // namespace pdf2htmlEX
2012-10-02 12:56:40 +00:00
2012-08-06 06:21:37 +00:00
#endif //BACKGROUND_RENDERER_H__