Coverage for lib/lottie/objects/styles.py: 34%
130 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
1import warnings
2from .base import LottieProp
3from .helpers import VisualObject
4from .properties import ColorValue, Value, GradientColors
5from .shapes import GradientType
8#ingroup Lottie
9class LayerStyle(VisualObject):
10 """!
11 Style applied to a layer
12 """
13 _props = [
14 LottieProp("type", "ty", int, False),
15 ]
16 type = None
17 _classes = {}
19 @classmethod
20 def _load_get_class(cls, lottiedict):
21 if not LayerStyle._classes:
22 LayerStyle._classes = {
23 sc.type: sc
24 for sc in LayerStyle.__subclasses__()
25 }
26 type_id = lottiedict["ty"]
27 if type_id not in LayerStyle._classes:
28 warnings.warn("Unknown style type: %s" % type_id)
29 return LayerStyle
30 return LayerStyle._classes[type_id]
33#ingroup Lottie
34class BevelEmbossStyle(LayerStyle):
35 type = 5
36 _props = [
37 LottieProp("type", "ty", int, False),
38 LottieProp("bevel_style", "bs", Value, False),
39 LottieProp("technique", "bt", Value, False),
40 LottieProp("strength", "sr", Value, False),
41 LottieProp("size", "s", Value, False),
42 LottieProp("soften", "sf", Value, False),
43 LottieProp("global_angle", "ga", Value, False),
44 LottieProp("angle", "a", Value, False),
45 LottieProp("altitude", "ll", Value, False),
46 LottieProp("highlight_mode", "hm", Value, False),
47 LottieProp("highlight_color", "hc", ColorValue, False),
48 LottieProp("highlight_opacity", "ho", Value, False),
49 LottieProp("shadow_mode", "sm", Value, False),
50 LottieProp("shadow_color", "sc", ColorValue, False),
51 LottieProp("shadow_opacity", "so", Value, False),
52 ]
54 def __init__(self):
55 super().__init__()
57 self.bevel_style = None
58 self.technique = None
59 self.strength = None
60 self.size = None
61 self.soften = None
62 ## Use global light
63 self.global_angle = None
64 ## Local lighting angle
65 self.angle = None
66 ## Local lighting altitude
67 self.altitude = None
68 self.highlight_mode = None
69 self.highlight_color = None
70 self.highlight_opacity = None
71 self.shadow_mode = None
72 self.shadow_color = None
73 self.shadow_opacity = None
76#ingroup Lottie
77class ColorOverlayStyle(LayerStyle):
78 type = 7
79 _props = [
80 LottieProp("type", "ty", int, False),
81 LottieProp("blend_mode", "bm", Value, False),
82 LottieProp("color", "c", ColorValue, False),
83 LottieProp("opacity", "so", Value, False),
84 ]
86 def __init__(self):
87 super().__init__()
89 self.blend_mode = None
90 self.color = None
91 self.opacity = None
94#ingroup Lottie
95class DropShadowStyle(LayerStyle):
96 type = 1
97 _props = [
98 LottieProp("type", "ty", int, False),
99 LottieProp("color", "c", ColorValue, False),
100 LottieProp("opacity", "o", Value, False),
101 LottieProp("angle", "a", Value, False),
102 LottieProp("size", "s", Value, False),
103 LottieProp("distance", "d", Value, False),
104 LottieProp("choke_spread", "ch", Value, False),
105 LottieProp("blend_mode", "bm", Value, False),
106 LottieProp("noise", "no", Value, False),
107 LottieProp("layer_conceal", "lc", Value, False),
108 ]
110 def __init__(self):
111 super().__init__()
113 self.color = None
114 self.opacity = None
115 ## Local light angle
116 self.angle = None
117 ## Blur size
118 self.size = None
119 self.distance = None
120 self.choke_spread = None
121 self.blend_mode = None
122 self.noise = None
123 ## Layer knowck out drop shadow
124 self.layer_conceal = None
127#ingroup Lottie
128class GradientOverlayStyle(LayerStyle):
129 type = 8
130 _props = [
131 LottieProp("type", "ty", int, False),
132 LottieProp("blend_mode", "bm", Value, False),
133 LottieProp("opacity", "o", Value, False),
134 LottieProp("gradient", "gf", GradientColors, False),
135 LottieProp("smoothness", "gs", Value, False),
136 LottieProp("angle", "a", Value, False),
137 LottieProp("gradient_type", "gt", GradientType, False),
138 LottieProp("reverse", "re", Value, False),
139 LottieProp("align", "al", Value, False),
140 LottieProp("scale", "s", Value, False),
141 LottieProp("offset", "of", Value, False),
142 ]
144 def __init__(self):
145 super().__init__()
147 self.blend_mode = None
148 self.opacity = None
149 self.gradient = None
150 self.smoothness = None
151 self.angle = None
152 self.gradient_type = None
153 self.reverse = None
154 ## Align with layer
155 self.align = None
156 self.scale = None
157 self.offset = None
160#ingroup Lottie
161class InnerGlowStyle(LayerStyle):
162 type = 4
163 _props = [
164 LottieProp("type", "ty", int, False),
165 LottieProp("color", "c", ColorValue, False),
166 LottieProp("opacity", "o", Value, False),
167 LottieProp("range", "r", Value, False),
168 LottieProp("source", "sr", Value, False),
169 LottieProp("choke_spread", "ch", Value, False),
170 LottieProp("blend_mode", "bm", Value, False),
171 LottieProp("noise", "no", Value, False),
172 LottieProp("jitter", "j", Value, False),
173 ]
175 def __init__(self):
176 super().__init__()
178 self.color = None
179 self.opacity = None
180 self.range = None
181 self.source = None
182 self.choke_spread = None
183 self.blend_mode = None
184 self.noise = None
185 self.jitter = None
188#ingroup Lottie
189class OuterGlowStyle(LayerStyle):
190 type = 3
191 _props = [
192 LottieProp("type", "ty", int, False),
193 LottieProp("color", "c", ColorValue, False),
194 LottieProp("opacity", "o", Value, False),
195 LottieProp("range", "r", Value, False),
196 LottieProp("choke_spread", "ch", Value, False),
197 LottieProp("blend_mode", "bm", Value, False),
198 LottieProp("noise", "no", Value, False),
199 LottieProp("jitter", "j", Value, False),
200 ]
202 def __init__(self):
203 super().__init__()
205 self.color = None
206 self.opacity = None
207 self.range = None
208 self.choke_spread = None
209 self.blend_mode = None
210 self.noise = None
211 self.jitter = None
214#ingroup Lottie
215class InnerShadowStyle(LayerStyle):
216 type = 2
217 _props = [
218 LottieProp("type", "ty", int, False),
219 LottieProp("color", "c", ColorValue, False),
220 LottieProp("opacity", "o", Value, False),
221 LottieProp("angle", "a", Value, False),
222 LottieProp("size", "s", Value, False),
223 LottieProp("distance", "d", Value, False),
224 LottieProp("choke_spread", "ch", Value, False),
225 LottieProp("blend_mode", "bm", Value, False),
226 LottieProp("noise", "no", Value, False),
227 ]
229 def __init__(self):
230 super().__init__()
232 self.color = None
233 self.opacity = None
234 ## Local light angle
235 self.angle = None
236 ## Blur size
237 self.size = None
238 self.distance = None
239 self.choke_spread = None
240 self.blend_mode = None
241 self.noise = None
244#ingroup Lottie
245class SatinStyle(LayerStyle):
246 type = 6
248 _props = [
249 LottieProp("type", "ty", int, False),
250 LottieProp("blend_mode", "bm", Value, False),
251 LottieProp("color", "c", ColorValue, False),
252 LottieProp("opacity", "o", Value, False),
253 LottieProp("angle", "a", Value, False),
254 LottieProp("distance", "d", Value, False),
255 LottieProp("size", "s", Value, False),
256 LottieProp("invert", "in", Value, False),
257 ]
259 def __init__(self):
260 super().__init__()
262 self.blend_mode = None
263 self.color = None
264 self.opacity = None
265 self.angle = None
266 self.distance = None
267 self.size = None
268 self.invert = None
271#ingroup Lottie
272class StrokeStyle(LayerStyle):
273 """!
274 Stroke / frame
275 """
276 type = 0
278 _props = [
279 LottieProp("type", "ty", int, False),
280 LottieProp("size", "s", Value, False),
281 LottieProp("color", "c", ColorValue, False),
282 ]
284 def __init__(self):
285 super().__init__()
287 self.size = None
288 self.color = None