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

1import warnings 

2from .base import LottieProp 

3from .helpers import VisualObject 

4from .properties import ColorValue, Value, GradientColors 

5from .shapes import GradientType 

6 

7 

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 = {} 

18 

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] 

31 

32 

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 ] 

53 

54 def __init__(self): 

55 super().__init__() 

56 

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 

74 

75 

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 ] 

85 

86 def __init__(self): 

87 super().__init__() 

88 

89 self.blend_mode = None 

90 self.color = None 

91 self.opacity = None 

92 

93 

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 ] 

109 

110 def __init__(self): 

111 super().__init__() 

112 

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 

125 

126 

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 ] 

143 

144 def __init__(self): 

145 super().__init__() 

146 

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 

158 

159 

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 ] 

174 

175 def __init__(self): 

176 super().__init__() 

177 

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 

186 

187 

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 ] 

201 

202 def __init__(self): 

203 super().__init__() 

204 

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 

212 

213 

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 ] 

228 

229 def __init__(self): 

230 super().__init__() 

231 

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 

242 

243 

244#ingroup Lottie 

245class SatinStyle(LayerStyle): 

246 type = 6 

247 

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 ] 

258 

259 def __init__(self): 

260 super().__init__() 

261 

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 

269 

270 

271#ingroup Lottie 

272class StrokeStyle(LayerStyle): 

273 """! 

274 Stroke / frame 

275 """ 

276 type = 0 

277 

278 _props = [ 

279 LottieProp("type", "ty", int, False), 

280 LottieProp("size", "s", Value, False), 

281 LottieProp("color", "c", ColorValue, False), 

282 ] 

283 

284 def __init__(self): 

285 super().__init__() 

286 

287 self.size = None 

288 self.color = None