Coverage for lib/lottie/utils/stripper.py: 0%
37 statements
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-20 16:17 +0100
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-20 16:17 +0100
1from ..objects.base import LottieObject, ObjectVisitor
2from ..objects.bezier import Bezier
3from ..objects.helpers import Transform
4from ..nvector import NVector
7class Strip(ObjectVisitor):
8 def __init__(self, float_round, remove_attributes={}):
9 self.float_round = float_round
10 self.remove_attributes = remove_attributes
12 def round(self, fl):
13 return round(fl, self.float_round)
15 def nvector(self, value):
16 value.components = list(map(self.round, value.components))
17 return value
19 def visit_property(self, object, property, value):
20 if isinstance(value, Bezier):
21 for l in ["vertices", "in_tangents", "out_tangents"]:
22 setattr(value, l, [self.nvector(NVector(p.x, p.y)) for p in getattr(value, l)])
23 elif property.lottie in self.remove_attributes:
24 property.set(object, None)
25 elif isinstance(value, float):
26 property.set(object, round(value, 3))
27 elif isinstance(value, NVector):
28 self.nvector(value)
31class TransformStip(Strip):
32 def visit(self, object):
33 if isinstance(object, Transform):
34 self.transform_unset(object, "anchor_point", NVector(0, 0))
35 self.transform_unset(object, "position", NVector(0, 0))
36 #self.transform_unset(object, "scale", NVector(100, 100))
37 self.transform_unset(object, "rotation", 0)
38 #self.transform_unset(object, "opacity", 100)
39 self.transform_unset(object, "skew", 0)
40 self.transform_unset(object, "skew_axis", 0)
42 def transform_unset(self, object, prop_name, value):
43 prop = getattr(object, prop_name)
44 if prop and not prop.animated and prop.value == value:
45 setattr(object, prop_name, None)
48heavy_strip = TransformStip(3, {"ind", "ix", "nm", "mn"})
49float_strip = Strip(3)