Files
OmniLottie/lottie/parsers/svg/__pycache__/importer.cpython-310.pyc
T

335 lines
37 KiB
Plaintext
Raw Normal View History

2026-03-01 21:36:54 +08:00
o
æË£iâ´ã@sHddlZddlZddlZddlmZddlmZddlmZddl m
Z
m Z ddl m
Z
mZdd lmZdd
lmZdd lmZz
dd lmZd
ZWn eyUdZYnwdhZGdddƒZGdddƒZGdddeƒZGdddeƒZeddddƒfddZGdddƒZGddde
ƒZ GdddƒZ!d$d d!„Z"d$d"d#„Z#dS)%éN)Ú ElementTreeé)Úobjects©ÚNVectoré)Ú color_tableÚ css_atrrs)Ú
SvgHandlerÚNameMode)ÚEllipse)ÚTransformMatrix)ÚColor)ÚfontTFÚnonec@s&eZdZddZdddZddZdS) ÚSvgGradientCoordcCs||_||_||_||_dS©N)ÚnameÚcompÚvalueÚpercent)Úselfrrrr©rú8/data/cref/Lottie-kaiyuan/lottie/parsers/svg/importer.pyÚ__init__s
zSvgGradientCoord.__init__NcCsp|jdur|S|js
|jS|jdkr|j|j|jS|jdkr,|j|j|j|jS|j|j|j|jS)x)rrrÚx2Úx1Úy1Úy2)rÚbboxÚdefaultrrrÚto_values


zSvgGradientCoord.to_valuecCsJ|durdS| d¡rd|_t|ddƒd|_dS||_t|ƒ|_dS)%Téÿÿÿÿéd)ÚendswithrÚfloatr)rÚattrZdefault_percentrrrÚparse,s
zSvgGradientCoord.parser)Ú__name__Ú
__module__Ú __qualname__rr#r*rrrrrs
 rc@s6eZdZddZddZd
ddZdd „Zd
d Zd S)Ú SvgGradientcCsg|_g|_tƒ|_dSr)ÚcolorsÚcoordsr
Úmatrix©rrrrr8s zSvgGradient.__init__cCs|j ||ddf¡dS))r/Úappend)rÚoffsetÚcolorrrrÚ add_color=szSvgGradient.add_colorrcCs"|jD] \}}|j ||¡qdS)zã!
@param gradient_shape Should be a GradientFill or GradientStroke
@param shape ShapeElement to apply the gradient to
@param time Time to fetch properties from @p shape
N)r/r7)rÚgradient_shapeÚshapeÚtimeÚoffÚcolrrrÚ to_lottie@sÿzSvgGradient.to_lottiecCst||j|ƒ|j |¡dSr)Úsetattrrr0r4)rrrrrÚ add_coordJszSvgGradient.add_coordcCs6| dd¡dk}|jD]
}| | |jd¡|¡q dS)NZ
gradientUnitsÚZuserSpaceOnUse)Úgetr0r*r)rÚattribZrelunitsÚcrrrÚ parse_attrsNs
ÿzSvgGradient.parse_attrsN©r)r+r,r-rr7r=r?rDrrrrr.7s 

r.có*eZdZfddZdfdd„ ZZS)ÚSvgLinearGradientcs^tƒ ¡| tddddƒ¡| tddddƒ¡| tddddƒ¡| td dddƒ¡dS)
NrrrTrÚyrrr ©Úsuperrr?rr2©Ú __class__rrrUs
zSvgLinearGradient.__init__rcst| |¡}|j t|j |¡|j |¡ƒ¡|j_|j t|j  |¡|j
 |¡ƒ¡|j _t j
j|_tƒ |||¡dSr)Ú bounding_boxr1Úapplyrrr#rÚ start_pointrrr Ú end_pointrÚ GradientTypeÚLinearÚ
gradient_typerJr=)rr8r9r:r!rKrrr=\s



þ


þ
zSvgLinearGradient.to_lottierE©r+r,r-rr=Ú
__classcell__rrrKrrGTs rGcrF)ÚSvgRadialGradientcsrtƒ ¡| tddddƒ¡| tddddƒ¡| tddddƒ¡| tddddƒ¡| td d
ddƒ¡dS) cxrgà?TÚcyrHÚfxÚfyÚrrrIr2rKrrrls
zSvgRadialGradient.__init__rc
| |¡}|j |¡}|j |¡}|j t||ƒ¡|j_|j  |¡}|j t|||ƒ¡|j
_|j  ||¡|}|j  ||¡|} t
 | |¡dt
