diff options
author | jaseg <git@jaseg.de> | 2023-07-20 16:42:05 +0200 |
---|---|---|
committer | jaseg <git@jaseg.de> | 2023-07-20 16:42:19 +0200 |
commit | bdbdf7f58607bb98999e17ace8a743267a06cd9d (patch) | |
tree | 05a0b3d491d52782c8b96cfc4acbd13e44fa28e0 /gerbonara/cad/kicad/graphical_primitives.py | |
parent | a1b8cbf86160eb2fbe73ffda61c953589ffa3512 (diff) | |
download | gerbonara-bdbdf7f58607bb98999e17ace8a743267a06cd9d.tar.gz gerbonara-bdbdf7f58607bb98999e17ace8a743267a06cd9d.tar.bz2 gerbonara-bdbdf7f58607bb98999e17ace8a743267a06cd9d.zip |
Schematic rendering WIP
Diffstat (limited to 'gerbonara/cad/kicad/graphical_primitives.py')
-rw-r--r-- | gerbonara/cad/kicad/graphical_primitives.py | 42 |
1 files changed, 1 insertions, 41 deletions
diff --git a/gerbonara/cad/kicad/graphical_primitives.py b/gerbonara/cad/kicad/graphical_primitives.py index 9ddd807..f1d13e6 100644 --- a/gerbonara/cad/kicad/graphical_primitives.py +++ b/gerbonara/cad/kicad/graphical_primitives.py @@ -18,7 +18,7 @@ class TextLayer: @sexp_type('gr_text') -class Text: +class Text(TextMixin): text: str = '' at: AtPos = field(default_factory=AtPos) layer: TextLayer = field(default_factory=TextLayer) @@ -26,46 +26,6 @@ class Text: effects: TextEffect = field(default_factory=TextEffect) render_cache: RenderCache = None - def render(self, variables={}): - if not self.effects or self.effects.hide or not self.effects.font: - return - - font = Newstroke.load() - line_width = self.effects.font.thickness - text = string.Template(self.text).safe_substitute(variables) - strokes = list(font.render(text, size=self.effects.font.size.y)) - min_x = min(x for st in strokes for x, y in st) - min_y = min(y for st in strokes for x, y in st) - max_x = max(x for st in strokes for x, y in st) - max_y = max(y for st in strokes for x, y in st) - w = max_x - min_x - h = max_y - min_y - - offx = -min_x + { - None: -w/2, - Atom.right: -w, - Atom.left: 0 - }[self.effects.justify.h if self.effects.justify else None] - - offy = { - None: self.effects.font.size.y/2, - Atom.top: self.effects.font.size.y, - Atom.bottom: 0 - }[self.effects.justify.v if self.effects.justify else None] - - aperture = ap.CircleAperture(line_width or 0.2, unit=MM) - for stroke in strokes: - out = [] - - for x, y in stroke: - x, y = x+offx, y+offy - x, y = rotate_point(x, y, math.radians(self.at.rotation or 0)) - x, y = x+self.at.x, y+self.at.y - out.append((x, y)) - - for p1, p2 in zip(out[:-1], out[1:]): - yield go.Line(*p1, *p2, aperture=aperture, unit=MM) - def offset(self, x=0, y=0): self.at = self.at.with_offset(x, y) |