Example #1
0
    def test_star_hidden(self):
        lot = objects.Animation()
        sl = lot.add_layer(objects.ShapeLayer())

        star = sl.add_shape(objects.Star())
        star.hidden = True
        star.name = "Star"
        star.rotation.value = 20
        star.inner_radius.value = 64
        star.outer_radius.value = 128
        star.position.value = NVector(256, 256)
        sl.add_shape(objects.Fill(Color(1, 1, 0)))

        sif = builder.to_sif(lot)
        self.assertEqual(len(sif.layers), 1)
        self.assertIsInstance(sif.layers[0], api.GroupLayer)

        grp = sif.layers[0]
        self.assertEqual(len(grp.layers), 1)
        self.assertIsInstance(grp.layers[0], api.RegionLayer)
        self.assertTrue(grp.active)

        rgl = grp.layers[0]
        self.assertEqual(rgl.desc, "Star")
        self.assertEqual(len(rgl.bline.points), 10)
        self.assert_nvector_equal(rgl.origin.value, star.position.value)
        self.assert_nvector_equal(rgl.color.value, sif.make_color(1, 1, 0, 1))
        self.assertFalse(rgl.active)
Example #2
0
    def test_repeater(self):
        lot = objects.Animation()
        sl = lot.add_layer(objects.ShapeLayer())

        group = sl.add_shape(objects.Group())

        star = group.add_shape(objects.Star())
        star.inner_radius.value = 16
        star.outer_radius.value = 32
        star.position.value = NVector(256, 40)

        group.add_shape(objects.Fill(Color(1, 1, 0)))
        group.add_shape(objects.Stroke(Color(0, 0, 0), 3))
        group.name = "Star"

        rep = sl.add_shape(objects.Repeater(4))
        rep.name = "Repeater"
        rep.transform.position.value = NVector(20, 80)
        rep.transform.end_opacity.value = 20

        sif = builder.to_sif(lot)
        self.assertEqual(len(sif.layers), 1)
        self.assertIsInstance(sif.layers[0], api.GroupLayer)
        self.assertEqual(len(sif.layers[0].layers), 1)
        self.assertIsInstance(sif.layers[0].layers[0], api.GroupLayer)
        self.assertEqual(sif.layers[0].layers[0].desc, "Repeater")
        self.assertEqual(len(sif.layers[0].layers[0].layers), 2)

        duplicate_lay = sif.layers[0].layers[0].layers[1]
        self.assertIsInstance(duplicate_lay, api.DuplicateLayer)
        self.assertEqual(duplicate_lay.desc, "Repeater")
        duplicate = sif.get_object(duplicate_lay.index.id)
        self.assertIsInstance(duplicate, api.Duplicate)
        self.assertEqual(duplicate.from_.value, 3)
        self.assertEqual(duplicate.to.value, 0)
        self.assertEqual(duplicate.step.value, -1)

        dup_trans = sif.layers[0].layers[0].layers[0]
        self.assertIsInstance(dup_trans, api.GroupLayer)
        self.assertEqual(dup_trans.desc, "Transformation for Repeater")
        dup_origin = sif.get_object(dup_trans.origin.id)
        self.assert_nvector_equal(dup_origin.value.value, NVector(0, 0))
        trans = dup_trans.transformation
        self.assertIsInstance(trans.offset, ast.SifAdd)
        self.assertEqual(trans.offset.rhs.value.id, dup_origin.id)
        self.assertIsInstance(trans.offset.lhs, ast.SifScale)
        self.assert_nvector_equal(trans.offset.lhs.link.value, NVector(20, 80))
        self.assertEqual(trans.offset.lhs.scalar.value.id, duplicate.id)
        self.assertIsInstance(trans.angle, ast.SifScale)
        self.assertEqual(trans.angle.link.value, 0)
        self.assertEqual(trans.angle.scalar.value.id, duplicate.id)
        self.assertIsInstance(dup_trans.amount, ast.SifSubtract)
        self.assertEqual(dup_trans.amount.lhs.value, 1)
        self.assertIsInstance(dup_trans.amount.rhs, ast.SifScale)
        self.assertAlmostEqual(dup_trans.amount.rhs.link.value, 0.266666666)
        self.assertEqual(dup_trans.amount.rhs.scalar.value.id, duplicate.id)
        self.assertEqual(len(dup_trans.layers), 1)
        self.assertEqual(dup_trans.layers[0].desc, "Star")