j|j_t
 || ¡|j_tjj|_tƒ |||¡dS)Né´)rMrWr#rXr1rNrrOrr[rPrYrZÚmathÚatan2ÚpiÚhighlight_angleÚhypotÚhighlight_lengthrrQÚRadialrSrJr=)
rr8r9r:r!rWrXr[rYrZrKrrr=ts
   
zSvgRadialGradient.to_lottierErTrrrKrrVks rVcCst d|¡r(tt|dddƒdt|dddƒdt|dddƒddƒSt d|¡rJtt|ddƒd t|d
dƒd t|ddƒd dƒSt d |¡}|rott|dƒdt|d
ƒdt|dƒdt|d ƒƒSt d
|¡}|rtt|dƒdt|d
ƒdt|dƒddƒSt d|¡}|r±tt|dƒdt|d
ƒdt|dƒddƒSt d|¡}|rÖtt|dƒdt|d
ƒdt|dƒdt|d ƒƒS|dkrátddddƒSt d|¡}|rtt t|dƒdt|dƒdt|d
ƒd¡dŽSt d|¡}|r2tt t|dƒdt|dƒdt|d
ƒd¡t|d ƒfŽS|dvr;| ¡Stt|ŽS)zS!
Parses CSS colors
@see https://www.w3.org/wiki/CSS/Properties/color
z^#[0-9a-fA-F]{6}$rrééÿééz^#[0-9a-fA-F]{3}$éézK^rgba\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9.eE]+)\s*\)$r3z8^rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)$z;^rgb\s*\(\s*([0-9]+)%\s*,\s*([0-9]+)%\s*,\s*([0-9]+)%\s*\)$r&zN^rgba\s*\(\s*([0-9]+)%\s*,\s*([0-9]+)%\s*,\s*([0-9]+)%\s*,\s*([0-9.eE]+)\s*\)$Ú transparentrz:^hsl\s*\(\s*([0-9]+)\s*,\s*([0-9]+)%\s*,\s*([0-9]+)%\s*\)$ih)rzM^hsla\s*\(\s*([0-9]+)\s*,\s*([0-9]+)%\s*,\s*([0-9]+)%\s*,\s*([0-9.eE]+)\s*\)$>ÚinheritZ currentColor) ÚreÚmatchrÚintr(ÚcolorsysÚ
hls_to_rgbÚcloner)r6Ú
current_colorrmrrrÚ parse_color†s6 D 8 : 2 2 : : D
 rsc@s@eZdZddZddZddZddZd d
