Skip to content

draw_rectangle

draw_rectangle

Rectangle component for creating apertures.

Rasterized2DApertureDrawRectangle

Bases: DrawRectangle

Description of rectangle aperture component.

Source code in src/pygerber/backend/rasterized_2d/draw_commands/draw_rectangle.py
class Rasterized2DApertureDrawRectangle(DrawRectangle):
    """Description of rectangle aperture component."""

    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.as_pixel_box(
            self.backend.dpi,
        )

        (min_x, min_y, max_x, max_y) = pixel_box
        if (max_x - min_x <= 0) or (max_y - min_y <= 0):
            logging.warning(
                "Drawing zero surface rectangle. DPI may be too low. %s",
                pixel_box,
            )

        else:
            target.image_draw.rectangle(
                xy=pixel_box,
                fill=self.polarity.get_2d_rasterized_color(),
                outline=None,
                width=0,
            )
            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_rectangle.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.as_pixel_box(
        self.backend.dpi,
    )

    (min_x, min_y, max_x, max_y) = pixel_box
    if (max_x - min_x <= 0) or (max_y - min_y <= 0):
        logging.warning(
            "Drawing zero surface rectangle. DPI may be too low. %s",
            pixel_box,
        )

    else:
        target.image_draw.rectangle(
            xy=pixel_box,
            fill=self.polarity.get_2d_rasterized_color(),
            outline=None,
            width=0,
        )
        logging.debug("Adding %s to %s", self.__class__.__qualname__, target)