From 0a5e5be719acf3975b4d52372ac94d6a32136b9e Mon Sep 17 00:00:00 2001 From: linghuam <1551827898@qq.com> Date: Tue, 21 Jan 2020 17:52:37 +0800 Subject: [PATCH] =?UTF-8?q?rm=20w3c-canvas=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- b00-阅读笔记/w3c-canvas翻译/assets/arc1.png | Bin 31225 -> 0 bytes .../w3c-canvas翻译/assets/baselines.png | Bin 30257 -> 0 bytes .../w3c-canvas翻译/assets/lineCap.jpg | Bin 16924 -> 0 bytes .../w3c-canvas翻译/assets/lineJoin.jpg | Bin 19628 -> 0 bytes .../w3c-canvas翻译/assets/transform.png | Bin 9124 -> 0 bytes b00-阅读笔记/w3c-canvas翻译/w3c-canvas.md | 559 ------------------ 6 files changed, 559 deletions(-) delete mode 100644 b00-阅读笔记/w3c-canvas翻译/assets/arc1.png delete mode 100644 b00-阅读笔记/w3c-canvas翻译/assets/baselines.png delete mode 100644 b00-阅读笔记/w3c-canvas翻译/assets/lineCap.jpg delete mode 100644 b00-阅读笔记/w3c-canvas翻译/assets/lineJoin.jpg delete mode 100644 b00-阅读笔记/w3c-canvas翻译/assets/transform.png delete mode 100644 b00-阅读笔记/w3c-canvas翻译/w3c-canvas.md diff --git a/b00-阅读笔记/w3c-canvas翻译/assets/arc1.png b/b00-阅读笔记/w3c-canvas翻译/assets/arc1.png deleted file mode 100644 index 1930b4d44e29cfee4e13c11b0f059df4ec56d476..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31225 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 T+0s>is=WAT8Q~J>mmmKJOh>T^ diff --git a/b00-阅读笔记/w3c-canvas翻译/assets/lineCap.jpg b/b00-阅读笔记/w3c-canvas翻译/assets/lineCap.jpg deleted file mode 100644 index ebbd5c90bc357090ad293dcf286f1d5da755745b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16924 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 LKiL&iQHK5x_Ys{g diff --git a/b00-阅读笔记/w3c-canvas翻译/assets/lineJoin.jpg b/b00-阅读笔记/w3c-canvas翻译/assets/lineJoin.jpg deleted file mode 100644 index 0aa1d534abd41d0b263510561197292de7605335..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19628 zcmeGD4?0P34-yDA5NvRQI}_a9-Q8iZ zff-Ko{hWJm-KyUoa2}kh=_-15@4eRA)7^Wo*LoACsw{)^oa{Lo8XAtAtfV>`+M_1m zki>cld}HVwQG|x}g2_fgLRC&e;;pKSlckNl1sa-c*e@MSU5(z?5QDg%KS$8ld#@jJsy!;EZ8(Wx|X`G-m>z{FivV?jL*U@^A>E54A$lR?NIvmcCW%hRJ$92k2=-;GuMsz*U+Bc+3 zX~Gk`rzB{Znv{%uuS_vQm89xN)iAtaieH$>O?7>^#C{Jet42$C#mPBiphm@8xaj=x zT5R-#J;80>m_J5e5)89tc$beGnRJU^C)#&3SAqX8729e zar*^~|0xIkA7^>;0U;HE-^5!V@G7z~ziPI;r8eY$o%(N+scu(1Z7?ZM66b8=G(aN3 z>r1Dv+8P?T*f5QXkoPl8Dvez5a}4*nYx{<`MyNsVlhXh*pR-kSjjad_XMg)2apa}x zgJGdsF8>_F2tR-S{O>Wx497pZpE!Xfi#UrX85N9#U%x#ze;de%o$_}VUids|3XbRq_GIabub6#K8= z4Cw)%$4k2|GBg6gaBfrL@^%*?E?!EOt**~id`~jo?8saz2n~Hw^qS0xu8uZ}HhGHp zBm( zf`R@CD-@0W?W3F@&;Aaf^Qq8(e*XLA*0)!xPZNLq`iwJ!#uIS(nRo`9>=P&7OXUFU z6^^=>M{V_E&y2rOo>0Q6vBbr#u_#6*BJr_1UOGz);fvBe4ijJdsYyrCD=r!OA~||M zs_&$hZK44Lbr@7*}` z1BWDtvwvB0HxQJ_#AFkX>{|;W&<{J&^1|6a5)4qDcj)TANDQ_xePz#}9j^6xQkP=t zF$}I%OtIf3vMQMt&FSpJXVQKunHHhaWwjP@!hP-0L@63((n+-@e9em<_4(6ZS`fiZ zAffo{FVFu3s*26X^L^rbGOf(GDjX|oj#m;&`SmdORb|+CXhi6KXk%D+s6)p~Q?@Y4 zG1}Q!UpaQVm&_TO;`&N+asu)V;(K&{nrd3?+Roa~wB$7K3kZue^AA+{vs|P$3*@Qv z0_?>u8M=RZZ4_+KZ+zHbIHPxAtdGf(E6=)Cf5kMLz@H#5Pq9h3Nx4~4SXfw4n6yWt z^=Hq1Qhrjn&`OJ{&_Byo&7t7^9$#T(!|#SD??~@dM51)I-Wa;IO_lGQsXor(RWz6!Ve|3pP zrIIzLxG6CXk_-wBN~H*L4cmx})7a?Q23en0ZP_?X3H+H9>)x?+d!4S3p|C72Ds?=; zU~6DgSzTG(U*&02YkRe0y<4|Ow@bLEx%+0y#_ID6g{P^p{km;4{dKL^LIYoQS3aWt z2DR@68PMO^sGH{UmW&UY{qMT(`@05<9&7E>}P;vM`*yO_cO+hDNBVH ztoS@ZyC==<$0V6gYo0nk9e=??ZpgL6&BgJ8laRcWN9fCpL&wMGANzRpzqobe_y2Z0 zuzJsB{Ka?TnqMP?v}eFVn?r@eNAZPXo02(0s-nIULa{`VKq*4WGj)kK`?pt$MM}v> zJNA8cULGn3k;SH|yXYsgZR6sf%lp|d4lednvxYTN4vY3rYP4#S4pap_1^+AxG}hn;;v3US(iX}rR6*x3=ZI&f z=S1B;^GWg(3Ucu^y|EGDaM-AbwUYLCb#onXUswZ8%k?w270eX$?nYIXa8B3v-K1a- z(oa|Q6WCXKK# z(Qeq>z1lZDG`7!n|HeP1{yX@W{+%u0O#q!3<`0p-O?sTV-9O4#{;rIzOyQOM?D)w| zjVrDsQ7LXG;nTLzmKQ{U%@`;X%!Uo?Dn|=*1@kd@C{F%nbXImAUmxliUuWz(4h3i6 zCH$pZb5XJTe?Dzu}xbQ55u~210aUn@rRz-O^78OL$Ua$qX{L49I3ID3MptV5U zgtqkDn0PtKWC)zHo2m!7dEd`#=cS$W&qS4a=XFJ(U0_*ddnKJ84}6yoZDrl-D_uSp04rRJcFERygtU=PG4Y?iTS@|EPq!gUqpPSS)8&)>u zH<{h+Y+kVZW|7xvGT?XKtbaZoj#I=`WL`AKlKqZcC$-GD0nty^nzFAYrqwu2R%}#v z*)Fiuz_O1qHSO?mLA7S}Tza+3AhnHWQpZ4B$DYBFb>_}oVJwjo3___@YJu%$r^@Cf z=jUp>9Ypok)if&GKX=FJS7~d{SGz6@^*8?T`TbZ#!G$o+kKoI$iLROed`yEB-;|ecT==R=W^?NI{tm6u%P`4o zQS6H9yH#ENzSg}uEncViKwxkLk>z(j-1r?|0;N$&7pCw=bR_@dlo>`q97MMLj#j*e z&vA$s*d|Qe8bK>;wXl~}4YgAyXLS>x*?kv{`TQDMox8F(Ff!i@IQL~W_H=ex?V@ax z^Zr&{>R~OY7P2_hj6^86rnfX!9^)VVTAHpiIsLaHb^)_TRW~j+BTw2_LWrq4MH}W@ z4?(B8h--!ICdMj8B9*9&DIr(?sRg1r_nVuU?R2&dHbjF0YUpm*5pZ3!%Y0x z_>KNq!~I}Zt+!Kcv#a0q82S9|ir><03vMpeg^1(*#?9`)_QtTvZJsZ+U%{R2dG)Tr zMy(Ih3yCz14$S6z{`v2p{=+ckRtpYMOmeHbI7!@-H%z)J4*;iRTS2VQO^bf}) zId!@dG_+4>a*|@2pht)4*uURsC0{KcL2l_^P(O?R`S07Kr;&8e9lM+YNQrc%G&Ntd zVHwxuM}#sRH83SD4y!!&G$Ja?>}h*m>}i+~@t5J1yXwEk&jQiDyh4Bcte4Ie=62<| z#K|wb$UV8JHR;X|-7^`EpEyj@*uEPABm9;Hw4mxCRPOeWj*6R6Opuh!8^1I|Gb*7> z%sb(gD>PWhogm&X;h$YS-S=Z6i9uPP&>la0J{h1FH0f5AP`rDJ{uT}W?N1W)DZ%Id zyl?O!%aUr8Sl`gFzI{u4jJIkt`yrq3ztd&l^hSwr^E=RnhGi{>_Ee?cQ7rdixVK)9 zK`&II)}M@elQg}}&r-xgdjxzAu|B_0X=D`(`p@c*x8JbXunL(7{&PVP{Ud13{n@+6 z4<7W=ePeGjzZBHR`JX>4oR1<`Z(a~~{%34Q4y~5!;(&PK`Tx59vjVz`U`RPXxQ>Rt z1eh5n=iNYmu!)EE{S`V%J4@?#ivP~)Uj6$pSa28l#g$Qv0M1?{|yHJ)e=+z6ztSG| zCwzSxwOlv8W@gzNt?OP*Z^z`<4LGS(xn-n@&VPBg}$-;6wd+k}B!@GCLcc)maBen+9dh-Y4g) zpPB~crRm?aWF~0@_lfWyhF!*aRD{x8;=7Oj@rdi>&@VXg z)iQhJD*uQde~hfxv|->}aL5LlwRk+=Xe=>TD7;Bk!I+W}(SEG!&=4vWsMAaPt_wq@ z@%Pi3lE-O#Jt@PxBJk}5O^$K?Ns~19K=!8RbDnGXL{=eCBSnn)@NWhb1-_2cBN+y! zy|TyJV1^y*og$N*auZZ!ii%)>{_t%b4~30e;PwP<#aMJ@h`9sHWf8$iVfG&VJoFpt zpq}m`UkABcn7uGWYy;0b?mK#Ov&5UfIpE4Pxv-Y+!yarE&|4y7{-NzLZm+)8!L3TB zHicISK79L^Vbj@Up{S92!W@`&lERBiNf^a6S;ps>Sl-`U6))}Br0rpOemj&maEBqW zuS-iSR7M&5tFV+Zt{O6f8~n{g;7ng|XPBiPv~jKgZrEk|)vMZlEeTF4ac1BUsqzxkk>Rn`53GdSfm}3pU+fZP!wWb!gz_KU#X35ntF*immfOt_1{;K zp~&r+7T+^Dl|K~d%f}jKi|LueZt#+wLVQ^^K^NQYvHS2xv}|KwfH(oQmPs4A`b_Ee z5MS?J(GC8y*uBI5@bQnS*l99xuyJqlFE(pr{pje*uOxMk{qc#rtK;n8>3fPO`&5|-GadE)dg7k*Y|-XlUB@lyXJ*+!@Bou*!!MC#yNAcDZ*<6Sd?8)O z4e4Eu_smKTbFw#o#N<8QRMSH#Z=Q_={{k1qB^G0rHTGSXUXQuK^rzZDt42YxbXgenc`CRK2s-djA(j?7SeIk`wDDwM5;fd4q)B^w6 zvo`*v-`;1=DZZI8>bLHM(N-C|N!`ye`4+oEup4oNi{x9}AXKDz!Wk&cl%{*nAg-oX zmG8=TTaGtnyKv5e!||lBcX{$-io%G$?;BUS%W{ROL{k~=uYJ6humW_(;?O)7K(ddt zF{Ex4-&zmPmFb9o25GKpCr`2X;h_%hCdoZ%;om(^mxlV@c>~`(=N^VBn z?mQbToI{~u!^3-2jNala92%J(IiV~N#E~9hT?mc<9j*%42=Q~22xg_GsQBr~8CP?9 z%;PdQmSpTDmSlFtFDXis2%&bU!JD7_$O534>-?J&T!Mwp{w3)kS$`w!&BrQl-ve#w>YN6RwdO;5Ps zHwqg?Pu4<`ww7FcT0c6A-+YpPrYakt7|9x>ydmRVI4@Nvpp*Mm$bRMmb94DWXlEHU9wI-MW( z**=XK=QolrMHVXR-|tP&OtJk^)|iKiFw!bfYP@M&=drCJ#ZbgvpFxzX5IcGS{t(hh zdWS!rQpO5A)DtX-PX%6|3nOD}4l@W>f>~z$3mK|x9)+obMC~uTk{xuE9}9eD@#(iG zlr3AutL1K1SKB;3knagMr8AZ!baIu7{IPf5^*S#&`kTw~d{6|L;Lw0DGnOi7Am!w( zv`9593kZe7_i&Bu2x_b-2r(tS#bR-47XDsr(^qIbRzGx|u)J~i3qaPp?FP_XhAmJH zhB2~FVsH@n?RWf6Z)RVQb2UwiCH4>Pa+D)p6xlqNCKZ}|`@aA@9=BZUs^%%U>5d8kYIqG2OPEM~{)(oZ#*9@6C76hxb)l3ZG?_ z4%>+mv#JPZ1|9Pw(iGe zi?NkZ#!6$}$vH=1^G2tfR*es0IZ)ZpgO9V$iYFx=-L(fpL*k1%^WobYHi{bFQcd&#dkRLpS-6;(ZN9I8-Q+xBGFg`_fv8vJqD zsZq;^t{r3Ln=p6Pv9pm4#^-D@l-4j! zw|}a0!QO9~p6hW;?mA%Q9kv*=s#@!OdoMA0#dqufQzE4&e6Nty-oU5#i_Ff*pc6D2l zZePCRh+6i+6n!du-eM#XkoG9=ruaPnXob~os^XUU^d`u6wlWyP^m-$O+iqjMRZK*< zTh#4f@w^#6S)|j?><2nhxqw6dkW`oOh~m`yBfV$K?50cU{o$$24o6pSUmwXd)<3IX zK774194+q~y;~|eE_=TH{Re9sfL0K;PiYr`sWR_WFR1}3fN;Z!qm1ub z3JVbDsS~@?ymQ%jcu_8FXyX(3u2DWN^T(x0&Wm&wwr6*GW(|kv761)vnI)(q`M0P8Ihx92N z3NvX0CkrJ>g+OzK^B2b5ladjZ~}y9 z`ulz62?VkiHM?KuGo`i@vut3#c-l4&p&m;u5p<_JLTDULI7hKJp?TBGs~C9A^fd-U zg~wavPK&cAGRD%!sNqRM$iXT;FN3hi6HQ*3Rh#ojwu3Kbic%MC0|GV>cS3|j4sSN^ zzV;a0$^rKBmZTl~FY$^ECf2mns9e}Vv23O&ORV)}d?C!*TE=HmQU>%~Sja(&CdGYB z*lvf7Y_Xt-!3Z24@X{`FHE0C;q)OtOz3Vg3)VOMw4^~(mvxze)~=?elx(ExO+a>S(MaX^0zd(+BH;s;WQhaMMq`Zue?7gX@=$oP59 zhi&btLJU@!ct+cJDOz_sGid54Qw)3r(o(=dYS9uRy&_koW-w2xkl%5K=g4JtfHcsK zb!S+fuKqUk!KMlvvDiQ+ziiB_yVo|}Ql+^~ckoYK*Nj{kM) zm<9IQks5L8)NQV#^CwkC|6a+h>NT!wec*=cM5*q2?UW^iJo6!GAJ0!(u@T&V0h$`( zt51=82>+O_rhye#x`mpH>mG-6YP={salj6hr zYd=CnCF67CtZVBiDSGIMrEcBQ52#W23y3>&Oy*T4OucQygc+CM>SHj}xvX^@a`Xl? zH5y8Y2tZ}2LF#p+0=FfW=@-X?tquc1ZJE#!jJPvbo8F;0SY&wev zd~VJ*C&tGmnwy&^78jL#Unm?t2KLc{?f(>H3!zaxtY2;T8_?jja%6%$Ao~L#&0Gyl zotGR)#vv!?UT%1 z5JDC5*mOaoz+Yqt33KAaDaGcOG{7CrdIaI2X+)D;H;Wy~i1{d`Hb7wJf#Ud}L)LZD z7dv_lG8A@@^dO5U&9@yf!H*>4Nv0(ijGUcBQ>!cvJwZSCS@&QPolpTyN&;LhCS|Te zF3MKV9=sit!r-;GW%?!%&4l&+ z#GlpLBIwcso(eJk9J}8S=CI}PsDT1kC1!Nb5Jcfk3{6`^rjGkn75=Q$+i*O#XUJb| z(&oT}(I*Vtn{uL=cKdq|z4F_+SzaSjkMJZtQl4=J?!9fpe&kZGu(Jg;vP^573cW;r zc}ldH0C>3Q-O-KMS+j99?^XbVMJ>~>%E9hz&k^l9xNg(=%NG)X+q`PHn^K21PKyn{ z&Tg8xK-ZApAuqXv6cP|-i|)X>{Nv!O7&thhpli?UMVa(B2J@J?@hvJc)avSS=&Fw? z15?+sfOG+@t4rDxd5Vsddl7cW*67C)wE#D2sPhkO;hZHT!H@)f|Ko1*RTIKJJQuoM&V`MwB%b8!0uq?`_CgdoD$G+xr22>77-1+`#x( zzIEkE@RVPxn)lq1-M$cJZ3I}6eZR@oQY|MCm6aK77YtA&HpRJ@Wkfa5!@v5Fc5fi!@=TX1M-pgN~FV>#^`2_m6^5jQ#jd=TIm0gj;&4P2pL0(?ohQo4fEIt_- z8IAF|1D^;)J~zL#G&&_UbrUuxqX@dgmK@dU&WC7^KG92BIPl zc-C2(x0dEH>?DeDj8EV4-Je!$+m4wQLI*D_mz+r}H3a5b{2G13-OslMwQwlOJ98D1 zY$7je;%{M+{*tHiX+fKZzsrwH z!xQTIWkjrsDl&Zi`L;CJmosYloW=P-*B03$#dW$ZI=T}zJ-U&Nt6|LNogC1Z??3C} z#VUODO^EQDh1A-+^L2}*hmjJsn?TdV&p-e%z zzYx7`eHT5y0o(F~W$26E=*j1fOEJrm39<^hj>N^S(+k%7t|ICe8|9TPfGl)dy~Kgb zWBQN_w9D8TWMvz>ct>&yJM}rvLALl~Oj1=B(}^CNO9@~3!WC_HCgga&X^>N9iJdz6 z4we<%MA`)OZ?gwOnfMJ^V$znG_xDp@$DNhl#E3ZvzGpo%H#D&*u6JmPjEU*zz9%U% zJNp!PpS+^i*lIS3Zx=?Dy*>YX^EHpR?U!|4etzce>x8XLQK|0xYCS~10-70+@K?+u z3XXp3sI7-FYFMs{waF_fXApq*F=(FCeKFsg`IN(1wcnw!gNBb^!zK{QVNg4=174QZ zh!Gagu0=8C5`V}`yz(Cr);)dcSRJ$+Pu_6ms_6-5pK#gYPuLZRoZ(Y0t~Z!iW#~I5 z&HPiu3XML#*Iim-V|6;V5;6Yhf#U?Cs9_i5GfUZ{G58Q2r86GLY*@jyc*)Ee&2wY>~eDp1V(*|b_mDSuci8s)oP#C6g0 zG{qavrg?v6_I$fLh&|QYym`Ti{|em}c@h-l3hW>=gL#|6g3Idlml(7dfyGl+Q*YjD z-7D=S#c3>b6WH}DG!fa7yfs+a4VUf3^Rs(w#p4WTjBe)S7uQ7 z)dmur*?!L_oOl(`>fCTX`=P4I;*z3>$C<@-x?x$>|0`S6(wUzvGQaMS)yzti;r)l?_s!RzZTW9~f93w&f~FdXdgDhe`!&`{-TJPARLRT3 zPu_WLoKywG;q_v2tnpbwkMQaM&YAN7B(EEtw9R$qE(K2i$~kv*SWO?g!%AXX|uAMc~aRNkg!f-c?nWsB6EZOs77dk56P(#p$tK*Alt9HDJ?EAGbL=| z{wkrV*Bx=YhPvf5nzwIkPMA_ZvbjkSWCb?X=k;8RZ zSc5N;y$L;hH%edFMG!ZvS=#tIM$SRSMCty%zU503G>LFnKPvw5|r{?;aDY7X>6{Uw#r)>+h}H1Omv=GR>D-9 zaR2P6;eGX{6d}Fxg5I*UOsR>5lMy&!s8wb6W{L~=eSjtj2C3`Tp)v_Umy* zgh`HQOyp?JUmxs!PB{A)tYM>%G7R^tBXo=9&IE^!8TAU2EoV+)Ew}D8>?T`F;D&E= zY)JG;iiU)LQzPS|NXnPreuJ$3ffADTrLHw*t!-&wJ1F4>gkdk~YWJ z3Y00Q*9%5LEyHfxH2hjA%hR=qR+@p^I_6eEXe#saIc}nk5O-C9cez`>xIj|$E*e2j zkdbIhG`Q4)B%K?%7oR2dr6f;(%j2D4;*0jd!8UWg5jX1@{wB_|0Pb2x%dU9LknWv( z;mQbg9|p_8gYmPxTDf+PixY{e+v8;>%Vq1=SA3oO7z6~b?$U}{lmW=R0JnSctFi53 zHsSY4Hu8*Z3=$#ozKoZSVQ>q4_f^S%xhehb@pc-UZ_rZ_w}$tkr)D5AAK)!@=>A4# zI3+5=#1reFpk5S6UpONwQCkt^K<)r6^sG&^_A1|Z8em6%qG;FQ$x^PnPID>w)ahCE zrp8Lf9*T;iS0)Pz%idxG1^uq3(UE=You0)FojNa5I(6qda9bF=96G#EjERcV{T&IG z8F^ikjIsfYxKB?^B!*8-qX((RPLg1s;&G8`#$sfGr)^&A&z!PqRE))MMt23Ce7%XI zi3&YwJL_4sNwUV^%uiUu0;ZHj>P>f#V>5|K{4w^nzRh^$a6;69yc{0V-#T)s;f8+? zPsN_qhLDO(Id`{g?X~&+^}+nl8UgRy#@&B0hO+$Z1kYi35J>Ge4%6V*)dP*5mM@ej z*4^i&l6t_M-3K+e*Ejcb6s&KGj*X=$rk51!jo89GpL7x=yRV&pGS#oHx_%yD*a6Qt zrvj-vF6s1a-Us799lp1mPr_31Nl{1>wnLQ{T(;yj3;Y0PR17?+$@6n?^j{CWq{r5# zWZP>=9;K+-sq#dR^QLKdd7ucsD3rm*TU0kdWSZ=*S&89p`sr7*@Wtj1^XlxuY^98U z{QJbF|;Z#MiYn3>NNL^v(4h|CGqHGW#6RZRT+o(r%+@R0n&m(jLaPbpC-}#BvWE znLO$GWk2R#d;LsUp0a)2;yn9OC2FehF)gr{7qGCO!QQg)UG_}Uwcpb%`KpPk^O>{X z0e#6M;f!T^gM#bDToiMyo-a{>x)c6PK})DobrO6Ah;Lg9p@R(72# z{8)RqJ$jBvb*W7~mhFh+k1NUnu1250Lwd8hks9XEIbuzqGRix*q9-inNJt|*Sv@)3 zc~=OX;tdKf&hjQxmSO_P>qrK6@+UCsXCiv7Xl9y58m5=L0HH06>eDc%KKUW55-Zmw zP}mbqg}1^!Y#M-xq?d5*EQ!}y1?UKE z^$G-{OzHlKtMrbk~a6Zhu*!{ft56pZ=xmukUS>T=A)I|b`Sdz%u zMo(;&bH6D5BN`yJnYGujH!MZ)DwRtcAF?L}nhTc{nr`r!0%)E)R6n;7r75grX!c@Q z0$>}LXoKJ0=Ygh1G9HdMSAkunD4;G^&H6^qZCrxmaq8+AmWk7|~D-Rg2ROt$6Dx ziy_88pobV8SmB`&03VckOG(8_N{qbuM#CdTN7JU!{Nw>1no;l$lOZ@IJPQ+@$1`k` zh5#&fGb4CXZni4 z0dp+coB-iM?n;3hcph+`P8PiCX0GW38VOpZ5_MOklpO)fJp?Z-3DHFEiis}h(+RX` zOu$7F$)Lb4A|ki}sRh(?hdZZ%Yy3KQ>plX2FF#YXJMNU5 z8ote2nZer~5#{1xlDFc?+k(CrMYf%pk>wFtApZsHh0 z-FBXuA99v;Syk(}D1YN?OxEr36A&I5 zK&NvpXbRB4XW^%{(IZqXR@-G+@DDin5NSVxU(i8OP*Z-0_7Cx_xo)bVj;n(oSqIIA zlcMstQBhGgO?pC8^kB!Ld3B~S>#{OCES0B9DU)$N^q>-z; z6XevB^!6%(`Igib*x~knH^srNXHvVP09z)exGmJ-Ssd5CkTKV(E~-|{L<~>J;>M;Y zRut+oN3LphXxx|s#4W-ExvD*sJFKT6>`=;k9^L;teGI=0`2QPB_;wKFRw&$a0p3lg zct_#79MHNM>K+J%pqu&LE$LW6lVhkVd+Jepm>O5?L|V&rk{LGGAHFY4_N zxch9%W*+ij#ddQF{#_+NwDZSYE?daOA6i^irUKFGYLmnb+b@l*4(I6V?zU*WjuE4% z{EX$tTMDTj!-tjaSnTfYz2jpU$sqnQbk<=6R&3o^X18i4u`kq>1`=IUvu@6i{2-iw zUdp)ew1ge^2)HJ4?e#1(g%>wSC?1DxBm<%F!g3H1VP+16L-UhMX(wMca(A5^Q}podhzWaaxo}k7sj(Z^Xl-;C z*p)bU?kc+`#>l?^V>G6#&(+8YFG`80o|L~(Cx7) z3#2S&w^D@xvM1&W7HKR%_9T5cA9}FB9tfnEg^2=ku}16>b-Vd>4uGI9@5`*mt63te z?||~D{nq1^u-$Q$rHeS2^S$k?d;@ANFI&HAg{N#3A2QxE^qk%inB=PKkZ(zu-SCNv zkCs+iiIsjk!=zA`f;b?v_3BWPSr8HJJ}GVjEz1UM^Hfyw2su)|B5(KzczdL0;J)Eb zg*cafiD22>(vqnc#^CZkzu@veHcIgG7tBpbDJZ?&oVXjhQeWS{FNM=2HaCIpJ>fFE zqu0Wo>NWSweJYU}-b?7V*QxgsgI2zwdoPXjq7rDImqa+Im2XDrBnHQ&wU0Og^ z$MnQw(_|q#xU;jC%(rXU4_cM%u;r56gXnE@ujGK&8tZl{Kc|(Br_~HKXAgm`KeLba zI03M2&$-y29&d2p-|+Du=XFd_F;iAjsxM@RE?3G3H3$g3KcAeO>@Dz_o0~KIm91cE zht#?a4i5G$SZne+-|$f`(k{tbS~AwJu}|LUoaS~uRgf{BFGXM?T&3|4mD`$1GVuTy z?Y#xd6io5h@}VxczFzKfIWIdgiT+JxN~I^G%3i1(9=R?9OU-UW{yhC6sowTUFX`aY zq3TwG=6Dg7vtZI$EI~lP0S18CgN(^clt|?V>rRgM7oo{GTgN}E;QOZcu+n`CP0tRs zJ_pn%T9xGTxZh04NjM4+?hJ&V*aGREbtpv{AUu0xbQus1U(v%H zZwJvMnQHeQd>=nTAE8Kg6H0XHp%f?s^&DWed;SXKK8#A%h{UG;6C; z0mfd_$1v^n@}-FL%gveyIl>OX!IEv?$UU9Xtc1{+JRV_jpd63u<+yX6q>5DQe;)k7 zbw%7J@Rlv^{z>G2+@Jps45E+)NDCB&(}pD!RxfR$J_k zp-xH53Bx>w#yTNGKK^L5K8A{jyMn!ALbahG?$4j-@9u%?a7@I$pI+l91o4 zo~ZBtrtDI*lZH;i7#C5R(NOiAncbnde zU*CR5PpWYkR20c4zlFAe)BK0vdxp9aOwCKcRNamq)gzl(@cotMhU{f^tDvBdKRd4pT9*-VuHJ+FU* zW8xFFutlm69+loV+*N*<1HkXJ;&|EU`iZaBxo4whC~rPK+dSv0-VFQEx*lRmwtOP(+z5w`*K&V&sv_k{ z`sFRyeV+}xQ(5@32VO&hSxk)EnP5QHaZN$q)bv~a{nePVJk`fCL-k6as9MtoCD;_A zV};ybE5^XDSK|-}@3{&K?9+hvw6wG?Z{jhVy?&+)yOJB|>*rTj|9UBS@KL|sg`UE5 z!TD_7Bah7gNC$<#!khv!9?;+Jg3CEphJQz8!t}CE&cD@BBpZWNJ70OV$nk*c4~GfI zENU-^Yr6eCSfUnD@olJL97v_^U9&|7zL}pC_VSc@fR(3#2C2~gHKf5&K7rruf=DX& zm*bfPr|s%KnG^7MY7)MH+7*R#h)OzN_o0h!PEAfqrSdxEK_TAZH4gI((55x$89AZ(l7IQp@f4@M1|WDT7W#0mk&2^o&Nb)q)~#yoC!7m;iA&)kbxrZIt1x$S5! zH-~Z6DYc%VzEJ0H`J&X+OC4E2odWq8gF04dD`U;KIH;j27!2PBL`O+!WuhMRxt$tu zZ$2pBT^id8+-Q11XvHY6Xw}N{cw4GBgoWIV{8QWxx_OflbQ~F3N)1eoa`+rONGN3} z-Zgw)Z;wd9N&&x_VE1YZxnJ9}Ip2SM*ZtRel*VS_9chyUuCQj_m!rIvyjElnVnn#2 zQvNl+y)XA!WBl+Lvs@0`XhfgP!BPCah7VTKoSvO~Z1@*T63 ziQ8Ygk25<#V~_pK5H(vO0nn_*;ORGPOWUa?bqr29f_eKtMXbZ#P`&5Z1F8x6Itl!o zelu7BQ2lQJ4>+mOj&4umcQwzk@>Hm-uTQ?FS{~alNKNaW=&b4)>f?8erG)dIU%a+6 zxh;2!I%sHY%neAL*Wm*Tzh%tIb?Zi1uqFAR^t_^-917_xa}*q2IZdD2J)(T=uN#E3 z)IoKWy>Nn;+v)SYZ-x7a9C)a#Tuw<(;f!qjr!7Y9djt;4I0?@T@2nD9HNYPiM2IG- z$6S}@g`~Sj$?gsQX2R)}wsUtf#wL1(d$!!d_}gvTNsL}9wO8nWS_ z1X-kKakRRq+>i?gPd0tSwS>KS9x@vQg|>o?`B-aKKg z?C@Mm-C;-x43L#mOvjS9NJN-OnjkSX@EPJhc9;PgLcvB0Ca*es|?VioM+(lCk z>&Lxj3pF72kNSLUv4&B(#yrS>k8slT1l4kf`7%1mk_bf~fVN&6lc@*=U6VBt4(IBD z4RI}uJ@_m#ynh6@xX`;BdKNh(baR$OF1Q5zmdpDk(Beg#OP1Fk_e3AXIkrMQRtcx^ zp#T1tR&Z1AJcZcZ&-k{!%*{?)nCS;TVVu+XnLHkf=< z%$2x|24KSY#z=w4iTy81Q%s&-4Hqk%j#+m!g| z#V$Mx$Pq_Ih}ocNzt7{W#LGE73_(Esa(o1aEUGKHF;Fj~IGKSg#=TOr*zXpV@VN=P zzQ7%WoG+^!Cixos_FQ~UPIHQg4!e310%L8l72y{fv`RM^opENM#ew_?0Pf9yDbFM~ z^@^rov|0@9xDd zLuAxLvAe-9I_)GG`fB}#uU^@nZ&F<-xVxL|-s1uuu}Sk|eOBKi9pNn>7NWT+skH0SWQ`w!SmgnRaL7*j?Nz|0=IXz!zm^gD-UU$3a-MdUId#hQm^~q-Kdkm zF5xL;&X)`|r)6q*uu5viXneGFwW2?KpKut-U}(Aij8UUo3^O8hPocxii;G7ew9HCR z8E7MN*gSD}gsbVxB%RoPym6Q+Sa~{loUdu*ReGqAL0|?hBgAd;HCkHQNLrbUI3Z=H z<|cP;8BB5c80PnmEwNB%LP)H9WvW<@cDeTX*f?v;ufN_Gw*0d8XFlF3o=%f{&XN{a z5Q=@8&>-4|&Hki*f2-k!nH4dx7~XW_K>h`kM$p}Ek@*8^ItAY^L8~3!kU1 z0cuO{J?NBvau!T~o^<=JoC{Rg{(uorbyK&1#?z5>+aMc+#s!ZJpwuJt#)f#{oN)Eo z76MGqhAxY&(6kU`YwcoR*#%Iz=BNKh4I-HtNCf^$$bssuw5sHT{*Vp*^!jUW-Oey3 zVL3AmK7bKFJYYo9{W>oo7*YTuMgqY$x)}rHvKx?(9nubXdVdlW|UV+wR*k%EZA$x??RYct1PE9{vl#-W?>t|cm&GL;bSoI=Q03Oo>zO> zEL_?6piVWq(d{b|r5Gn4to<}ozkp&QzuLv_V5$6xZX4e^u05q9W0Q+{$fP8|du;50 z(C~s7$Njd*^u;hFq6|o|Js)>Q4>DTSVcZPM+qzQwu%JNfJY=~R2z7POf zICDU8Co|$RVlooAm=wb`JV6deV%jXob!3!pXVD@4|{>( zRskj9a)vn{H{93h9OcUNtQm16DO2xFksuHbN`*f`HA}6M7mJ(bg4k5t!>(u1z17~q z9Hv6i*an~a+XUc(JDAVtH}Y#WzuXBg6b0X7VmlE%N75=K=k9T$C{sB_fTDy6$^aVl zrf>QLEPJQ43%dTSD+BRDTyojC0TCQ3qlqMJb zejcl}0=!Q1q@;4QzfP~!l%S9Bg!gPq2ocP5)G)onv9(-$cuE*O;U>g0vDl4&+0jAt zW=HFWOf@4Kx)a2yyWc_orNmJTShKk0y}JO42aO9cI*)sc z%wI8z3mX96bR}!+vdT3=2zV9wxVqX~vq9Wst^lrcYbkL>;WPWY)U{o$rJ}Y9v*p?= zP3MVE@(v!aSxp1#BsN*fEmw0%B7%HSvrHkQ8$-%OIQL{qt<{QKKA&f&sk&EWU@xcBukAY zQB`F?j%wHE(ffwj#IC+HXiUBh&%~Q8tD?i$TfH*RhJ+njHXDFSEMF|tE~47?nw8MC z*_d>eF_qM(cXMq25p&1UmSkxcvp?P%cVrq13g6~L9wbvtKcBUaf~3kSuT(BgUGY}S zhz~2yJth*|AGW<6OF7P88a?&^^0^$WD_yZ~cyi3zzr3_Y#}mN9vgBbm$r9bd6w9P5}t+ zTZ{o>96T=CI14MI-jX*?v2>n zwnPUcJ0Q@cpBe>QJtrUk){0eUQ%%QNemU5#bRNjBB`G%n{&fyrc5qh6g<#@J(dy~j z5byl+1RX3U#P1aUQy{b)Bp3T;>+!Y0zhv10UE@BXq0HTB86RoKILO{gjF+c4(x9{l z-bd9pBY1Kdx9>-3NX~V$V)r&1Gc?Xn-WbT-A9kkg#~mzSe9%wHV+?IpS1u4jh%1ob zs{WnD_y4V58UUPfyG#;6L=CZrds-rXOG}*~cxEstC&O&{qK++CEDd<}&&GDc;^eGa z!_f?3?S4t>en0h(xdw=bJ}mBXQNxWJl$DhwtymZCh)e24E331^{|;+YLUNc&@=96h z7Uy|bi92ZwR`n!f!8Zl60BXEEdblC@TU>mo7CaBculfk$goJ1N#@{+~#VSBZc1|liY zJFBPzI*;T9sI;KoVlTM&b5flcQghp#ll-AgOhwJ+-msay;{_jviFD3>KcIL?kl#PN zH5jFU&RKo_2qI9;YM>V;joF9ctd|9vOM`B`E&2eT`8Mk5H|9%|guuyNj^GKE8S8E$ z#X@2$c6J82i|q;tR0JCYV4=MLX20m4i|u^78DW{csO|g+ww^O|6aSN_oRG4nb+&CfWFY|9hYB+r`7T`*7x) zGiT?_53>=9(%2N?&Ak zBz-%ssHD`Hxk~L)7#xl{4$5csO=>9TJFiQhOYg1q=flZ#r#GjINi%rR9e#{Gxe9m3f7JU!_)VtAYB1Z}ewk_q!&7ccSL)3w`L83;i3n8|ouL~nCVQ>iUrxi|t zb6^B9s-w#!K>256;c?|=LcNxqO1}>*EZC{bUL0?~GWqk`@upw`jd+z%> zEaF{^_PA%y8CuJU7g7p~RJ3C~-T2->{I2I%Zyv-kX%Fk zLbgfM5vGv>K{?wqf4@e5HnbR`LE;F?l=WiClw?fyZKojr8Pb0%+VtUHRc|EO4pFcR z$u)x@)t{JHy?YNl^8InRzf;8zjq?rI#RNFZ$yUz7H;l%kAB1=y1)r5d5y#VoW2nUp z(K_%U+j?SJ-W2Up!h766#QMfNYbm?wjr~P5X{S-5NNTqjr(+0eM=~HQ`Ho!#gH^LH zt$lSu9`^MNw?hHEY_tYrXiL+3Q4uPRz2~B^Mgio#u$;@YqO7B^{fie*wh;LhY-nCl zXig9rFY0%A8EOVk$twZ`j3BP-|`AlF>dnTPUAEmok7Quo8Cj=%vZ2G#F*&y zV7qjar0?{)lnO05VN ze50owLSUr)=&LyU=s#ku+&bFSj}d&>l7Z->9A@Mljbsf2Re4%kf|w5hZ~1mv0Yo5# zbvS9{-d7`QtJ0DOc)3GyQszl>n5%zM9D^X@%F~>P?)p?6)7h%_c&m-ZKo{jrPi?q(v@PAVnCx0zWa+e zDf!EDSi_H(?H(wgtFnvBOOY3SyiKIuH!YCzh0l_XW&b`iX#0$@S|Ook9(;oU^;S|k zkX(Qf1>Q7=;c|qw?InT)8L`7l2D!(f()RJAYzrp)ml?sQp+t%?Xv1p;AlG79LkaZS z)?&;D(b^Md!Q=Is+oP=qI2B=cf`qn(jwCRHga2Ui7sRHKr-Tdb1iO=W%d&q67^EDN zWlRVN$0Xo{Ne@e+G?#^|Cn%GClSHQ&iFcAEazyd)cc!q5o1qU?Rk4{zY!a6#ApH&^ zj2SM({)_62tQ$TplbZMQ52G`lZWyTyTi((i^nY-xzn~OwOpS`uU=9N6YQHnX$&XMk zGgrbgjg;5wR$}=cGif6%M*H+f@RC^Wpxbwcf{}Rfasy}j@pf?_=$+^y5r%za+d>c? z=x8I^S~_>E<7%u z2%ABfL4ywwzrWVgJ;oKt5v!7xr8TBB{&J3*S305gQCHF6P;pR2Qjt@^D*ITLRB@)x zS3X;Pqh1tSDb`Hw6<;_ec=PE-^+wZ?>hVKc;=0V=-`Z;4^w&uWIYr!bJ%m?^Fl&>n_xn{=#tNRRjO4=Rr=>e{5l(|LZUtip81|_Pri5ZCmV!jXiR7+ z@G_<;(nZ4*(L{t@8O~EG8GkeQGJbKpS>?=m7fa37&mu4G{Fqu=EpQP(#Ud%poYQe; z^&$0Pdi~g?mRV|3HMKZB&$_T#wNbuNSXi`MkXWjgr&i`9SrQb$QHgIY{n?bklx&xO zx1l=T)}PhTE#9`uw&Mb!%h>bH)4S_KmyqYuKjBlZyP&&Fs|3S@N<8Z(?tg2SMwjX5Wvv?*kAhWNI0lxtc<0=U zu2ptfvD+hRBL0{ajd3I%Dv(%!xH8*9JrY(-t-cdlFmi2JuUf5ITG*r*X__^UoaOKh ztq%xpco%v6@`w$IkorA@`it<_T8f!GhJ3)j)dW`xS!HEaLM5*Df}T*rVuOVqp6-(N zR#W~8WJRH_tiH`kzVWVhs$SpDYX!Z@sR?^oV^zOi=6vHUyFAGrV&4#)A4bXi>imOo!>&h)}@o{%g^~V6{$i(nJ$NV zryYI`etnl>zA)YyS6h4EbCb({x0P+jx#SDN}NC# zn^^qVAyP{rq?~}92BAzr5sx;HeUI~7&;9f5?ES8}=auiLe_#IU$%x!=+=3z2_s3V} zPsLBRH|JMece@acN1=Z_4~LI-w|<01L~#VQOxxyprg_v?M%xG}ct2??_z+Q$(HN1e z&=!%E5UUZp$xLt)uvD>Uu}=v3g&O&yFmXwn1<&Bu!l%r&8oY*EW7GK#%y_v4Svx6T zjDz)qsS7whL=$7TQQp`lnJ3Yg3lmB<6lzIs{i=&e|KQ}#>|i~)JYM(JL}q9@TnJkx zHj}u8>%zy|=w%infbj?$$7wypEXd5*Q39EPhQnO% z%Ozy{x?D#b~lza_N<0fCRZk))?;75r;)Y!$#u28 zk(BjUN5*sD;f&tc>CW@j1mx?S&+No(t~tc4a`fl}1Zf;@Lp-Hc9Kz4V>|}ZnR(Vu; zuJgJgx8mif?x^a79?>YNQ;^s;+y>WXW8&pd*J>KMl%%2NNexc0QI+IZS&b_}!&t#H z|6IRihH>L_%XBNEq?py-BibOUZtsw>(I_>SgB$wsje{h2I(w6IzjmdR3(;ZPg^u zZnMk=w@aN0R~}Z`ZEg4DyB7W(o{i4sLE_n1CvI=69xpHVMsbjTOQF-lZpnEZ*o{50 zfnWR5;-l%Ix=SUaB`9zDv-LE$6cRMt&i=hze&>Ak-wPldP_Q-GuvfUV|{rm zqW0d|&E{=5;T!wfguskZDIhDNtr|A3SaDj0H}Cd|nx~P3(5bZOZ^!jE7%QxWC;hVq z>0iG3fAsrDFNLoo$gy{ye`R*WS`z!sbGGeIM>x<`=Ma0<->E~&8cHOTa(S`s50-Uu z8x#*ar%CuP9lGBF*FxHVRpVj2?LRH`X|^o3%U`4tvU(ZVS`%%!Hg43sLXz{CN^0tB z3|etrs?I(8?=pF4*NyKbICA1dC=pKF9jY)NED zVTD>D>=)o{nROX9Qh74JP~^?^<|X!*|ZzDV-O74Unq0we!nwn@#_Q|84r^-gaL~jLE#l3J806^WX9v-_CWH z8Oj-rJ_gcXCL+VW zVQX$~ecXW;W$_-11y@>t?)xqFF??pAM15gn9}r3#Zk35Jf3!Cw&f?*0Y9o?8KW`C2 ziCV#KSN!hjvGehJU#f~bV*zE9&|d~S#&3!7w2i6=6dIvJuhh!ln7|fs#|Dz5;>p$mJx()ZL-Z^^qz+a^qjX@WE0LV?klTiS5J3OOPYt;|vsC z2Vfx;NW;Me5@T^glZGQuLr5uAFoW;|gGH4kk-}~e3&;yb^Zkh#Qv=1WJp3zPGaA!3 zS{ej81m@CR-)WzV=Ui8N4111WZd-2O0`W1Tpef?$5R)bneN}mopaMWxIpJ|yh?wA8 ztJbmxN%tL50}9dLnF?_6^apSRj7JCvOSmR9lV3iV4t);?S`yMpXnVqpmBai0=A|>K zV$rMT%bqYwtEmj`2CLM)J9xcjh-XEYHA4n?!bF?_m&#}om2D)?YN4Ey@aTF*^-mk}7I#1&U8-8`MtQ->pl*~e`ev%*nE$QxNO+O+I z1aQ$AUB*bDC_4o{Cz(cG-x5&>5;JVS4X&kOLLQ+1{z%hmcF%VUXjD@CaW$KWacs(7L=&Qg! zYE^3YwL2g0=t^6{+fK?Q($*Epr?!87Uj1297e?wCp3G*r*%TEMb$d92!UwGHWOd!9 zWn=hYI(y<|zHAqGO2Nx&Pz zF5vU@Nx=PzJd@oxFyXj20LFT=)8j;N9?`-byT44W#026%BDjCKWat;o{c{oZE6cUl z-GY|sw-N=TSY4PlI3N|@RTGBcnI~V>^?RB zn4{HDYQ}5q^qviO2xRgYi6tZ3O$<*MV7L^x>?|CAjJ9ijZL|#?QE2sgu;qwACHxc~ zP0W{o^YJ5fw)$$bP39+kOG<-#=~&XLjKRVltr~-qb%Fp-ZigL7%Y;Q5-rr8j8hxH!ubmZjl}!s=*sA_8<%F$(Hq2dS1(>D+gotBDv)x(BcZkqDmM9H|lq$|?u9&l2?;9kT_>I6U z{rIgay_O_4LtB@V;3AKGxw`L zglwOvUqNQ<`s0|PZ>(!6BMp`_oTa?B!C_ynAiJ>>JC&`i%T1Mxd#13(GKaLaQ<*#s zz}Z@8f~#cVWl>TqQHq9Lp|I!EDnlFJu86X#L%KI;k$El2^&PM7y!oPms~^0&yS|%W zvF2Xl&y1)&nl9+U*5 z_fH$^`BD|e+!&aHgg5nz2a{C7HS3^)v+lz$KlqCEOpI!mNgVrgYM|n z#L6QC`-4-8fU!&)k*YLszG?UMFwxoD^QBw1RF201!8I1*WXfzYar2u&o1=N%FRle< zdN)t;A|$V`d^vI2%uW}p3b0vrwAj3+EtVfA<05W!TF6LawY5JQ-2|=rOObdpP%HXJ zfLgOBXq@z)!TA*fPZW02-XR)2zCNxi=BaHF_^H);2Bnd`gqI4v&6-uZ(3b0i2IAE> zoD(w(UsI0xbRMLT~s4W56Dh!o)ctJ;zj z2~mGUGU%guGk1VJ2L^I<(V?Iyy%F=&62X9Iz`*db;)4Zfl)_(0F*FPi4uWT8`fDE}X?#^W% zK!zzIt^{5LU_w5BnbZtm!vF0M%AQ$9ADaC?BU!9d|1ve__7oA6{=ANT+;YAto+u#@ zCJ|4v!-0;^1=FmyzjxSHdl@MtYVDl4{_7BF+c~ARY))REYzWzF@CvISWL-hGFjO0fK0=9Q=Fww*;_Kbc*p7WIz^Z49I26{a5k-O0@Xl zEm_OJ*ys7)e51n+?>%p;TxB;qKyMo0_Q*G%e}84-FE_h=o`VH)*?L|Qzz;)shP8=w zU#(Kt(yHLn$p`eeYah1!a?h9RB-}fK4As{9N67ppn{783+u;t8RM6}l;b)jT+%8$E zcIwS1g5@VT37}}T^LX28o|2dCT1{6_vBsV(PTqUX`7)yU%geBM$nZ;u&8#BUWGR$^b~=yE(8 z!lGSEZo8Aekzj@B^lRGz17Q&H%9>Q z!++ZeNS`{gbWQ-9epAJ>$iPxAiL9n!ok9Z$?O;JFW-QLE zaG}d+97TU~j)L^>KDrYC^LDe?3L`rv0|~k20S%6 z>`H6anMhqbO>dfx#F(G2HmNnGrli#SzCM-FSrtRdBkQBhP8$rCTuPL(Bf%q8m_PhP zUalmfb}=8ASXpDPiSj3#N)y+PG<3Q-iL|7fGk=KeyBO^47q{X2tuqm{%0Dazz##1G z#obM&bIBx2khQ%Exk9dtH8h(u%Q}z8Cp?RYk7IhD0D9M`_XTvq7wN;M`c3Ea=WM%$ zMd-uI7$l?XouM;u7#Xf7+jKV6*C+vz@Ns` zc=M%4ml5^-^tGOMR`HW|M&KCXI)$`DO{~qb9z0y!`nT8TlEFnea^@L{jlVc~jG|Qu zU_jJZmNg?9c?I9@voSt(BpH&{S;FITz?SN%u*1u)*f)k={n;vdB_RpA(60V=a&bLE z6B+5BEOOYUfN|0a=oKl{^(+?MM%k5*w$he<1y+7r_2$1$WNHk$8kH!^!5`!2qhuY7 z=j*fXABq(->ldr^EU76g`SvGLXO1$gQFe#>4?YvXV~`TdSfuB;ciMvkW&7U<4(Ax^ zzG)xE&HV5i5iTx;`-yltzhya9uzOW#GK-S)>!OXz>ys)sxamv)`Ps$U*?td12! zDm328E!~LLKs@Pj9OxtK%{B}wUrD3x3cW%yo$o&F$ZjD?mH@VNGIDwT`(Blq zIh`X^u{vBy@8Xo4hS_(<`hXDsmIG1>Ez!gTHmUHv6-pKEY(K8!@hb3Fa!+l4Je7>< z2h#TE!dT(*L8@1Mv3QNa|Cu0<-5X*biZ?LWtMxQ!G6%Wd)mTiRk#C&7_>SMuh^n37 zrfY4+ALE^@YW<%4Bs?qYhk(3-u*(xG_e#Q6p0GzQ3t-|hAZH1Lse+JUl0hg!N;j3? z+BiSnk}`{HOC|ss%oH2tGYkUyM?*Gn5iU>PzvH=yDCXl!bMi6zKFHMnv~^40oT86D zxnfgppJu2-aWS6_xf?s9tk@3U)UP1hTx|7h&5ba)>w;0}N{!;4D{8t;#$1Ukm}>Oi z&D&Gown=^ig6IT3bc}n0UrhPtOWQ`waK$G&r7UHi)47t^-*=M2>>Q|jjwv12@ha!)?VfMY#?w>taXx%0yt|tBl;C3AmAFqbT2Q(_TTZv!T21D zV(g>cVyhojn0CYCbTEnUw($XpSs{@J=lgoTc%?)bI)~{^={nAD=;UXo zXvHjE4qH*czvtb!$S5Q(q2&&QVT|Os?;wR#IH87L*_J-W347d_!SRn8=;~%PE&>+0 z+;N@CDC$}Fi!SStB%rVcgE}yy9Y!3Hp*-9dy;HRrv@11`l^#Gs?XR+1oqw{#P zzu-|X3t*haO@9aqL2lK2TTJ+m8`^>2szqO{-(DX3El&aOs}0!R1RNCZsW1JvBP_dY zCCJMF3|F-3!G89rUJSR6(?6^<%jmSl??gDUy59mNc0$pJ zis9M;<6Q|5X#sJk*MLrKwNXZAyFF3?2@?{=-B87d4U(0Zm{`^-%!d=?;;{;pRPxoj zgex(Sl*=k`;kFs$@Y}#0=-EpwdPWNbXh1E#Jl>iFGip|TACyg}t-;Ep#hTUapGej0 zR_skw%)U%A^Tr7GM@-3vMG5N{e05K))6CZ%lG9g0eS8bN|oX;b_JS+?5WunpVEJtui$_Kqzvz6a@SR z8j_s+d+EGx|LsORa<|9r0f)CsBBPN&0BT4`2*KL*e$xu6Vj|C)Z>UdpQ?T9aZ=}R$ z)7l7YfS0SaO^L)E9O_0#CRw$<>9Zk{4}9`~@fZD?Jl5>7n$YaH|D}l~xsX8q-eCj) z@ttP)SYkfT#;>nH-!XlajwS^DjypT=)AYLzwo?bJSaC1>vDlGf=I5bin>E}4w@TSW z5!>_#V?$5vzE2)qJCeXbO2XK0y`#CHGLgF&q|!1s5pcWsmp`;#4phw675xERwE*VJ zm+I{are|OLheJ~sm@I>LLuo3wP z0M?LZl_iIhiw4JzipJr40^Z@YFI_j{|MZZ6QOFOp=K+wAy&97N7UBsPS_Zf)29(?Y z4J-j?KsNg-66h`_RrP6P0PZwVsa*P*0I02zRpDd843A2tEp2gRl8)d96G49(c!sCZ zFoOod*wPVZ|ImOL?37idXn`VljFV)gw}2x4zYn<*LAF1-S1AAE30$Cq segments); // (default: empty) - sequence getLineDash(); - attribute unrestricted double lineDashOffset; - - - // text - attribute DOMString font; // (default: "10px sans-serif") - attribute DOMString textAlign; // "start", "end", "left", "right", "center" (default: "start") - attribute DOMString textBaseline; // "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" (default: "alphabetic") -}; - -[NoInterfaceObject] -interface CanvasPathMethods { - // shared path API methods - void closePath(); - void moveTo(unrestricted double x, unrestricted double y); - void lineTo(unrestricted double x, unrestricted double y); - void quadraticCurveTo(unrestricted double cpx, unrestricted double cpy, unrestricted double x, unrestricted double y); - void bezierCurveTo(unrestricted double cp1x, unrestricted double cp1y, unrestricted double cp2x, unrestricted double cp2y, unrestricted double x, unrestricted double y); - void arcTo(unrestricted double x1, unrestricted double y1, unrestricted double x2, unrestricted double y2, unrestricted double radius); - void rect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h); - void arc(unrestricted double x, unrestricted double y, unrestricted double radius, unrestricted double startAngle, unrestricted double endAngle, optional boolean counterclockwise = false); - - }; - -interface CanvasGradient { - // opaque object - void addColorStop(double offset, DOMString color); -}; - -interface CanvasPattern { - // opaque object -}; - -interface TextMetrics { - readonly attribute double width; -}; - -dictionary HitRegionOptions { - // dictionary to allow expansion on Hit Regions in Canvas Context 2D Level 2 - DOMString id = ""; - // for control-backed regions: - Element? control = null; -}; - -interface ImageData { - readonly attribute unsigned long width; - readonly attribute unsigned long height; - readonly attribute Uint8ClampedArray data; -}; -``` - -`context.canvas` 属性必须返回在当前上下文上绘制的 canvas 元素。 - -除非另有说明,否则对于 2D 上下文接口,任何带有数值参数(其值为无穷大或 NaN 值)的方法调用都必须被忽略。 - -每当在此 API 中将 CSS 值 [currentColor](https://www.zhangxinxu.com/wordpress/2014/10/currentcolor-css3-powerful-css-keyword/) 用作颜色时,currentColor 是该元素的 color 计算值,如果在特定情况下 color 属性的计算值未定义,currentColor 关键字是完全不透明的黑色。 - -如果是 CanvasGradient 上的 addColorStop() 方法,用于确定 currentColor 关键字的计算值的“'color'属性的计算值”始终是完全不透明的黑色(因为没有相关的元素)。 - -> NOTE: 这是因为 CanvasGradient 对象与画布无关,由一个画布创建的 CanvasGradient 对象可以被另一个画布使用,因此,在指定颜色时无法知道哪个是“相关元素”。 - -> NOTE: 与字体相关的属性也存在类似的问题。这些规则将在下面的相关部分中详细介绍。 - -## canvas状态 - -每个上下文维护一堆绘图状态。绘图状态(Drawing states)包括: - -* 当前的[变换矩阵](https://www.w3.org/TR/2dcontext/#transformations)。 -* 当前的[裁剪区域](https://www.w3.org/TR/2dcontext/#clipping-region)。 -* 以下属性的当前值:`strokeStyle`,`fillStyle`,`globalAlpha`,`lineWidth`,`lineCap`,`lineJoin`,`miterLimit`,`shadowOffsetX`,`shadowOffsetY`,`shadowBlur`,`shadowColor`,`globalCompositeOperation`,`font`,`textAlign`,`textBaseline`。 - -> NOTE: 当前路径和当前位图不属于绘图状态。当前路径是持久路径,只能使用 beginPath() 方法进行重置。当前位图是画布的属性,而不是上下文。 - -> NOTE: -context.save() 将当前状态压入堆栈。 -context.restore() 在栈顶弹出状态,将上下文恢复到该状态。 - -`save()`方法必须将当前图形状态的副本推入图形状态堆栈。 -`restore()`方法必须在绘图状态堆栈中弹出顶部条目,并重置其描述的绘图状态。如果没有保存状态,则该方法将不执行任何操作。 - -## 线样式 - -> NOTE - -> context.[lineWith](#lineWith)[ = value ] -返回当前线宽。 -lineWidth 属性以坐标空间单位给出线的宽度。获取时,它必须返回当前值。零,负,无限和NaN值将被忽略。 -默认值是`1.0`。 - -> context.[lineCap](#lineCap)[ = value ] -返回当前的线帽样式。 -可能的值为 “butt”,“round” 和 “square”。其他值将被忽略。 -默认值是`butt`。 - -> context.[lineJoin](#lineJoin)[ = value ] -返回当前的线连接样式。 -可能的线连接样式为 “bevel”,“round” 和 “miter”。其他值将被忽略。 -默认值是`miter`。 - -> context.[miterLimit](#miterLimit)[ = value ] -返回当前的斜接极限比率。 -可以设置,以更改斜接极限比。零,负,无限和NaN值必须忽略。 -当`lineJoin`属性的值为 “miter” 时,描边将使用斜接限制比率来决定如何渲染连接。可以使用`miterLimit`属性显式设置斜接极限比率。 -默认值是`10.0`。 - -> context.[setLineDash](#setLineDash)(segments) -设置当前线的虚线图案(在描边时使用)。 -该参数是距离的数组,距离要交替显示。 - -> segments = context.[getLineDash](#getLineDash)() -返回当前线交替类型的副本。 -返回的数组将始终具有偶数个条目(即模式已规范化)。 - -> context.[lineDashOffset](#lineDashOffset)[ = value ] -返回相位偏移(以与 line dash pattern 相同的单位)。 -可以设置,以更改相位偏移。不是有限值的值将被忽略。 -默认值是`0.0`。 - -实现 [CanvasDrawingStyles](https://www.w3.org/TR/2dcontext/#canvasdrawingstyles) 接口的对象具有控制对象如何处理线的属性和方法。 - -**lineCap:** -![](./assets/lineCap.jpg) - -**lineJoin:** -![](./assets/lineJoin.jpg) - -每个 CanvasDrawingStyles 对象都有一个 **dash list** 列表,该 **dash list** 可以为空或由偶数个非负数组成。**dash list** 初始值为空数组。 - -调用`setLineDash()`方法时,它必须运行以下步骤: -1. 令`a`为作为提供的参数数组的副本。 -2. 如果数组中包含 Infinity、NaN、负数,则终止此步骤(不会抛出异常;用户代理可能会在开发人员控制台上显示一条消息,因为这将有助于调试)。 -3. 如果`a`中元素的数量为奇数,则令`a`为`a`的两个副本的串联。 -4. 设置 **dash list** 为`a`。 - -代码描述: -```js -var dataList; -function setLineDash(a) { - var isErrorValue = a.some(value => value === Infinity || value !== value || value < 0); - if (isErrorValue) { - console.warn('数据不合法!'); - return; - } - if (a.length % 2 !== 0) { - a = a.concat(a); - } - dataList = a; -} -``` - -当调用`getLineDash()`方法时,它必须以相同的顺序返回一个新创建的 **dash list** 数组。 - -有时更改虚线图案的“phase(相位)”很有用。例如实现“行军蚁”的效果。可以使用`lineDashOffset`属性设置相位。 - -当用户代理要跟踪实现`CanvasDrawingStyles`接口的路径时,它必须运行以下算法。该算法返回新路径。 -1. 令`path`为要跟踪的路径的副本。 -2. 干掉路径中所有`长度为零`的线段。 -3. 从路径中删除任何不包含线的子路径(即只有一个点的子路径)。 -4. Replace each point in each subpath of path other than the first point and the last point of each subpath by a join that joins the line leading to that point to the line leading out of that point, such that the subpaths all consist of two points (a starting point with a line leading out of it, and an ending point with a line leading into it), one or more lines (connecting the points and the joins), and zero or more joins (each connecting one line to another), connected together such that each subpath is a series of one or more lines with a join between each one and a point on each end. -5. 向连接该子路径的最后一点和第一个点的路径中的每个闭合子路径添加一条直线闭合线;将最后一点更改为联接(从先前的最后一条线到新添加的闭合线),并将第一个点更改为联接(从新添加的闭合线到第一条线)。 -6. 如果 **dash list** 为空,请跳至标有“转换”的步骤。 -7. 设`pattern width`为`dash list`列表中所有条目的串联,以坐标空间单位表示。 -8. 对于路径中的每个子路径,运行以下子步骤。这些子步骤会改变路径中的子路径。 - 1. 设子路径宽度为子路径所有线的长度,以坐标空间单位为单位。 - 2. 设`offset`为样式`lineDashOffset`的值,以坐标空间单位为单位。 - 3. 当偏移量`offset`大于`pattern width`时,将其按`pattern width`减小。 - 4. 将`L`定义为沿子路径中所有线定义的线性坐标线,这样子路径中第一条线的开始被定义为坐标0,子路径中最后一条线的结束被定义为坐标子路径宽度。 - 5. 设置`position = 0 - offset`。 - 6. 设置`index = 0`。 - 7. 让当前状态`current state`为关闭(其他状态为打开且为零打开)。 - 8. **Dash on**:使段长度`segment length`为样式划线列表`styles dash list`的第`index`个条目的值。 - 9. 按段长度`segment length`递增位置`position`。 - 10. 如果位置`position`大于子路径宽度`subpath width`,然后结束此子路径的这些子步骤,并为下一个子路径再次启动它们;如果没有更多子路径,然后跳到标有“转换”的步骤。 - 11. 如果段长度`segment length`不为零,则打开当前状态`current state`。 - 12. `index++`。 - 13. **Dash off**:使段长度`segment length`为样式划线列表`styles dash list`的第`index`个条目的值。 - 14. 令`start`为`L`上的偏移位置`position`。 - 15. 按段长度`segment length`递增位置`position`。 - 16. 如果位置`position`小于零,则跳至标记为后切的步骤。 - 17. 如果`start`小于零,则将`start`设为零。 - 18. 如果`position`大于子路径宽度`subpath width`,则使`end`为`L`上的偏移子路径宽度`subpath width`。否则,使`end`为`L`上的偏移位置`position`。 - 19. 根据需要运行以下子步骤之一: - * **如果段长度`segment length`为零且当前状态`current state`为关闭`off`** - 什么也不做,只要继续下一步即可。 - * **如果当前状态`current state`为关闭`off`** - Cut the line on which end finds itself short at end and place a point there, cutting its containing subpath in two; remove all line segments, joins, points, and subpaths that are between start and end; and finally place a single point at start with no lines connecting to it. - The point has a directionality for the purposes of drawing line caps (see below). The directionality is the direction that the original line had at that point (i.e. when L was defined above). - * **除此以外** - Cut the line on which start finds itself into two at start and place a point there, cutting the subpath that it was in in two, and similarly cut the line on which end finds itself short at end and place a point there, cutting the subpath that it was in in two, and then remove all line segments, joins, points, and subpaths that are between start and end. - If start and end are the same point, then this results in just the line being cut in two and two points being inserted there, with nothing being removed, unless a join also happens to be at that point, in which case the join must be removed. - 20. 剪切后`Post-cut:`:如果位置`position`大于子路径宽度`subpath width`,则跳至标有“转换”的步骤。 - 21. 如果线段长度`segment length`大于零,则使“在虚线处定位”`positioned-at-on-dash`为假。 - 22. `index++`。如果它等于样式`dash list`列表中的条目数,则使`index`为`0`。 - 23. 跳到第`8`步,`Dash on`。 -9. 转换`Convert`:这是将路径转换为代表其笔划`stroke`的新路径的步骤。 -创建一条描述区域边缘的新路径,区域将被覆盖,如果一条直线的长度等于`lineWidth`,且沿路径中的每个路径扫过,同时保持一定角度,以使直线与扫掠路径正交,将每个点替换为满足样式`lineCap`属性所必需的端盖,如前所述并在下面进行详细说明,并用满足样式`lineJoin`类型所需的联接替换每个联接,定义如下。 - - **Caps**:每个点都有一个垂直于从其中出来的线的方向的平坦边缘。根据样式`lineCap`的值对它们进行扩充。“`butt`”值表示未添加任何额外的线宽。“`round`”值意味着必须将直径等于样式`lineWidth`宽度的半圆附加放置在从每个点出来的线上。“`square`”值表示矩形,其长度为样式`lineWidth`宽度,宽度为样式`lineWidth`的一半,垂直于从点出线的方向垂直于边缘放置,必须在每个点添加。 - - 没有线的点必须背对背放置两个顶盖,就好像两个点实际上是沿点的方向性(如上定义)通过一条无限短的直线相互连接。 - - **Joins**:除了连接发生的点外,每个联接都有两个额外的要点,一个针对每条线:发现两个角距连接点的线宽的一半;一个垂直于每条线,每条线都离另一条线最远。 - - 必须在所有联接处添加一个实心三角形,将这两个相对的角用一条直线连接,并将三角形的第三点作为联接点。 `lineJoin`属性控制是否呈现任何其他内容。 上述三个值的含义如下: - - “`bevel`”值表示这是在联接时渲染的所有内容。 - “`round`”值表示必须添加一个连接圆弧的两个圆角,该圆弧邻接(但不重叠)上述 三角形,并且直径等于线宽和连接点的原点 在加入。 - “`miter`”值表示必须在连接处添加第二个填充的三角形(如果可以给出斜接长度) ,其中一条线是上述两个角之间的线,邻接第一个三角形,另外两个是连续的 只要在 不超过斜接长度的情况下相交即可,只要两条连接线的外边缘的长度相等即可。 - - 斜接长度是从连接发生点到连接外部线边缘的交点的距离。 斜接极限比是斜接长度与 线宽一半的最大允许比率。 如果斜接长度会导致超出斜接限制比率(由样式 `miterLimit`属性设置),则不得添加第二个三角形。 - - 无论路径在路径中的方向如何,新创建的路径中的子路径都必须顺时针缠绕。 - -10. 返回新创建的路径。 - -## 文本样式 - -> NOTE - -> context.[font](#font) [ = value ] -返回当前字体设置。 -可以设置更改字体。语法与 CSS [font](https://developer.mozilla.org/zh-CN/docs/Web/CSS/font) 属性的语法相同。无法解析为 CSS 字体值的值将被忽略。 -相对关键字和长度值是相对于 canvas 元素的字体计算的。 -默认值`10px sans-serif`。 - -> context.[textAlign](#textAlign) [ = value ] -返回当前的文本对齐设置。 -可以设置,更改对齐方式。可能的值为“`start`”,“`end`”,“`left`”,“`right`”和“`center`”。其他值将被忽略。默认值为“`start`”。 - -> context.[textBaseline](#textBaseline) [ = value ] -返回当前基线对齐设置。 -可以设置,以更改基线对齐方式。可能的值 "`top`", "`hanging`", "`middle`", "`alphabetic`", "`ideographic`", or "`bottom`",。其他值将被忽略。默认为“`alphabetic`”。 - -设置`font`时,必须以与CSS的'font'属性相同的方式解析字体(但不支持与属性无关的样式表语法,例如'inherit'),并且必须将生成的字体分配给上下文, '`line-height`'组件被强制为'`normal`','`font-size`'组件被转换为CSS像素,并且系统字体被计算为显式值。 如果新值在语法上不正确(包括使用与属性无关的样式表语法,如“inherit”或“initial”),则必须忽略它,而无需分配新的字体值。 - -使用字体时,必须在字体样式源节点`font style source node's`的样式表的上下文中解释字体名称;因此,一旦加载,使用`@font-face`嵌入的,对该元素可见的任何字体都必须可用。 - -用户代理只能使用矢量字体;如果用户代理使用位图字体,则转换可能会使字体看起来非常难看。 - -获取时,`font`属性必须返回上下文当前字体的序列化形式(不包含“line-height”组件)。 - -`textBaseline`属性的允许关键字对应于字体中的对齐点: - -![](./assets/baselines.png) - -## 建立路径 - -每个实现 [CanvasPathMethods](https://www.w3.org/TR/2dcontext/#canvaspathmethods) 接口的对象都有一个路径。路径具有零个或多个子路径的集合。每个子路径包含一个或多个点的集合,这些点由直线或曲线连接,并有指示子路径是否闭合的标志。闭合子路径是通过直线将子路径的最后一点连接到子路径的第一点的路径。绘制路径时,少于两个点的子路径将被忽略。 - -创建实现 CanvasPathMethods 接口的对象时,其路径必须初始化为零个子路径。 - -> NOTE - -> context.[moveTo](#moveTo)(x, y) - 用给定的点创建一个新的子路径。 - -> context.[closePath](#closePath)() - 将当前子路径标记为已关闭,并以与新关闭的子路径的起点和终点相同的点开始一个新的子路径。 - -> context.[lineTo](#lineTo)(x, y) - 将给定点添加到当前子路径,该子路径通过一条直线连接到前一个子路径。 - -> context.[quadraticCurveTo](#quadraticCurveTo)(cpx, cpy, x, y) - 将给定点添加到当前子路径,该子路径通过具有给定控制点的二次Bézier曲线与上一个子路径连接。 - -> context.[bezierCurveTo](#bezierCurveTo)(cp1x, cp1y, cp2x, cp2y, x, y) - 将给定点添加到当前子路径,该子路径通过带有给定控制点的三次贝塞尔曲线与前一条路径连接。 - -> context.[arcTo](#arcTo)(x1, y1, x2, y2, radius) - 将具有给定控制点和半径的圆弧添加到当前子路径,并通过一条直线连接到上一个点 - 如果给定的半径为负数,则抛出`IndexSizeError`异常。 - -> context.[arc](#arc)(x, y, radius, startAngle, endAngle [, counterclockwise(逆时针) ]) - 将点添加到子路径,以便将由自变量描述的圆的圆周描述的弧从给定的起始角度开始,以给定的终止角度终止,并沿给定方向(默认为顺时针)添加到 通过一条直线连接到上一点的路径。 - 从正x轴顺时针以弧度为单位,对应此圆的圆周的`startAngle`和`endAngle`的点。 - 如果给定的半径为负数,则抛出`IndexSizeError`异常。 - -> context.[rect](#rect)(x, y, w, h) - 向该路径添加一个新的闭合子路径,代表给定的矩形。 - - ![](./assets/arc1.png) - - - -## 变换(Transformations) - -每个`CanvasRenderingContext2D`对象都有一个当前的转换矩阵,以及操作方法(在本节中介绍)。创建`CanvasRenderingContext2D`对象时,必须将其变换矩阵初始化为恒等变换。 - -当创建当前路径时,转换矩阵将应用于坐标,以及在`CanvasRenderingContext2D`对象上绘制文本,形状和路径时。 - -转换必须以相反的顺序执行。 - -> NOTE: -context.[scale](#scale)(x, y) -更改变换矩阵以应用具有给定特征的缩放变换。 -context.[rotate](#rotate)(angle) -更改变换矩阵以应用具有给定特征的旋转变换。角度以弧度为单位,顺时针方向。 -context.[translate](#translate)(x, y) -更改变换矩阵以应用具有给定特征的平移变换。 -context.[transform](#transform)(a, b, c, d, e, f) -如下所述,更改变换矩阵以应用由参数指定的矩阵。 -用将当前变换矩阵与以下描述的矩阵相乘的结果来替换当前变换矩阵: -context.[setTransform](#setTransform)(a, b, c, d, e, f) -如下所述将转换矩阵更改为参数指定的矩阵。 -将当前变换重置为单位矩阵,然后使用相同的参数调用`transform(a,b,c,d,e,f)`方法。 - -![](./assets/transform.png) - - - -## 2D渲染上下文的图像源 - -此联合类型允许实现以下任何接口的对象用作图像源: - -* [HTMLImageElement](https://html.spec.whatwg.org/multipage/embedded-content.html#htmlimageelement)([img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) elements) - -* [HTMLVideoElement](https://html.spec.whatwg.org/multipage/embedded-content.html#htmlvideoelement)([video](https://html.spec.whatwg.org/multipage/embedded-content.html#the-video-element) elements) - -* [HTMLCanvasElement](https://html.spec.whatwg.org/multipage/embedded-content.html#htmlcanvaselement)([canvas](https://html.spec.whatwg.org/multipage/embedded-content.html#the-canvas-element) elements) - -当需要用户代理检查 image 参数的可用性时,其中 image 是 [CanvasImageSource](https://www.w3.org/TR/2dcontext/#canvasimagesource) 对象,则用户代理必须运行以下步骤,这些步骤返回好,坏或中止: - -1. 如果 _image_ 参数是处于断开 [broken](https://html.spec.whatwg.org/multipage/images.html#img-error) 状态的`HTMLImageElement`对象,则引发 [InvalidStateError](https://www.w3.org/TR/WebIDL-1/#invalidstateerror) 异常,返回 _aborted_,然后终止这些步骤。 - -2. 如果 _image_ 参数是无法完全解码 [fully decodable](https://html.spec.whatwg.org/multipage/images.html#img-good) 的`HTMLImageElement`对象,或者,如果 _image_ 参数是一个 [readyState](https://html.spec.whatwg.org/multipage/media.html#dom-media-readystate) 属性为`HAVE_NOTHING`或`HAVE_METADATA`的`HTMLVideoElement`对象,则返回 _bad_ 并中止这些步骤。 - -3. 如果 _image_ 参数是一个`HTMLImageElement`对象,其固有宽度或固有高度(或两者)等于零,然后返回 _bad_ 并中止这些步骤。 - -4. 如果 _image_ 参数是一个`HTMLCanvasElement`对象,其水平尺寸或垂直尺寸等于零,然后返回 _bad_ 并中止这些步骤。 - -5. 返回 _good_。 - -当`CanvasImageSource`对象表示`HTMLImageElement`时,必须将元素的图像用作源图像。 - -具体来说,当`CanvasImageSource`对象表示`HTMLImageElement`中的动画图像时,用户代理必须使用动画的默认图像(当不支持或禁用动画时,将使用格式定义的图像),如果没有此类图像,则为`CanvasRenderingContext2D API`渲染图像时的第一帧。 - -当`CanvasImageSource`对象表示`HTMLVideoElement`时,为`CanvasRenderingContext2D API`渲染图像时,在调用带有参数的方法时,当前回放位置处的帧必须用作源图像。并且源图像的尺寸必须是媒体资源的固有宽度和固有高度(即在应用任何长宽比校正之后)。 - -当`CanvasImageSource`对象表示`HTMLCanvasElement`时,必须将元素的位图用作源图像。 - -**The image argument is not origin-clean** 如果它是一个`HTMLImageElement`或`HTMLVideoElement`,其起源 [origin](https://html.spec.whatwg.org/multipage/browsers.html#origin-0) 与输入设置对象 [entry settings object](https://html.spec.whatwg.org/multipage/webappapis.html#entry-settings-object) 指定的起源不同,或者它是一个`HTMLCanvasElement`,其位图的`origin-clean`标志为`false`,或者它是一个`CanvasRenderingContext2D`对象,其位图的`origin-clean`标志为`false`。 - -## 填充和描边样式 - -> NOTE: - -> context.[fillStyle](#fillStyle) [ = value ] -返回用于填充形状的当前样式。 -可以设置,更改填充样式。 -样式可以是包含 CSS 颜色的字符串,也可以是 [CanvasGradient](https://www.w3.org/TR/2dcontext/#canvasgradient) 或[CanvasPattern](https://www.w3.org/TR/2dcontext/#canvaspattern) 对象。无效的值将被忽略。 - -> context.[strokeStyle](#strokeStyle) [ = value ] -返回用于描边形状的当前样式。 -可以设置,以更改描边样式。 -样式可以是包含 CSS 颜色的字符串,也可以是 [CanvasGradient](https://www.w3.org/TR/2dcontext/#canvasgradient) 或[CanvasPattern](https://www.w3.org/TR/2dcontext/#canvaspattern) 对象。无效的值将被忽略。 - - -如果该值是一个字符串但不能解析为`CSS `值,或者既不是字符串,也不是`CanvasGradient`或`CanvasPattern`,则必须将其忽略,并且该属性必须保留其先前的值。如果新值是标记为 [not origin-clean](https://www.w3.org/TR/2dcontext/#concept-canvas-pattern-not-origin-clean) 的`CanvasPattern`对象,则位图的`origin-clean`标志必须设置为`false`。 - -如果将其设置为`CanvasPattern`或`CanvasGradient`对象,则该赋值是动态的的,这意味着赋值后对该对象所做的更改确实会影响后续的描边或填充形状。 - -当创建上下文时, `fillStyle`和`strokeStyle`属性初始化为字符串`#000000`。 - -当值是颜色时,在画布上绘制时,它一定不受变换矩阵的影响。 - -____ - -有两种类型的渐变,`线性渐变`和`径向渐变`,均由 [CanvasGradient](https://www.w3.org/TR/2dcontext/#canvasgradient) 接口实现。 - -创建渐变后(请参见下文),`stop`将沿着它去定义颜色如何沿渐变分布。每个停靠点的渐变颜色是为此停靠点指定的颜色。在每个这样的 stop 之间,必须在 RGBA 空间上线性内插颜色和 alpha 分量,而无需预先乘以 alpha 值即可找到要在该偏移量处使用的颜色。在第一个 stop 之前,颜色必须是第一个 stop 的颜色。最后一站之后,颜色必须是最后一站的颜色。没有停靠点时,渐变为透明黑色。 - -> CanvasGradient: - -> gradient.[addColorStop](#addColorStop)(offset, color) -将具有给定颜色的色标添加到给定偏移处的渐变中。0.0是渐变一端的偏移,1.0是另一端的偏移。 -如果偏移量超出范围,则抛出`IndexSizeError`异常。如果无法解析颜色,则引发`SyntaxError`异常。 - -> gradient = context.[createLinearGradient](#createLinearGradient)(x0, y0, x1, y1) -返回一个`CanvasGradient`对象,该对象表示一个线性渐变,该渐变沿着参数所表示的坐标所给出的线进行绘制。 - -> gradient = context.[createRadialGradient](#createRadialGradient)(x0, y0, r0, x1, y1, r1) -返回一个`CanvasGradient`对象,该对象表示一个径向渐变,该渐变沿自变量表示的圆所给定的圆锥形绘制。 -如果两个半径之一为负,则抛出`IndexSizeError`异常。 - -`createRadialGradient(x0,y0,r0,x1,y1,r1)`方法采用六个参数,前三个代表圆心为(x0,y0)和半径为 r0 的起始圆,最后三个代表圆心为(x1,y1)和半径r1 的终点圆。这些值以坐标空间单位为单位。如果 r0 或 r1 均为负,则必须抛出`IndexSizeError`异常。否则,该方法必须返回以两个指定的圆初始化的径向`CanvasGradient`。 - -必须按照以下步骤绘制径向渐变: - -1. 如果`x0 = x1`且`y0 = y1`且`r0 = r1`,则径向渐变不得绘制任何内容。终止这些步骤。 -2. 令`x(ω) = (x1 - x0)ω + x0` - 令`y(ω) = (y1 - y0)ω + y0` - 令`r(ω) = (r1 - r0)ω + r0` - 令 ω 处的颜色为渐变上该位置处的颜色(颜色来自上述内插和外推)。 -3. 对于所有 ω 值,其中`r(ω)> 0`,从最接近正无穷大的 ω 值开始,到最接近负无穷大的 ω 值结束,在位置`(x(w),y(w))`绘制半径为`r(ω)`的圆的圆周的颜色为 ω,但只能在此步骤中用于此渐变渲染的画布上尚未被较早的圆圈绘制的部分上绘制。 - -然后,在渲染时,必须按照当前变换矩阵的描述对所得的径向渐变进行变换。 - -仅在相关的描边或填充效果要求绘制渐变时,才必须绘制渐变。 - -_____ - -模式`Patterns`由实现不透明 [CanvasPattern](https://www.w3.org/TR/2dcontext/#canvaspattern) 接口的对象表示。 - -> NOTE: -pattern = context.[createPattern](#createPattern)(image, repetition) -返回一个 [CanvasPattern](https://www.w3.org/TR/2dcontext/#canvaspattern) 对象,该对象使用给定的图像并在重复参数`repetition`给出的方向上重复。 -允许的重复值是`repeat`(两个方向),`repeat-x`(仅水平),`repeat-y`(仅垂直)和`no-repeat`(都不是)。如果重复参数为空,则使用重复值。 -如果图像没有图像数据,则抛出`InvalidStateError`异常。如果第二个参数不是允许的值之一,则抛出`SyntaxError`异常。如果图像尚未完全解码,则该方法返回`null`。 - -## 在画布上绘制矩形 - -## 在画布上绘制文字 -## 在画布上绘制路径 -## 在画布上绘制图像 -## 热区 -## 像素操作 -## 合成 -## 阴影 -## 绘制模型 -## 最佳实践 -## 例子 - -## 参考 - -[canvasapi](https://www.canvasapi.cn/) \ No newline at end of file