Zed d ƒZ d
S)Ú
SvgDefsParentcCs
i|_dSr©Úitemsr2rrrrµó
zSvgDefsParent.__init__cCs||j|j<dSr)rvr)rÚdummyr9rrrÚinsert¸szSvgDefsParent.insertcCs
|j|Srru©rÚkeyrrrÚ __getitem__»rwzSvgDefsParent.__getitem__cCs||j|<dSrru)rr{rrrrÚ __setitem__¾szSvgDefsParent.__setitem__cCs
||jvSrrurzrrrÚ __contains__ÁrwzSvgDefsParent.__contains__cCó|Srrr2rrrÚshapesÄszSvgDefsParent.shapesN)
r+r,r-rryr|r}r~Úpropertyr€rrrrrt´srtc@s”eZdZejfddZddZddZdadd „Zd
d Z d d
Z
ddZ ddZ ddZ
ddZddZddZddZddZddZd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Z d:d;„Z!d<d=„Z"d>d?„Z#d@dA„Z$dBdC„Z%dDdE„Z&dFdG„Z'dHdI„Z(dJdK„Z)dLdM„Z*dNdO„Z+dbdQdR„Z,dSdT„Z-dbdUdV„Z.dWdX„Z/dYdZ„Z0e1fd[d\„Z2d]d^„fd_d`„Z3dPS)cÚ SvgParsercCs<| ¡||_tddddƒ|_i|_d|_tƒ|_d|_dS)Nrré`) Z
init_etreeÚ name_moderrrÚ gradientsÚmax_timertÚdefsÚdpi)rr„rrrrÊs
zSvgParser.__init__cCs,|jtjkr|j ||j d¡¡S| |¡S©id)r„r ÚInkscaperBrAÚ_get_id)rÚelementZ inkscapequalrrrÚ _get_nameÓs 
zSvgParser._get_namecCs|jtjkr |j d¡SdSr‰)r„r ÚNoNamerBrA©rrrrrØs  zSvgParser._get_idrc
OsJtj|i|¤Ž}||_d|_||_| ¡}| |¡d|jvr?d|jvr?tt | 
|jd¡ƒƒ|_ tt | 
|jd¡ƒƒ|_ nt
t|jd d¡ƒ\}}|_ |_ | || dd¡¡|_|rŠ|D])}| |j¡dkrˆt ¡} |j| _| | ¡| || i¡|j|7_|j| _q_n| ||¡|jr—|j|_| |d d
|jDƒ¡|S) NrÚwidthÚheightÚviewBoxÚ ZsodipodiÚdocnameÚgcss|]}|js|VqdSr)Ú parent_index)Ú.0ÚlayerrrrÚ <genexpr>ýsz(SvgParser.parse_etree.<locals>.<genexpr>)rÚ AnimationÚ animationr†ÚdocumentÚgetrootÚ_get_dpirBrnÚroundÚ _parse_unitrrÚmapÚsplitrŽÚ qualifiedrÚ unqualifiedÚtagÚ
ShapeLayerÚin_pointÚ add_layerÚ
_parseshape_gÚ out_pointÚ
_svg_to_layerÚ _fix_viewboxÚlayers)
rÚetreeÚ layer_framesÚargsÚkwargsrœÚsvgÚframer™rrrÚ parse_etreeÝs6
"
ù zSvgParser.parse_etreecCs0| ¡}| |¡| ||¡}| ||g¡|Sr)r­)rr™rrrÚetree_to_layers

 zSvgParser.etree_to_layercCs"t|j | dd¡|j¡ƒ|_dS)inkscapez export-xdpi)r(rBrArˆ)rrrrs"zSvgParser._get_dpicCsR||_t ¡}| |¡| ||| |i¡¡|jr'| tj¡D]}|j|_ q |Sr)
rÚparse_childrenÚ parse_styler†Úfind_allÚLayerr«)rr™Zsublayerrrr s

zSvgParser._svg_to_layercCd|jvrGtt|jd ¡ƒ\}}}}|dks'|dks'||jjks'||jjkrI|D]!}t||ƒ |jj _
t|jj||jj|ƒd|jj _
q)dSdSdS)Nr“rr&) rBr(rrrÚ transformÚpositionrÚscale)rZvbxZvbyZvbwZvbhr™rrrr­s
(&ûzSvgParser._fix_viewboxcCt|tƒs|Sd}d}| d¡r|dd}n¹| d¡r)|dd}|jjd}n§| d¡r;|dd}|jjd}n•| d¡rR|dd …}t|jj|jjƒd}n~| d
¡ri|dd …}t|jj|jjƒd}ng| d ¡rx|dd}|j}nX| d ¡r‰|dd}|jd
}nG| d¡rš|dd}|jd}n6| d¡r«|dd}|j|}n%| d¡r¾|dd}|j|d}n| d¡rÐ|dd}|j|d}t |ƒ|S)NrgR¸…ëQpxéþÿÿÿÚvwg{®Gáz„?ÚvhÚvminéüÿÿÿÚvmaxÚinÚpcéÚptéHÚcmÚmmé
ÚQr%é()
Ú
isinstanceÚstrr'rrÚminÚmaxrˆr()rrÚmultÚcminrrrsJ


 
 
 
 
 
  
  
  
 
  zSvgParser._parse_unitcCs t||jƒSr)rsrr)rr6rrrrsFó zSvgParser.parse_colorcC| ¡}| ¡sA| dd¡}||jvrAt|j|ƒ}t|j| dd¡ƒ}| ¡\}} ||7}| |}t||ƒ|j_t||ƒ|j _d|jvrHdSt
ƒ}
d} t   d|jd¡D]ª} | d}
t
tt| d ¡ d d
¡ ¡ƒƒ}|
d kr‰|j jt|d t|ƒdkrƒ|dnd ƒ7_qV|
d
kr¾|d }|jjd d|d|jjd <t|ƒdkr«|dn|}|jjdd|d|jjd<qV|
dkrø|d }d }}t|ƒdkró|d}|d}t||ƒ}||j j}|j j|7_|jj|7_||j_qVd} | |
| ¡qV| rO|j j|jj8_td d ƒ|j_|
 ¡}t |d¡|j_t |d¡ |j_|j j|d7_|jjt |d¡8_|jj|d
