Skip to content

draw_paste

draw_paste

Base class for creating components for aperture creation.

Rasterized2DDrawPaste

Bases: DrawPaste

Description of aperture component.

Source code in src/pygerber/backend/rasterized_2d/draw_commands/draw_paste.py
class Rasterized2DDrawPaste(DrawPaste):
    """Description of aperture component."""

    other: Rasterized2DDrawingTarget
    backend: Rasterized2DBackend

    def draw(self, target: DrawingTarget) -> None:
        """Apply aperture draw component to handle."""
        if not isinstance(target, Rasterized2DDrawingTarget):
            msg = f"Expected Rasterized2DDrawingTarget got {type(target)}"
            raise TypeError(msg)

        box = self.get_bounding_box()
        image_space_box = box - target.coordinate_origin
        pixel_box = image_space_box.get_min_vector().as_pixels(self.backend.dpi)

        if self.polarity == Polarity.Dark:
            im = self.other.image_polarity_dark

        elif self.polarity == Polarity.Clear:
            im = self.other.image_polarity_clear

        elif self.polarity == Polarity.DarkRegion:
            im = self.other.image_polarity_region_dark

        elif self.polarity == Polarity.ClearRegion:
            im = self.other.image_polarity_region_clear

        else:
            im = replace_color(
                self.other.target_image,
                Polarity.Dark.get_2d_rasterized_color(),
                self.polarity.get_2d_rasterized_color(),
                output_image_mode="L",
            )

        target.target_image.paste(
            im=im,
            box=pixel_box,
            mask=self.other.mask_image,
        )
        logging.debug("Adding %s to %s", self.__class__.__qualname__, target)

draw

draw(target: DrawingTarget) -> None

Apply aperture draw component to handle.

Source code in src/pygerber/backend/rasterized_2d/draw_commands/draw_paste.py
def draw(self, target: DrawingTarget) -> None:
    """Apply aperture draw component to handle."""
    if not isinstance(target, Rasterized2DDrawingTarget):
        msg = f"Expected Rasterized2DDrawingTarget got {type(target)}"
        raise TypeError(msg)

    box = self.get_bounding_box()
    image_space_box = box - target.coordinate_origin
    pixel_box = image_space_box.get_min_vector().as_pixels(self.backend.dpi)

    if self.polarity == Polarity.Dark:
        im = self.other.image_polarity_dark

    elif self.polarity == Polarity.Clear:
        im = self.other.image_polarity_clear

    elif self.polarity == Polarity.DarkRegion:
        im = self.other.image_polarity_region_dark

    elif self.polarity == Polarity.ClearRegion:
        im = self.other.image_polarity_region_clear

    else:
        im = replace_color(
            self.other.target_image,
            Polarity.Dark.get_2d_rasterized_color(),
            self.polarity.get_2d_rasterized_color(),
            output_image_mode="L",
        )

    target.target_image.paste(
        im=im,
        box=pixel_box,
        mask=self.other.mask_image,
    )
    logging.debug("Adding %s to %s", self.__class__.__qualname__, target)