Skip to content

abstract

abstract

Module contains base class Rendering backend for Parser2 based Gerber data structures.

Renderer2

Rendering backend base class for Parser2 based Gerber data structures.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
class Renderer2:
    """Rendering backend base class for Parser2 based Gerber data structures."""

    def __init__(self, hooks: Renderer2HooksABC) -> None:
        self.hooks = hooks

    def render(self, command_buffer: ReadonlyCommandBuffer2) -> ImageRef:
        """Render Gerber structures."""
        for _ in self.render_iter(command_buffer):
            pass

        return self.get_image_ref()

    def get_image_ref(self) -> ImageRef:
        """Get reference to render image."""
        return self.hooks.get_image_ref()

    def render_iter(
        self,
        command_buffer: ReadonlyCommandBuffer2,
    ) -> Generator[Command2, None, None]:
        """Iterate over commands in buffer and render image for each command."""
        self.hooks.init(self, command_buffer)
        for command in command_buffer:
            yield from command.render_iter(self)
        self.hooks.finalize()

render

render(command_buffer: ReadonlyCommandBuffer2) -> ImageRef

Render Gerber structures.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def render(self, command_buffer: ReadonlyCommandBuffer2) -> ImageRef:
    """Render Gerber structures."""
    for _ in self.render_iter(command_buffer):
        pass

    return self.get_image_ref()

get_image_ref

get_image_ref() -> ImageRef

Get reference to render image.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def get_image_ref(self) -> ImageRef:
    """Get reference to render image."""
    return self.hooks.get_image_ref()

render_iter

render_iter(
    command_buffer: ReadonlyCommandBuffer2,
) -> Generator[Command2, None, None]

Iterate over commands in buffer and render image for each command.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def render_iter(
    self,
    command_buffer: ReadonlyCommandBuffer2,
) -> Generator[Command2, None, None]:
    """Iterate over commands in buffer and render image for each command."""
    self.hooks.init(self, command_buffer)
    for command in command_buffer:
        yield from command.render_iter(self)
    self.hooks.finalize()

Renderer2HooksABC

Hooks for implementing rendering of Gerber structures to a target format.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
class Renderer2HooksABC:
    """Hooks for implementing rendering of Gerber structures to a target format."""

    def init(self, renderer: Renderer2, command_buffer: ReadonlyCommandBuffer2) -> None:
        """Initialize rendering."""
        self.renderer = renderer
        self.command_buffer = command_buffer

    def render_line(self, command: Line2) -> None:
        """Render line to target image."""

    def render_arc(self, command: Arc2) -> None:
        """Render arc to target image."""

    def render_cc_arc(self, command: CCArc2) -> None:
        """Render arc to target image."""

    def render_flash_circle(self, command: Flash2, aperture: Circle2) -> None:
        """Render flash circle to target image."""

    def render_flash_no_circle(self, command: Flash2, aperture: NoCircle2) -> None:
        """Render flash no circle aperture to target image."""

    def render_flash_rectangle(self, command: Flash2, aperture: Rectangle2) -> None:
        """Render flash rectangle to target image."""

    def render_flash_obround(self, command: Flash2, aperture: Obround2) -> None:
        """Render flash obround to target image."""

    def render_flash_polygon(self, command: Flash2, aperture: Polygon2) -> None:
        """Render flash polygon to target image."""

    def render_flash_macro(self, command: Flash2, aperture: Macro2) -> None:
        """Render flash macro aperture to target image."""

    def render_buffer(self, command: BufferCommand2) -> Generator[Command2, None, None]:
        """Render buffer command, performing no writes."""
        for cmd in command:
            cmd.render(self.renderer)
            yield cmd

    def render_region(self, command: Region2) -> None:
        """Render region to target image."""

    def get_image_ref(self) -> ImageRef:
        """Get reference to render image."""
        raise NotImplementedError

    def finalize(self) -> None:
        """Finalize rendering."""

init

init(
    renderer: Renderer2,
    command_buffer: ReadonlyCommandBuffer2,
) -> None

Initialize rendering.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def init(self, renderer: Renderer2, command_buffer: ReadonlyCommandBuffer2) -> None:
    """Initialize rendering."""
    self.renderer = renderer
    self.command_buffer = command_buffer