9_dSdS)Nr¸ztransform-center-xztransform-center-yr½([a-zA-Z]+)\s*\(([^\)]*)\)rriú,r”Ú translaterr¿r&ÚrotateTÚ skew_axisZ
skew_angleÚ translationÚangle)rMÚisnullr¤rBr(ÚcenterrÚ anchor_pointrr
rlÚfinditerÚlistr¢ÚstripÚreplacer£Úlenr¿ÚrotationÚ"_apply_transform_element_to_matrixZextract_transformr]ÚdegreesrÜÚskew)rrÚgroupZ
dest_transÚbbZitcxrWrXZbbxZbbyr1Z read_matrixÚtrÚparamsÚxfacÚyfacÚangrrHÚapZdapÚtransrrrÚparse_transformIsf 
 
"

þ " 
 
øzSvgParser.parse_transformc Csv| ¡}tt|j ¡ƒ@D]}||jvr|j|||<q
d|jvr9|jdittddtt |jd 
d¡ƒƒƒ¤Ž|S)stylecSstdd| d¡ƒS)NcSs| ¡Sr))rHrrrÚ<lambda>sz9SvgParser.parse_style.<locals>.<lambda>.<locals>.<lambda>ú:))rrrrsz'SvgParser.parse_style.<locals>.<lambda>ú;r) Úcopyr ÚsetrBÚkeysÚupdateÚdictr¢ÚfilterÚboolr£)rrÚ parent_stylerõÚattrrrs

 
þzSvgParser.parse_stylecCs t| dd¡ƒ}|d|j_dS)opacityrr&)r(rArr)rrrrrÚapply_common_styleszSvgParser.apply_common_stylecCs.| dd¡dks| dd¡dkrd|_dSdS)displayÚinlinerÚ
visibilityÚvisibleÚhiddenT)rAr)rÚobjectrrrÚapply_visibilitys 
ÿzSvgParser.apply_visibilitycCs†| ||¡}t ¡}| ||j¡| ||¡| || dd¡¡|_|j  
d|¡|D]}|  |¡q+|  ||¡| 
|||j¡|S)Nr¸Úlabelr)rÚGrouprr
rr€ryÚ add_shapeÚ_add_style_shapesrô)rrr€Ú shape_parentrr9rrrÚ
add_shapesšs    zSvgParser.add_shapescCsz| dd¡}|tvrì| d¡r| |tj|¡}d}nt ¡}| |¡}||j_ |d}| 
|¡|t | dd¡ƒd|j _ | 
| dd¡¡|j_ | d ¡}|d
krYtjjj|_n|d krdtjjj|_n
|d krntjjj|_| d
¡}|d
kr~tjjj|_n|dkr‰tjjj|_n
|dvr“tjjj|_| 
| dd¡¡|_| d¡} | rì| dkrìtt|j
|  dd¡ ¡ƒƒ}
t|
ƒdrÀ|
|
7}
g|_t dt|
ƒdƒD] } |j !t "|
| tj#j$¡¡|j !t "|
| dtj#j%¡¡qË| dd¡} | tvr;|  d¡r| | tj&|¡}
d}n| | ¡}t '|¡}
|d}|t | dd¡ƒ9}|d|
j _ | dd¡dkr4tj(j)|
_*| 
|
¡dSdS)strokerÚurlrrzstroke-opacityr&z stroke-widthzstroke-linecapr ZbuttÚsquarezstroke-linejoinZbevel>Úmiterz
miter-clipÚarcszstroke-miterlimitrzstroke-dasharrayrÙr”riÚfillrkz fill-opacityz fill-ruler@Zevenodd)+rAÚnocolorÚ
startswithÚ
get_color_urlrÚGradientStrokeÚStrokersr6rr
r(rrr€ÚLineCapÚRoundÚline_capÚButtÚSquareÚLineJoinÚ line_joinÚBevelÚMiterÚ miter_limitrãÚdashesÚranger4Ú
StrokeDashÚStrokeDashTypeÚDashÚGapÚ GradientFillÚFillÚFillRuleÚEvenOddÚ fill_rule)rÚ stroke_colorrrr6ZlinecapZlinejoinZ
dash_arrayÚvaluesÚ
fill_colorrrrrr¬sd 



 
 
  " 
 

 
