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
|
|
|
|
2012-09-11 13:52:46 +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);
|
2014-06-08 04:43:20 +00:00
|
|
|
// 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;
|
2014-06-08 04:43:20 +00:00
|
|
|
//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:
|
2014-06-27 08:11:42 +00:00
|
|
|
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);
|
2014-06-28 06:55:01 +00:00
|
|
|
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__
|