predraw v0.3.0 /predraw.renderer
On this page

SVG renderer — converts a resolved Scene into an SVG string.

#predraw.renderer

#predraw.renderer

SVG renderer — converts a resolved Scene into an SVG string.

#render_svg

python
def render_svg(scene: Scene) -> str

Render a Scene to an SVG string.

#_stroke_attrs

python
def _stroke_attrs(el: Element, gradient_list: list | None=None) -> str

Build SVG stroke attribute string from element stroke fields.

#_render_element

python
def _render_element(el: Element, scene: Scene, indent: int=2, gradient_list: list | None=None) -> str

Render a single element to SVG string.

#_render_transform

python
def _render_transform(t: Transform) -> str

Convert Transform to SVG transform attribute value.

#_render_text_with_char_styles

python
def _render_text_with_char_styles(el: Element, indent: int=2, gradient_list: list | None=None) -> str

Render text element with per-character tspan styling.

#_render_plain_text

python
def _render_plain_text(el: Element, indent: int=2, gradient_list: list | None=None) -> str

Render a text element without char styles.

#_render_group

python
def _render_group(el: Element, scene: Scene, indent: int=2, gradient_list: list | None=None) -> str

Render a group element with optional transform and children.

#_render_use

python
def _render_use(el: Element, scene: Scene, indent: int=2, gradient_list: list | None=None) -> str

Render a component reference by looking up scene.defs.

#_apply_overrides

python
def _apply_overrides(element: Element, fill: str | Gradient | None, opacity: float) -> None

Recursively apply fill/opacity overrides to an element tree.

  • fill: replaces child fill entirely (if not None)
  • opacity: multiplies with existing child opacity (if != 1.0)

#_match_char_style

python
def _match_char_style(char: str, styles: list[CharStyle]) -> CharStyle | None

Find the first CharStyle whose chars field contains the given character.

#_escape_xml

python
def _escape_xml(text: str) -> str

Escape XML special characters in text content.

#_collect_gradients

python
def _collect_gradients(scene: Scene) -> list[tuple[Gradient, str]]

Walk the scene tree and collect unique Gradient objects, assigning IDs.

Uses dataclass equality to deduplicate gradients (identical gradients share one ID). Returns a list of (Gradient, grad_id) tuples for all unique gradients.

#_render_defs

python
def _render_defs(gradient_list: list[tuple[Gradient, str]]) -> str

Render the SVG block containing all gradient definitions.

#_render_linear_gradient

python
def _render_linear_gradient(grad: Gradient, grad_id: str) -> str

Render a linearGradient SVG element.

#_render_radial_gradient

python
def _render_radial_gradient(grad: Gradient, grad_id: str) -> str

Render a radialGradient SVG element.

#_fill_value

python
def _fill_value(fill, gradient_list: list[tuple[Gradient, str]] | None=None) -> str

Return the SVG fill attribute value: either a color string or url(#id) reference.

Uses equality-based lookup so deep-copied Gradient objects still resolve correctly.

Search