예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
    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])
예제 #8
0
    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])
예제 #9
0
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)
예제 #10
0
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)
예제 #11
0
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)
예제 #12
0
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)