Renderer

The renderer translates model nodes into backend draw calls. A concrete renderer (e.g. PDF) dispatches each node type to the appropriate painter.

DocraftAbstractRenderer

Abstract base with a virtual method per node type.

class DocraftAbstractRenderer

Abstract renderer that converts model nodes into backend draw calls.

Concrete renderers (e.g., PDF) implement each node type using painters and the document context’s rendering backend.

Subclassed by docraft::renderer::DocraftPDFRenderer

Public Functions

inline explicit DocraftAbstractRenderer(const std::shared_ptr<DocraftDocumentContext> &docraftContext)

Creates a renderer bound to a document context.

Parameters:

docraftContext – Document context used for backend access.

virtual ~DocraftAbstractRenderer() = default
virtual void render_text(const model::DocraftText &text_node) = 0

Renders a text node.

Parameters:

text_node – Text node.

virtual void render_section(const model::DocraftSection &section_node) = 0

Renders a section node.

Parameters:

section_node – Section node.

virtual void render_image(const model::DocraftImage &image_node) = 0

Renders an image node.

Parameters:

image_node – Image node.

virtual void render_table(const model::DocraftTable &table_node) = 0

Renders a table node.

Parameters:

table_node – Table node.

virtual void render_rectangle(const model::DocraftRectangle &rectangle_node) = 0

Renders a rectangle node.

Parameters:

rectangle_node – Rectangle node.

virtual void render_circle(const model::DocraftCircle &circle_node) = 0

Renders a circle node.

Parameters:

circle_node – Circle node.

virtual void render_triangle(const model::DocraftTriangle &triangle_node) = 0

Renders a triangle node.

Parameters:

triangle_node – Triangle node.

virtual void render_line(const model::DocraftLine &line_node) = 0

Renders a line node.

Parameters:

line_node – Line node.

virtual void render_polygon(const model::DocraftPolygon &polygon_node) = 0

Renders a polygon node.

Parameters:

polygon_node – Polygon node.

virtual void render_blank_line(const model::DocraftBlankLine &blank_line_node) = 0

Renders a blank line node.

Parameters:

blank_line_node – Blank line node.

DocraftPDFRenderer

Concrete renderer targeting the PDF backend.

class DocraftPDFRenderer : public docraft::renderer::DocraftAbstractRenderer

Concrete renderer that targets a PDF backend.

Dispatches each node type to the appropriate painter implementation.

Public Functions

virtual void render_text(const model::DocraftText &text_node) override

Renders a text node to PDF.

Parameters:

text_node – Text node.

virtual void render_section(const model::DocraftSection &section_node) override

Renders a section node to PDF.

Parameters:

section_node – Section node.

virtual void render_image(const model::DocraftImage &image_node) override

Renders an image node to PDF.

Parameters:

image_node – Image node.

virtual void render_table(const model::DocraftTable &table_node) override

Renders a table node to PDF.

Parameters:

table_node – Table node.

virtual void render_rectangle(const model::DocraftRectangle &rectangle_node) override

Renders a rectangle node to PDF.

Parameters:

rectangle_node – Rectangle node.

virtual void render_circle(const model::DocraftCircle &circle_node) override

Renders a circle node to PDF.

Parameters:

circle_node – Circle node.

virtual void render_triangle(const model::DocraftTriangle &triangle_node) override

Renders a triangle node to PDF.

Parameters:

triangle_node – Triangle node.

virtual void render_line(const model::DocraftLine &line_node) override

Renders a line node to PDF.

Parameters:

line_node – Line node.

virtual void render_polygon(const model::DocraftPolygon &polygon_node) override

Renders a polygon node to PDF.

Parameters:

polygon_node – Polygon node.

virtual void render_blank_line(const model::DocraftBlankLine &blank_line_node) override

Renders a blank line node to PDF.

Parameters:

blank_line_node – Blank line node.

inline explicit DocraftAbstractRenderer(const std::shared_ptr<DocraftDocumentContext> &docraftContext)

Creates a renderer bound to a document context.

Parameters:

docraftContext – Document context used for backend access.