òzSvgParser._add_style_shapesc C|j| dd¡}| d¡rY|dd}|j d|¡}| ||¡}t ¡}| |¡d|_ t
|j  dd¡ƒ|j j
j_t
|j  d d¡ƒ|j j
j_| |||j ¡| |||¡|SdS)
xlinkÚhrefú#rz.//*[@id='%s']ÚuserrrH)rBrrÚfindrºrr r
rr(rArrrHÚ parse_shape) rrrrÚlinkrŠZ base_elementZ use_styleÚusedrrrÚ_parseshape_useës
  
õzSvgParser._parseshape_usecCs„t ¡}|j d|¡| ||¡}| ||j¡| ||¡| ||  dd¡¡|_
|  |||¡|  |||j¡|j
r@d|jj_|S)Nrr¸r )rr r€ryrr
rrrr)rrrrrrrús  
zSvgParser._parseshape_gcCsrt ¡}t| |jd¡| |jd¡ƒ|j_t| |jd¡d| |jd¡dƒ|j_| ||g||¡|S)NrWrXÚrxriÚry© rr rrBrÚsizer)rrrrÚellipserrrÚ_parseshape_ellipsesþþzSvgParser._parseshape_ellipsec CsN| ||ddd¡| ||ddddd¡| |jd|¡| |jd|¡dS) NrWrXr>r?rAcSst||ƒdS©Nrir©rrHrrróz4SvgParser._parseshape_anim_ellipse.<locals>.<lambda>©Ú_merge_animationsÚ_apply_animationsr¾rA©rrBrÚ
animationsrrrÚ_parseshape_anim_ellipsesz"SvgParser._parseshape_anim_ellipsecCsft ¡}t| |jd¡| |jd¡ƒ|j_| |jd¡d}t||ƒ|j_| ||g||¡|S)NrWrXr[rir@)rrrrrBr[rrrÚ_parseshape_circlesþzSvgParser._parseshape_circlecCs<| ||ddd¡| |jd|¡| |jd|dd¡dS)NrWrXr[cSst||ƒdSrDr)r[rrr(rFz3SvgParser._parseshape_anim_circle.<locals>.<lambda>rGrJrrrÚ_parseshape_anim_circle%sz!SvgParser._parseshape_anim_circlec Ct ¡}| |j dd¡¡}| |j dd¡¡}t| |j dd¡¡|d| |j dd¡¡|dƒ|j_t||ƒ|j_| |j dd¡¡}| |j dd¡¡}||d|j _| 
||g||¡|S) NrrrrrirHr>r?) rÚRectr¡rBrArrrAÚroundedr) rrrrÚrectrÚhr>r?rrrÚ_parseshape_rect*sþzSvgParser._parseshape_rectc C| ||ddddd¡| |jd|¡| ||ddd¡| ||dddd d¡| |jd|¡| ||d
d d d
d¡| |jd |¡dS)NrrrAcSs
t||ƒSrrrErrr:s
z1SvgParser._parseshape_anim_rect.<locals>.<lambda>rrHcSs ||dSrDr)Úsrrr=ó r>r?rPcSs ||dSrDrrErrr?rV)rHrIrArP)rrQrrKrrrÚ_parseshape_anim_rect9szSvgParser._parseshape_anim_rectcCsrt ¡}|jj t| |jd¡| |jd¡ƒ¡|jj t| |jd¡| |jd¡ƒ¡| ||g||¡S)Nrrrr ) rÚPathr9rÚ add_pointrrBr©rrrrÚlinerrrÚ_parseshape_lineBs
þ
þzSvgParser._parseshape_linecCsZ|jd}| ||ddd¡| ||ddd¡| |jdd|¡| |jdd|¡dS) NrrrÚp1rr Úp2r)r€rHrIÚvertices)rrrKr[rrrÚ_parseshape_anim_lineNs
zSvgParser._parseshape_anim_linecCs\t ¡}ttt|jd dd¡ ¡ƒƒ}tdt |ƒdƒD]}|j
j   |||d¡q|S)pointsrÙr”rri)
rrXr(rBr'r9rrY)rrr[r0r3rrrÚ _handle_polyUs
 zSvgParser._handle_polycCs| |¡}| ||g||¡Sr)rbrrZrrrÚ_parseshape_polyline\s
