def test_transformlock_transforms_scale_01(): '''Shapes under a TrsnformLock are not scaled under a scale transform they are just offset to the scale point.''' t = scale_locked_rectangle_pair() transforms.offset(t, (200, 0)) assert_scaling_preserves_diff(t) assert_scaling_changes_coords(t)
def test_transformlock_transforms_rotate_02(): '''Locks work within groups.''' t = rotation_locked_rectangle_pair() g = Group([Group([t])]) transforms.offset(g, (200, 0)) assert_rotation_preserves_diff(g) assert_rotation_changes_coords(g)
def test_transformlock_transforms_rotate_01(): '''Shapes under a TransformLock are not rotated under a rotate transform; they are just offset to the rotation point.''' t = rotation_locked_rectangle_pair() transforms.offset(t, (200, 0)) assert_rotation_preserves_diff(t) assert_rotation_changes_coords(t)
def scale_example(): s1 = shapes.star_outline(100, 100, 4) transforms.offset(s1, (300, 0)) transforms.rotate(s1, -math.pi / 4) s2 = shapes.star_outline(100, 100, 6) transforms.offset(s2, (300, 0)) transforms.rotate(s2, -math.pi / 2) s3 = shapes.star_outline(100, 100, 9) transforms.offset(s3, (300, 0)) transforms.rotate(s3, -math.pi * 3 / 4) tl = TransformLock([s1, s2], ["scale"]) start = Group([tl, s3]) mid = copy.deepcopy(start) end = copy.deepcopy(start) formatters.Pen(3)(start) formatters.Pen(2)(mid) formatters.Pen(1)(end) transforms.scale(mid, 2) transforms.scale(end, 3) o = shapes.circle(100) return Group([start, mid, end, o])
def rotation_example(): r1 = shapes.rectangle(100, 100) r2 = shapes.rectangle(200, 200) transforms.offset(r2, (400, 0)) r3 = shapes.rectangle(300, 300) transforms.offset(r3, (800, 0)) tl = TransformLock([r1, r2], ["rotate"]) start = Group([tl, r3]) transforms.offset(start, (500, 0)) mid = copy.deepcopy(start) end = copy.deepcopy(start) formatters.Pen(3)(start) formatters.Pen(2)(mid) formatters.Pen(1)(end) transforms.rotate(mid, math.pi / 6, (0, 0)) transforms.rotate(end, math.pi / 3, (0, 0)) o = shapes.circle(100) return Group([start, mid, end, o])
def test_transformlock_transforms_rotate_03(): '''Scaling affects rotation-locked shapes.''' t = rotation_locked_rectangle_pair() transforms.offset(t, (200, 0)) assert_scaling_affects_rotation_locked_shapes(t)
def _transformlock_rectangle_pair(trans_locks): r1 = shapes.rectangle(100, 100) r2 = copy.deepcopy(r1) transforms.offset(r2, (200, 0)) return TransformLock([r1, r2], trans_locks)