4.3.1. undulate.renderers.cairorenderer module

cairorenderer.py use the logic of renderer.py to render waveforms into scalable vector graphics format

class undulate.renderers.cairorenderer.CairoRenderer(**kwargs)

Bases: undulate.renderers.renderer.Renderer

Render the wavelanes as an svg, png, eps, ps, or pdf by using the pycairo module

Note

make sure pycairo is installed to use this renderer Not knowing how to install it ? Please refer to the Installation section

group(callback, identifier: str, **kwargs) str

Group some drawable together

Parameters
  • callback (callable) – function which populate what inside the group

  • identifier (str) – unique id for the group

path(vertices: List[undulate.bricks.generic.Point], **kwargs) str

Draw line segments to connect consecutive points of ‘vertices’ to represent common signals

Parameters
  • vertices (List[Point]) – list of points to be connected

  • style_repr (optional str) – css rule, by default ‘path’

arrow(arrow_description: undulate.bricks.generic.ArrowDescription, **kwargs) str

Draw an arrow to represent edge trigger on clock signals or to point something in an annotation.

Parameters
  • arrow_description (ArrowDescription) – position and oriantation

  • style_repr (optional str) – css rule, by default ‘arrow’

polygon(vertices: List[undulate.bricks.generic.Point], **kwargs) str

Draw a closed shape for shaded/colored area

Parameters
  • vertices (List[Point]) – Ordered list of point delimiting the polygon

  • style_repr (optional str) – css rule, by default None

spline(vertices: List[undulate.bricks.generic.SplineSegment], **kwargs) str

Draw a path to represent smooth signals

Parameters
  • vertices (List[SplineSegment]) – list of SVG path operators and arguments

  • style_repr (optional str) – css rule, by default ‘path’

text(x: float, y: float, text: str = '', **kwargs) str

Draw a text at a specific position

Parameters
  • x (float) – x coordinate of the text

  • y (float) – y coordinate of the text

  • text (str) – text to display

  • style_repr (optional str) – css rule, by default ‘text’

translate(x: float, y: float, **kwargs) str

translation function that is inherited for svg and eps

draw(wavelanes: dict, **kwargs) str

Business function calling all others

Parameters
  • wavelanes (dict) – parsed dictionary from the input file

  • filename (str) – file name of the output generated file

  • brick_width (int) – by default 40

  • brick_height (int) – by default 20

  • is_reg (bool) – if True wavelanes given represents a register otherwise it represents a bunch of signals

static adjust_y(index, brick_height: float = 1.0) float

Convert an integer expression the index of the waveform as a y-coordinate in the drawing context

Parameters
  • y (int) – index of the waveform

  • brick_height (float) – height of a brick

Returns

equivalent y-coordinate

annotate(wavelanes: dict, viewport: tuple, **kwargs) str

Draw edges, vertical lines, horizontal lines, global time compression, … or any other shape defined in the annotations section of the input file

Example

{"annotations": [
    {"shape": "||", "x": 3.5},
    {"shape": "-~>", "from": "trigger", "to": "event", "text": "ready"}
]}
Parameters
  • wavelanes (Dict) – global signals representations

  • viewport (Tuple[float, float, float, float]) – the drawable zone (excluding signal names) x, y, width, height

  • edges (Dict) – edge section of the input file

  • annotations (List[Dict]) – annotations section of the input file

  • brick_width (float) – default width of a brick

  • brick_height (float) – default height of a brick

brick(symbol: str, b: undulate.bricks.generic.Brick, **kwargs) str

Draw the symbol of a given Brick element

static from_to_parser(s: object, width: float, height: float, brick_width: float = 40.0, brick_height: float = 20.0) undulate.bricks.generic.Point

Parse the from and to options of annotations into positions for drawing the specified shape or text

Supported format are: - float - Tuple[float, float] - String “float” - String “float unit” where unit is either “” or “%” - String “(float unit, float unit)” where unit is either “” or “%” - String “node_name” - String “node_name + (± float, ± float)”

Parameters
  • s (str) – value of from or to option

  • width (float) – width of the image

  • height (float) – height of the image

  • brick_width (float, default=40) – brick width

  • brick_height (float, default=40) – brick height

Returns

Point of x-y coordinate

size(wavelanes, depth: int = 1, **kwargs)

Pre-estimate the size of the image (duplicate of wavegroup without drawing)

Parameters
  • name (str) – name of the waveform group

  • wavelanes (Dict[str, dict]) – named waveforms composing the group

  • depth (int) – depth of nested groups to represent hierarchy

  • config (Dict[str, Any]) – config section of the input file

  • brick_width (float) – width of a brick, default is 20.0

  • brick_height (float) – height of a brick, default is 20.0

  • width (float) – image width

  • height (float) – image height

Warning

Might be good to implement a parameter no_drawing in wavegroup and performs 2 passes to prevent possible discrepency

ticks(width: int, height: int, step: float, **kwargs) str

Generates the dotted vertical lines to ease reading of waveforms and their respective alignment

Parameters
  • width (int) – width of the image

  • height (int) – height of the image

  • step (float) – distance between two ticks

  • offsetx (optional) – shift all ticks along the x-axis

  • offsety (optional) – shift to the bottom ticks with exceeding the height

  • phase (optional) – phase of the first signal on the top level this parameter is used to align tick with the rising edges of the first signal

wavelane_title(name: str, **kwargs) str

Draw the title in front of a waveform

Parameters
  • name (str) – name of the waveform print alongside

  • order (int) –

    position from 0-4 of the title position along the y-axis. This property is important when overlaying signals

    • 0 : middle of the wavelane height, is the default

    • 1-4 : quarter from top to bottom of the wavelane

  • brick_height (float) – height a brick