zSvgParser._parseshape_polylinecCs(| |¡}|jj ¡| ||g||¡Sr)rbr9rÚcloserrZrrrÚ_parseshape_polygon`s
 zSvgParser._parseshape_polygoncCsTt|j dd¡ƒ}| ¡g}|jD]}t ¡}||j_|  |¡q| 
||||¡S)dr@) Ú PathDParserrBrAr*ÚpathsrrXr9rr4r)rrrrZd_parserrhÚpathrTrrrÚ_parseshape_pathes
 zSvgParser._parseshape_pathcCsD|D]}| |j¡}| |||¡st|d|dƒ}|r||ƒqdS)_parse_)r:Úgetattr)rrrrÚchildr¦Úhandlerrrrqs ûzSvgParser.parse_childrencCsZt|d| |j¡dƒ}|r+||||ƒ}| ||¡|j d¡r)||jj|jd<|SdS)NZ _parseshape_rŠ)rlÚparse_animationsrBrAr‡rv)rrrrrnÚoutrrrr:ys   zSvgParser.parse_shapecCs| ||ji¡dSr)r‡rrrrÚ _parse_defsƒszSvgParser._parse_defsc C|d}ttt|d ¡ dd¡ ¡ƒƒ}|dkr0| |dt|ƒdkr+|d¡dSd¡dS|dkrL|d}t|ƒdkrB|dn|}| ||¡dS|dkrˆ|d}d}} t|ƒdkr~|d}|d} | | | ¡|  t
  |¡¡| || ¡dS|  t
  |¡¡dS|d kr™|  t
  |d¡d¡dS|d
krª|  dt
  |d¡¡dS|d krÅt
ƒ}
|\|
_|
_|
_|
_|
_|
_||
9}dSdS) Nrrir”rr¿ZskewXZskewYr1)r(r¿r]Úradiansrêr
ÚbrCrfÚtxÚty) rr1rrrHÚmrrrs@"þþ  ýz,SvgParser._apply_transform_element_to_matrixcCs(tƒ}t d|¡D]}| ||¡q |S)NrØ)r
rl)rr1rrrÚ_transform_to_matrix¦szSvgParser._transform_to_matrixc Cs*| |j dd¡¡|_|jd}||jvr|j|j|_| |j¡|j | dd¡¡}|rK| d¡}||jvr>|j|}n |  ¡}||j|<|j|_| 
d| dd ¡¡D]7}t |jd
 d ¡ƒ}|jd
  d ¡rn|d }| 
|i¡} | | d
¡}
d| vr‡t | dƒ|
d<| ||
¡qV||j|<dS)NZgradientTransformr@r5r6r7z./%sr³Ústopr5r$r&z
stop-colorz stop-opacityr)rxrBrAr1r…r/rDrLÚfindallr(r'rsr7) rrÚgradrŠr6ZsrcidÚsrcryr;r6rrrÚ _gradient®s.

 

 
 zSvgParser._gradientcCó| |tƒ¡dSr)r}rGrrrrÚ_parse_linearGradientÊózSvgParser._parse_linearGradientcCr~r)r}rVrrrrÚ_parse_radialGradientÍr€zSvgParser._parse_radialGradientcCs\t d|¡}|s
dS|d}||jvrdS|j|}|ƒ}| ||¡|jtjkr,||_|S)Nzurl\(['"]?#([^)'"]+)['"]?\)r)rlrmr…r=r„r rr)rr6Z
gradientclassr9rmr{ZoutgradrrrrÐs 

  zSvgParser.get_color_urlNcCd|vr|j |d d¡¡d|vr.|ddkr!|j dd¡n
|ddkr.|j dd¡d |vr\|d d
vr?|j d ¡n|d d krL|j d
¡n|d  ¡r\|j t|d ƒ¡d|vr¨|d}ddddddddœ}||vrx|||_n0|dkr„|jd_n$|dkr|jd9_n|  d¡rŸt
|ddƒ|_n |  ¡r¨t
|ƒ|_d|vrÑ|d}|dvr»t j
j|_dS|dkrÆt j
j|_dS|dvrÓt j
j|_dSdSdS) Nz font-familyz'"z
font-styleZobliqueZslanténÚitalicr&z font-weight>ÚboldZbolderéÈÚlighteré2z font-sizeérdé é@é€éi)zxx-smallzx-smallÚsmallÚmediumÚlargezx-largezxx-largeZsmallerriZlargerrÀz
text-align)ÚleftÚstartrà)ÚrightÚend)ÚqueryÚfamilyräÚcustomÚweightÚisdigitZ
css_weightrnrAr'r(Ú isnumericrÚ TextJustifyÚLeftÚjustifyÚCenterÚRight)rÚ
font_styleÚfzZfz_namesÚtarrrÚ_parse_text_styleßsX     ù 

ùzSvgParser._parse_text_stylec
Cs| ||¡d|jvsd|jvr tt|jdƒt|jdƒƒ|_td|jjƒ}|jr?t |j|¡}|  ¡| 
|¡|j j |_
|D]A}|j| dd¡kra| ¡} | ¡| _| |||| ¡}|j |_
|jr| ¡} | ¡| _t |j| ¡}|  ¡| 
|¡|j j |_
qA|j
|_ dS)NrrHrZtspan)rBrr(rHÚtextrZ FontShapeÚrefreshr
ÚwrappedZnext_xrrqÚ_parseshape_textÚtail)
rrrÚchildposÚfsrmZ child_stylerrrÚ_parse_text_elems6   þ





 zSvgParser._parse_text_elemcCt ¡}| ||¡}| ||j¡| ||¡| |¡|_tr2|dur)t  
dd¡}|  |||||¡|  dd¡| 
||¡|j d|¡| |||j¡|S)Nr@rrr)rr rr
rÚhas_fontrZ FontStylerªÚ
setdefaultrr€ry)rrrrrrr1s      zSvgParser._parseshape_textc CsDi}|D]ƒ}| |j¡dkr‡|jd}|jd}|dkrqt|ƒ}d|jvr.t|jdƒ}nd|jvr<t|jdƒ|}| |j dd¡¡pGd}d |jvrZ| |jd ¡pVd|} nd
|jvrj| |jd ¡phd} nq||vrsi||<||||<|||| <|j| kr‡| |_q| |j¡}
t|d |
dƒ} | r | |||ƒdSdS) NZanimateZ
attributeNameÚfromrfÚtoÚbyÚbeginrZdurr“Z_parseshape_anim_)rBr(Úparse_animation_timerAr†rl) rÚlottierrKrmrZfrom_valZto_valr°r“rnrrrroWs<





  
 ÿzSvgParser.parse_animationscC|sdSzjd}d|vr$d}t| d¡ƒD]}|t|ƒ|7}|d9}qnD| d¡r2t|ddƒ}n6| d¡rBt|dd …ƒd
}n&| d ¡rRt|dd ƒd}n| d
¡rdt|ddƒdd}nt|ƒ}||jjWStyxYdSw)za!
@see https://developer.mozilla.org/en-US/docs/Web/SVG/Content_type#Clock-value
Nrré<rUr%ÚmsrÁéýÿÿÿrR)Úreversedr£r(r'Ú
frame_rateÚ
ValueError)rrÚsecondsrÕÚelemrrr|s0
þ



 þzSvgParser.parse_animation_timec
Cs||vr
||vr
dStt| |i¡ ¡ƒƒ}tt| |i¡ ¡ƒƒ}t|j|ƒ} t|j|ƒ}
i} |s6|r}|rF|rN|dd|ddkrN| d¡\} }
n$|r\|dd|ddkrd| d¡\} } n| d¡\} } | d¡\} }
|| |
ƒ| | <|s6|s6| ||<dS©Nr)ÚsortedÚpoprvr(rB)
rrrKÚval1Úval2ÚdestÚmergeÚdict1Údict2rrHr2rrrrH˜s" ÷ zSvgParser._merge_animationscCrrr)Úvrrr¯szSvgParser.<lambda>cCs6||vr|| ¡D]\}}| |||ƒ¡q
dSdSr)rvÚ add_keyframe)rÚ
animatablerrKrrrrI¯s
þzSvgParser._apply_animationsrEr)4r+r,r-r rrr­rsrr
rrr=rCrLrMrNrSrWr\r`rbrcrerjr:rqrxr}rrrrorrHrIrrrrrÉs^ 
$
)= ?

    
 
1
!&% rc@seZdZe d d¡¡ZddZddZddZ d d
Z
d d Z d
dZ ddZ