render_line

render_line(command: Line2) -> None

Render line to target image.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def render_line(self, command: Line2) -> None:
    """Render line to target image."""

render_arc

render_arc(command: Arc2) -> None

Render arc to target image.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def render_arc(self, command: Arc2) -> None:
    """Render arc to target image."""

render_cc_arc

render_cc_arc(command: CCArc2) -> None

Render arc to target image.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def render_cc_arc(self, command: CCArc2) -> None:
    """Render arc to target image."""

render_flash_circle

render_flash_circle(
    command: Flash2, aperture: Circle2
) -> None

Render flash circle to target image.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def render_flash_circle(self, command: Flash2, aperture: Circle2) -> None:
    """Render flash circle to target image."""

render_flash_no_circle

render_flash_no_circle(
    command: Flash2, aperture: NoCircle2
) -> None

Render flash no circle aperture to target image.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def render_flash_no_circle(self, command: Flash2, aperture: NoCircle2) -> None:
    """Render flash no circle aperture to target image."""

render_flash_rectangle

render_flash_rectangle(
    command: Flash2, aperture: Rectangle2
) -> None

Render flash rectangle to target image.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def render_flash_rectangle(self, command: Flash2, aperture: Rectangle2) -> None:
    """Render flash rectangle to target image."""

render_flash_obround

render_flash_obround(
    command: Flash2, aperture: Obround2
) -> None

Render flash obround to target image.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def render_flash_obround(self, command: Flash2, aperture: Obround2) -> None:
    """Render flash obround to target image."""

render_flash_polygon

render_flash_polygon(
    command: Flash2, aperture: Polygon2
) -> None

Render flash polygon to target image.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def render_flash_polygon(self, command: Flash2, aperture: Polygon2) -> None:
    """Render flash polygon to target image."""

render_flash_macro

render_flash_macro(
    command: Flash2, aperture: Macro2
) -> None

Render flash macro aperture to target image.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def render_flash_macro(self, command: Flash2, aperture: Macro2) -> None:
    """Render flash macro aperture to target image."""

render_buffer

render_buffer(
    command: BufferCommand2,
) -> Generator[Command2, None, None]

Render buffer command, performing no writes.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def render_buffer(self, command: BufferCommand2) -> Generator[Command2, None, None]:
    """Render buffer command, performing no writes."""
    for cmd in command:
        cmd.render(self.renderer)
        yield cmd

render_region

render_region(command: Region2) -> None

Render region to target image.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def render_region(self, command: Region2) -> None:
    """Render region to target image."""

get_image_ref

get_image_ref() -> ImageRef

Get reference to render image.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def get_image_ref(self) -> ImageRef:
    """Get reference to render image."""
    raise NotImplementedError

finalize

finalize() -> None

Finalize rendering.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def finalize(self) -> None:
    """Finalize rendering."""

ImageRef

Generic container for reference to rendered image.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
class ImageRef:
    """Generic container for reference to rendered image."""

    def save_to(
        self,
        dest: BytesIO | Path | str,
        options: Optional[FormatOptions] = None,
    ) -> None:
        """Save rendered image."""
        if isinstance(dest, str):
            dest = Path(dest)
        if isinstance(dest, Path):
            with dest.open("wb") as output:
                return self._save_to_io(output, options)
        else:
            return self._save_to_io(dest, options)

    def _save_to_io(
        self,
        output: BinaryIO,
        options: Optional[FormatOptions] = None,
    ) -> None:
        """Save rendered image to bytes stream buffer."""
        raise NotImplementedError

save_to

save_to(
    dest: BytesIO | Path | str,
    options: Optional[FormatOptions] = None,
) -> None

Save rendered image.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
def save_to(
    self,
    dest: BytesIO | Path | str,
    options: Optional[FormatOptions] = None,
) -> None:
    """Save rendered image."""
    if isinstance(dest, str):
        dest = Path(dest)
    if isinstance(dest, Path):
        with dest.open("wb") as output:
            return self._save_to_io(output, options)
    else:
        return self._save_to_io(dest, options)

FormatOptions

Base class for representing of possible format options.

Source code in src/pygerber/gerberx3/renderer2/abstract.py
class FormatOptions:
    """Base class for representing of possible format options."""