Example #3
0
    def test_boundingbox(self):
        sh = objects.Star()
        sh.outer_radius.value = 20
        sh.position.value = [30, 40]

        bb = sh.bounding_box()
        c = bb.center()
        self.assertEqual(bb.x1, 30 - 20)
        self.assertEqual(bb.y1, 40 - 20)
        self.assertEqual(bb.x2, 30 + 20)
        self.assertEqual(bb.y2, 40 + 20)
        self.assertEqual(c[0], 30)
        self.assertEqual(c[1], 40)
Example #4
0
 def test_sized(self):
     sh = objects.Star()
     sh.outer_radius.value = 20
     sh.position.value = [30, 40]
     sh.name = "foo"
     sh.star_type = objects.StarType.Polygon
     sh.points.value = 6
     self.assertDictEqual(
         sh.to_dict(), {
             "ty": "sr",
             "d": 0,
             "p": {
                 "a": 0,
                 "k": [30, 40]
             },
             "ir": {
                 "a": 0,
                 "k": 0
             },
             "is": {
                 "a": 0,
                 "k": 0
             },
             "or": {
                 "a": 0,
                 "k": 20
             },
             "os": {
                 "a": 0,
                 "k": 0
             },
             "r": {
                 "a": 0,
                 "k": 0
             },
             "pt": {
                 "a": 0,
                 "k": 6
             },
             "sy": 2,
             "nm": "foo",
         })
Example #5
0
 def test_empty(self):
     sh = objects.Star()
     self.assertDictEqual(
         sh.to_dict(), {
             "ty": "sr",
             "d": 0,
             "p": {
                 "a": 0,
                 "k": [0, 0]
             },
             "ir": {
                 "a": 0,
                 "k": 0
             },
             "is": {
                 "a": 0,
                 "k": 0
             },
             "or": {
                 "a": 0,
                 "k": 0
             },
             "os": {
                 "a": 0,
                 "k": 0
             },
             "r": {
                 "a": 0,
                 "k": 0
             },
             "pt": {
                 "a": 0,
                 "k": 5
             },
             "sy": 1,
         })
Example #6
0
import sys
import os
sys.path.insert(
    0,
    os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
                 "lib"))
from lottie.utils import script
from lottie import objects
from lottie.parsers.svg import parse_svg_file
from lottie import Point, Color

an = parse_svg_file(
    os.path.join(os.path.dirname(os.path.abspath(__file__)), "blep.svg"))

maskshape = objects.Star()
maskshape.inner_radius.value = 100
maskshape.outer_radius.value = 200
maskshape.rotation.value = 180
maskshape.position.value = Point(256, 256)
#maskshape.size.value = Point(256, 256)
maskbez = maskshape.to_bezier()

mask = objects.Mask(maskbez.shape.value)
an.layers[0].masks = [mask]

g = an.layers[0].add_shape(objects.Group())
r = g.add_shape(objects.Rect())
r.position.value = Point(256, 256)
r.size.value = Point(512, 512)
g.add_shape(objects.Fill(Color(1, 1, 1)))
    os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
                 "lib"))
from lottie.utils import script
from lottie import objects
from lottie import Point, Color

an = objects.Animation(59)

layer = objects.ShapeLayer()
an.add_layer(layer)

circle = layer.add_shape(objects.Ellipse())
circle.size.value = Point(100, 100)
circle.position.value = Point(220, 110)

star = layer.add_shape(objects.Star())
star.inner_radius.value = 20
star.outer_radius.value = 50
star.position.value = Point(330, 110)

rect = layer.add_shape(objects.Rect())
rect.size.value = Point(100, 100)
rect.position.value = Point(110, 110)

rrect = layer.add_shape(objects.Rect())
rrect.size.value = Point(100, 100)
rrect.position.value = Point(110, 220)
rrect.rounded.value = 30

