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

1from ..objects.base import LottieObject, ObjectVisitor 

2from ..objects.bezier import Bezier 

3from ..objects.helpers import Transform 

4from ..nvector import NVector 

5 

6 

7class Strip(ObjectVisitor): 

8 def __init__(self, float_round, remove_attributes={}): 

9 self.float_round = float_round 

10 self.remove_attributes = remove_attributes 

11 

12 def round(self, fl): 

13 return round(fl, self.float_round) 

14 

15 def nvector(self, value): 

16 value.components = list(map(self.round, value.components)) 

17 return value 

18 

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) 

29 

30 

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) 

41 

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) 

46 

47 

48heavy_strip = TransformStip(3, {"ind", "ix", "nm", "mn"}) 

49float_strip = Strip(3)