From 75b42f6b63cb5a8e3a84cd6fd4a03b64c9a9b069 Mon Sep 17 00:00:00 2001 From: Jan Petykiewicz Date: Sat, 18 May 2019 15:05:30 -0700 Subject: [PATCH] Use normalize_mirror for all 2d-to-1d mirroring --- masque/file/gdsii.py | 16 ++++------------ masque/shapes/text.py | 11 +++-------- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/masque/file/gdsii.py b/masque/file/gdsii.py index 7fb7ae2..cfb3f36 100644 --- a/masque/file/gdsii.py +++ b/masque/file/gdsii.py @@ -21,7 +21,7 @@ from .utils import mangle_name, make_dose_table from .. import Pattern, SubPattern, GridRepetition, PatternError, Label, Shape from ..shapes import Polygon, Path from ..utils import rotation_matrix_2d, get_bit, set_bit, vector2, is_scalar -from ..utils import remove_colinear_vertices +from ..utils import remove_colinear_vertices, normalize_mirror __author__ = 'Jan Petykiewicz' @@ -455,17 +455,9 @@ def _subpatterns_to_refs(subpatterns: List[SubPattern or GridRepetition] ref = gdsii.elements.SRef(struct_name=encoded_name, xy=numpy.round([subpat.offset]).astype(int)) - ref.strans = 0 - ref.angle = subpat.rotation * 180 / numpy.pi - mirror_x, mirror_y = subpat.mirrored - if mirror_x and mirror_y: - ref.angle += 180 - elif mirror_x: - ref.strans = set_bit(ref.strans, 15 - 0, True) - elif mirror_y: - ref.angle += 180 - ref.strans = set_bit(ref.strans, 15 - 0, True) - ref.angle %= 360 + mirror_x, extra_angle = normalize_mirror(subpat.mirrored) + ref.angle = ((subpat.rotation + extra_angle) * 180 / numpy.pi) % 360 + ref.strans = set_bit(ref.strans, 15 - 0, True) if mirror_x else 0 ref.mag = subpat.scale refs.append(ref) diff --git a/masque/shapes/text.py b/masque/shapes/text.py index 96b9db1..f6c4aac 100644 --- a/masque/shapes/text.py +++ b/masque/shapes/text.py @@ -5,7 +5,7 @@ from numpy import pi, inf from . import Shape, Polygon, normalized_shape_tuple from .. import PatternError -from ..utils import is_scalar, vector2, get_bit +from ..utils import is_scalar, vector2, get_bit, normalize_mirror # Loaded on use: # from freetype import Face @@ -131,13 +131,8 @@ class Text(Shape): return self def normalized_form(self, norm_value: float) -> normalized_shape_tuple: - mirror_x, mirror_y = self.mirrored - rotation = self.rotation - if mirror_x and mirror_y: - rotation += pi - elif mirror_y: - rotation += pi - mirror_x = True + mirror_x, rotation = normalize_mirror(self.mirrored) + rotation += self.rotation rotation %= 2 * pi return (type(self), self.string, self.font_path, self.layer), \ (self.offset, self.height / norm_value, rotation, mirror_x, self.dose), \