fill = layer.add_shape(objects.Fill(Color(1, 1, 0)))
stroke = layer.add_shape(objects.Stroke(Color(0, 0, 0), 25))
Example #8
0
    "lib"
))
from lottie.utils import script
from lottie import objects
from lottie import Point, Color


last_frame = 60
an = objects.Animation(last_frame)

layer = objects.ShapeLayer()
an.add_layer(layer)

group = layer.add_shape(objects.Group())

star = objects.Star()
star.inner_radius.value = 40
star.outer_radius.value = 100
star.position.value = Point(256, 256)
star.name = "big start"
group.add_shape(star)

star = objects.Star()
star.inner_radius.value = 20
star.outer_radius.value = 50
star.position.value = Point(256, 256)
star.name = "small start"
group.add_shape(star)

obj = objects.Path()
obj.shape.value.add_point(Point(10, 10))
an = objects.Animation(60)

layer = objects.ShapeLayer()
an.add_layer(layer)

shapes = layer.add_shape(objects.Group())

circle = shapes.add_shape(objects.Ellipse())
circle.size.add_keyframe(0, Point(100, 100))
circle.size.add_keyframe(30, Point(50, 120))
circle.size.add_keyframe(60, Point(100, 100))
circle.position.add_keyframe(0, Point(220, 110))
circle.position.add_keyframe(20, Point(180, 110))
circle.position.add_keyframe(40, Point(220, 110))

star = shapes.add_shape(objects.Star())
star.inner_radius.add_keyframe(0, 20)
star.inner_radius.add_keyframe(30, 50)
star.inner_radius.add_keyframe(60, 20)
star.outer_radius.value = 50
#star.inner_roundness.value = 100
#star.outer_roundness.value = 40
star.rotation.value = 45
star.position.value = Point(330, 110)

rect = shapes.add_shape(objects.Rect())
rect.size.add_keyframe(0, Point(100, 100))
rect.size.add_keyframe(30, Point(50, 120))
rect.size.add_keyframe(60, Point(100, 100))
rect.position.add_keyframe(0, Point(110, 110))
rect.position.add_keyframe(20, Point(80, 110))
Example #10
0
    0,
    os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
                 "lib"))
from lottie.utils import script
from lottie import objects
from lottie import Point, Color

last_frame = 180
an = objects.Animation(last_frame)

layer = objects.ShapeLayer()
an.add_layer(layer)

group = layer.add_shape(objects.Group())

star = group.add_shape(objects.Star())
star.inner_radius.value = 40
star.outer_radius.value = 100
star.position.value = Point(256, 256)

star = group.add_shape(objects.Star())
star.inner_radius.value = 20
star.outer_radius.value = 50
star.position.value = Point(256, 256)

round = layer.add_shape(objects.RoundedCorners())
round.radius.add_keyframe(0, 0)
round.radius.add_keyframe(last_frame / 2, 30)
round.radius.add_keyframe(last_frame, 0)

stroke = group.add_shape(objects.Stroke(Color(1, 1, 0), 10))
Example #11
0
an = objects.Animation(59)

layer = objects.ShapeLayer()
an.add_layer(layer)


g1 = layer.add_shape(objects.Group())
circle = g1.add_shape(objects.Ellipse())
circle.size.value = Point(100, 100)
circle.position.value = Point(200, 100)
g1.add_shape(objects.Fill(Color(1, 0, 0)))
g1.add_shape(objects.Stroke(Color(0, 0, 0), 5))

g2 = layer.add_shape(objects.Group())
star = g2.add_shape(objects.Star())
star.inner_radius.value = 20
star.outer_radius.value = 50
star.position.value = Point(300, 100)
g2.add_shape(objects.Fill(Color(0, 1, 0)))
g2.add_shape(objects.Stroke(Color(0, 0, 0), 5))

g3 = layer.add_shape(objects.Group())
rect = g3.add_shape(objects.Rect())
rect.size.value = Point(100, 100)
rect.position.value = Point(100, 100)
g3.add_shape(objects.Fill(Color(0, 0, 1)))
g3.add_shape(objects.Stroke(Color(1, 1, 1), 5))


script.script_main(an)