Source code for pygerber.parser.pillow.apertures.flash_line_mixin

# -*- coding: utf-8 -*-
from __future__ import annotations

from pygerber.mathclasses import Vector2D
from pygerber.renderer.spec import LineSpec

LINE_DELTA_STEP = 4


[docs]class FlashLineMixin:
[docs] def line(self, spec: LineSpec) -> None: self.prepare_line_spec(spec) for vec in self.__get_line_flash_offset_vector(spec): self.flash_at_location(spec.begin + vec)
def __get_line_flash_offset_vector(self, spec: LineSpec) -> Vector2D: length_vector = spec.end - spec.begin length_vector.x = length_vector.x length_vector.y = length_vector.y no_of_steps = int(length_vector.length()) step_delta_vector = length_vector / no_of_steps for i in range(0, no_of_steps, LINE_DELTA_STEP): yield (step_delta_vector * i).floor() yield (step_delta_vector * no_of_steps).floor()