Skip to content

ip_image_polarity

ip_image_polarity

Wrapper for image polarity token.

ImagePolarity

Bases: Token

Wrapper for image polarity token.

The IP command is deprecated.

IP sets positive or negative polarity for the entire image. It can only be used once, at the beginning of the file.

Source code in src/pygerber/gerberx3/tokenizer/tokens/ip_image_polarity.py
class ImagePolarity(Token):
    """Wrapper for image polarity token.

    The IP command is deprecated.

    IP sets positive or negative polarity for the entire image. It can only be used
    once, at the beginning of the file.
    """

    image_polarity: ImagePolarityEnum

    @classmethod
    def from_tokens(cls, **tokens: Any) -> Self:
        """Initialize token object."""
        image_polarity = ImagePolarityEnum(tokens["image_polarity"])
        return cls(image_polarity=image_polarity)

    def update_drawing_state(
        self,
        state: State,
        _backend: Backend,
    ) -> Tuple[State, Iterable[DrawCommand]]:
        """Set drawing polarity."""
        return (
            state.model_copy(
                update={
                    "is_output_image_negation_required": (
                        self.image_polarity == ImagePolarityEnum.NEGATIVE
                    ),
                },
            ),
            (),
        )

    def __str__(self) -> str:
        return f"%IP{self.image_polarity}*%"

from_tokens classmethod

from_tokens(**tokens: Any) -> Self

Initialize token object.

Source code in src/pygerber/gerberx3/tokenizer/tokens/ip_image_polarity.py
@classmethod
def from_tokens(cls, **tokens: Any) -> Self:
    """Initialize token object."""
    image_polarity = ImagePolarityEnum(tokens["image_polarity"])
    return cls(image_polarity=image_polarity)

update_drawing_state

update_drawing_state(
    state: State, _backend: Backend
) -> Tuple[State, Iterable[DrawCommand]]

Set drawing polarity.

Source code in src/pygerber/gerberx3/tokenizer/tokens/ip_image_polarity.py
def update_drawing_state(
    self,
    state: State,
    _backend: Backend,
) -> Tuple[State, Iterable[DrawCommand]]:
    """Set drawing polarity."""
    return (
        state.model_copy(
            update={
                "is_output_image_negation_required": (
                    self.image_polarity == ImagePolarityEnum.NEGATIVE
                ),
            },
        ),
        (),
    )