# -*- coding: utf-8 -*-
from __future__ import annotations
import re
from typing import TYPE_CHECKING
from pygerber.constants import Unit
from pygerber.validators.basic import Int
from .token import Deprecated, Token
if TYPE_CHECKING:
from pygerber.drawing_state import DrawingState
from pygerber.mathclasses import BoundingBox
from pygerber.renderer import Renderer
[docs]class G0N_Token(Token):
regex = re.compile(r"G0(?P<INTERPOLATION>[1-3])\*?")
INTERPOLATION = Int()
[docs] def alter_state(self, state: DrawingState):
state.set_interpolation(self.INTERPOLATION)
[docs]class G36_Token(Token):
regex = re.compile(r"G36\*")
[docs] def alter_state(self, state: DrawingState):
state.begin_region()
[docs]class G37_Token(Token):
regex = re.compile(r"G37\*")
[docs] def pre_render(self, renderer: Renderer):
self.manager, self.bounds = renderer.finish_drawing_region()
[docs] def render(self, renderer: Renderer):
self.manager.finish(self.bounds)
[docs] def post_render(self, renderer: Renderer):
renderer.end_region()
[docs] def bbox(self, renderer: Renderer) -> BoundingBox:
return self.manager.bbox(self.bounds)
[docs]@Deprecated("G55 command is deprecated since 2012")
class G55_Token(Token):
regex = re.compile(r"G55.*?\*")
[docs]@Deprecated("G70 command is deprecated since 2012")
class G70_Token(Token):
regex = re.compile(r"G70.*?\*")
[docs] def alter_state(self, state: DrawingState):
state.set_unit(Unit.INCHES)
[docs]@Deprecated("G71 command is deprecated since 2012")
class G71_Token(Token):
regex = re.compile(r"G71.*?\*")
[docs] def alter_state(self, state: DrawingState):
state.set_unit(Unit.MILLIMETERS)
[docs]@Deprecated("G90 command is deprecated since 2012")
class G90_Token(Token):
regex = re.compile(r"G90\*")
[docs] def alter_state(self, state: DrawingState):
state.coparser.set_mode("A")
[docs]@Deprecated("G91 command is deprecated since 2012")
class G91_Token(Token):
regex = re.compile(r"G91\*")
[docs] def alter_state(self, state: DrawingState):
state.coparser.set_mode("I")