From 3d13292806bcb1d1cdb5dfcb1472c51098268512 Mon Sep 17 00:00:00 2001 From: Ryan Oldenburg Date: Mon, 25 Jul 2022 21:00:30 -0500 Subject: [PATCH 1/3] delete mask ref object type --- README.md | 9 +- bindings/bindings.nim | 33 -- examples/blur.nim | 4 +- examples/blur.png | Bin 90460 -> 93366 bytes examples/gradient.png | Bin 10727 -> 9489 bytes examples/heart.png | Bin 4758 -> 3713 bytes examples/image_tiled.png | Bin 40415 -> 40535 bytes examples/line.png | Bin 2494 -> 1374 bytes examples/masking.nim | 7 +- examples/masking.png | Bin 6062 -> 4876 bytes examples/rounded_rectangle.png | Bin 2213 -> 1719 bytes examples/shadow.png | Bin 9463 -> 9735 bytes examples/square.png | Bin 914 -> 629 bytes examples/text.png | Bin 20970 -> 17715 bytes examples/text_spans.png | Bin 18505 -> 15593 bytes examples/tiger.png | Bin 42889 -> 41395 bytes src/pixie.nim | 44 +-- src/pixie/blends.nim | 153 -------- src/pixie/common.nim | 15 - src/pixie/contexts.nim | 19 +- src/pixie/fileformats/gif.nim | 2 +- src/pixie/fileformats/jpeg.nim | 133 ++++--- src/pixie/fileformats/png.nim | 9 - src/pixie/fonts.nim | 40 +- src/pixie/images.nim | 525 ++++++++------------------ src/pixie/internal.nim | 9 +- src/pixie/masks.nim | 319 ---------------- src/pixie/paths.nim | 308 +-------------- src/pixie/simd.nim | 4 +- src/pixie/simd/neon.nim | 106 +----- src/pixie/simd/sse2.nim | 131 +------ tests/all.nim | 1 - tests/bench_fonts.nim | 3 - tests/bench_images.nim | 27 -- tests/bench_images_draw.nim | 11 - tests/bench_images_draw_correct.nim | 6 +- tests/bench_jpeg.nim | 2 +- tests/bench_masks.nim | 71 ---- tests/bench_paths.nim | 114 ++---- tests/fonts/masters/mask_fill.png | Bin 662 -> 0 bytes tests/fonts/masters/mask_stroke.png | Bin 3262 -> 0 bytes tests/fonts/svg_changa.png | Bin 2291 -> 2880 bytes tests/fonts/svg_dejavu.png | Bin 2384 -> 3056 bytes tests/fonts/svg_ibm.png | Bin 1227 -> 1707 bytes tests/fonts/svg_moon.png | Bin 2527 -> 3285 bytes tests/fonts/svg_ubuntu.png | Bin 1830 -> 2318 bytes tests/images/mask2image.png | Bin 868 -> 0 bytes tests/images/rotate0.png | Bin 9847 -> 6826 bytes tests/masks/circleMask.png | Bin 1679 -> 0 bytes tests/masks/circleMaskSharpened.png | Bin 555 -> 0 bytes tests/masks/drawEllipse.png | Bin 859 -> 0 bytes tests/masks/drawPolygon.png | Bin 1128 -> 0 bytes tests/masks/drawPolygonMagnified.png | Bin 1726 -> 0 bytes tests/masks/drawRect.png | Bin 329 -> 0 bytes tests/masks/drawRoundedRect.png | Bin 732 -> 0 bytes tests/masks/drawSegment.png | Bin 693 -> 0 bytes tests/masks/imageMaskedMask.png | Bin 1223 -> 0 bytes tests/masks/maskMagnified.png | Bin 590 -> 0 bytes tests/masks/maskMinified.png | Bin 353 -> 0 bytes tests/masks/maskedMask.png | Bin 1222 -> 0 bytes tests/masks/minifiedBlur.png | Bin 2397 -> 0 bytes tests/masks/negativeSpread.png | Bin 329 -> 0 bytes tests/masks/spread.png | Bin 324 -> 0 bytes tests/masks/strokeEllipse.png | Bin 1498 -> 0 bytes tests/masks/strokePolygon.png | Bin 1929 -> 0 bytes tests/masks/strokeRect.png | Bin 348 -> 0 bytes tests/masks/strokeRoundedRect.png | Bin 1267 -> 0 bytes tests/paths/maskRectExcludeMask.png | Bin 356 -> 0 bytes tests/paths/maskRectExcludeMaskAA.png | Bin 383 -> 0 bytes tests/paths/maskRectMask.png | Bin 328 -> 0 bytes tests/paths/maskRectMaskAA.png | Bin 341 -> 0 bytes tests/paths/maskStrokeRectMask.png | Bin 347 -> 0 bytes tests/paths/pathRectangleMask.png | Bin 326 -> 0 bytes tests/paths/pathStroke1BigMask.png | Bin 627 -> 0 bytes tests/paths/polygon3.png | Bin 980 -> 930 bytes tests/paths/polygon4.png | Bin 657 -> 653 bytes tests/paths/polygon5.png | Bin 1158 -> 1150 bytes tests/paths/polygon6.png | Bin 1128 -> 1111 bytes tests/paths/polygon7.png | Bin 1252 -> 1186 bytes tests/paths/polygon8.png | Bin 1422 -> 1374 bytes tests/test_fonts.nim | 48 +-- tests/test_images.nim | 26 -- tests/test_masks.nim | 217 ----------- tests/test_paths.nim | 81 +--- tests/xrays.nim | 5 +- 85 files changed, 351 insertions(+), 2131 deletions(-) delete mode 100644 src/pixie/masks.nim delete mode 100644 tests/bench_masks.nim delete mode 100644 tests/fonts/masters/mask_fill.png delete mode 100644 tests/fonts/masters/mask_stroke.png delete mode 100644 tests/images/mask2image.png delete mode 100644 tests/masks/circleMask.png delete mode 100644 tests/masks/circleMaskSharpened.png delete mode 100644 tests/masks/drawEllipse.png delete mode 100644 tests/masks/drawPolygon.png delete mode 100644 tests/masks/drawPolygonMagnified.png delete mode 100644 tests/masks/drawRect.png delete mode 100644 tests/masks/drawRoundedRect.png delete mode 100644 tests/masks/drawSegment.png delete mode 100644 tests/masks/imageMaskedMask.png delete mode 100644 tests/masks/maskMagnified.png delete mode 100644 tests/masks/maskMinified.png delete mode 100644 tests/masks/maskedMask.png delete mode 100644 tests/masks/minifiedBlur.png delete mode 100644 tests/masks/negativeSpread.png delete mode 100644 tests/masks/spread.png delete mode 100644 tests/masks/strokeEllipse.png delete mode 100644 tests/masks/strokePolygon.png delete mode 100644 tests/masks/strokeRect.png delete mode 100644 tests/masks/strokeRoundedRect.png delete mode 100644 tests/paths/maskRectExcludeMask.png delete mode 100644 tests/paths/maskRectExcludeMaskAA.png delete mode 100644 tests/paths/maskRectMask.png delete mode 100644 tests/paths/maskRectMaskAA.png delete mode 100644 tests/paths/maskStrokeRectMask.png delete mode 100644 tests/paths/pathRectangleMask.png delete mode 100644 tests/paths/pathStroke1BigMask.png delete mode 100644 tests/test_masks.nim diff --git a/README.md b/README.md index a85598b..d5128be 100644 --- a/README.md +++ b/README.md @@ -223,9 +223,10 @@ mask.fillPath( Q 180 120 100 180 Q 20 120 20 60 z - """ + """, + color(1, 1, 1, 1) ) -lines.draw(mask) +lines.draw(mask, blendMode = MaskBlend) image.draw(lines) ``` ![example output](examples/masking.png) @@ -303,8 +304,8 @@ nim c -r [examples/blur.nim](examples/blur.nim) let path = newPath() path.polygon(vec2(100, 100), 70, sides = 6) -let mask = newMask(200, 200) -mask.fillPath(path) +let mask = newImage(200, 200) +mask.fillPath(path, color(1, 1, 1, 1)) blur.blur(20) blur.draw(mask, blendMode = MaskBlend) diff --git a/bindings/bindings.nim b/bindings/bindings.nim index 8b18019..7ad38fd 100644 --- a/bindings/bindings.nim +++ b/bindings/bindings.nim @@ -125,12 +125,10 @@ exportRefObject Image: applyOpacity(Image, float32) invert(Image) blur(Image, float32, Color) - newMask(Image) resize(Image, int, int) shadow(Image, Vec2, float32, float32, Color) superImage draw(Image, Image, Mat3, BlendMode) - draw(Image, Mask, Mat3, BlendMode) fillGradient fillText(Image, Font, string, Mat3, Vec2, HorizontalAlignment, VerticalAlignment) fillText(Image, Arrangement, Mat3) @@ -140,36 +138,6 @@ exportRefObject Image: strokePath(Image, Path, Paint, Mat3, float32, LineCap, LineJoin, float32, seq[float32]) newContext(Image) -exportRefObject Mask: - fields: - width - height - constructor: - newMask(int, int) - procs: - writeFile(Mask, string) - copy(Mask) - getValue - setValue - fill(Mask, uint8) - minifyBy2(Mask, int) - magnifyBy2(Mask, int) - spread - ceil(Mask) - newImage(Mask) - applyOpacity(Mask, float32) - invert(Mask) - blur(Mask, float32, uint8) - resize(Mask, int, int) - draw(Mask, Mask, Mat3, BlendMode) - draw(Mask, Image, Mat3, BlendMode) - fillText(Mask, Font, string, Mat3, Vec2, HorizontalAlignment, VerticalAlignment) - fillText(Mask, Arrangement, Mat3) - strokeText(Mask, Font, string, Mat3, float32, Vec2, HorizontalAlignment, VerticalAlignment, LineCap, LineJoin, float32, seq[float32]) - strokeText(Mask, Arrangement, Mat3, float32, LineCap, LineJoin, float32, seq[float32]) - fillPath(Mask, Path, Mat3, WindingRule) - strokePath(Mask, Path, Mat3, float32, LineCap, LineJoin, float32, seq[float32]) - exportRefObject Paint: fields: kind @@ -320,7 +288,6 @@ exportProcs: decodeImageDimensions readImage readImageDimensions - readmask readTypeface readFont parsePath diff --git a/examples/blur.nim b/examples/blur.nim index 9de0ea0..589e41b 100644 --- a/examples/blur.nim +++ b/examples/blur.nim @@ -10,8 +10,8 @@ image.fill(rgba(255, 255, 255, 255)) let path = newPath() path.polygon(vec2(100, 100), 70, sides = 6) -let mask = newMask(200, 200) -mask.fillPath(path) +let mask = newImage(200, 200) +mask.fillPath(path, color(1, 1, 1, 1)) blur.blur(20) blur.draw(mask, blendMode = MaskBlend) diff --git a/examples/blur.png b/examples/blur.png index cc5f750e5215dd4da0842fe4e213f5b003e7ee9c..399853602320d80f16109d6c2e67dbd8ce89e3cb 100644 GIT binary patch literal 93366 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

7lcKE~*<`xh0 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 literal 10727 zcmcI~c{J4R|F@lFD@*p#T|~CVGPr3_N!_v}S+d2*l96yX$c$~W#4sfLS}5Jww}=KY zGqy1;!WbcgQH>ZoV|hNhzu)Kl&hz~Dobw!qImdji*L7X*>-~OTulMWyd2C~4F32y< z&&I|kc=gI9Ti~;zUBt$wQhoK3sa+WRV&V51+0h_;vLW6~OwsnJVtW1Q zf#auCqpS4mX;;!hjvzsZr#3NZ!)Z#ffmkN-2VQO)Qr3TjPh$dQU+3) zpVGJ?GdqKSam1E3nRmQGhC{kn`C>ptzPRZ5wercs^6!hE)&C~XGADp%E z!ec~xOatEL;0BJ^aLR{sHuI)*Z7`|Uw}mXbl10iq6g02EqofnOsc*l)KP!=LWjN*w z2LCFsL@01qIp}z{qd&0OGW_~n5IcrTIqx>|ET6_s7skaq2~V4S8v{4ci}fOYwayo2 zb>s%j9oxfAb0?mV%8Mh;m|+&*+_9Jv&*JfaZ8|nq(=pk;zWRgkT9TWTih(B+gIu90 zMAd)fvy~|CBK#23cGHD3FO790nD}|__zMzaLdTpcA2B{8p)Re~3HnJ--W-ef=khN# z4I7x(&vAI*mg31YFP2ly3YO;d%6=L1SdDQ?@l0Y-81RNGzfFKAS)2|_)MpOcGQ zEjS;M7m|60t7hzA-QC-mMd`oV*g5t680wk25R&PW7{1;9x&ZpMfcKNKY^1tMR)eX& z=?j&xrg@QsLM~W(==R{_wGfj*Yg$MSF%v9wa$~Wf+<@Snzqc7hEi(v9<%r6k4iMSn zD|UF6Ekg8yYDTxWF^Ar_F^?C0&~!)N&)xXqkUvm;)?3A}kBUMPFqT3xVdj*MDL8$| zmVyyZT|d|^&KC{roYH8dbkgU|Mg-)cSj&qck*)rtEA73z90Okz#H1Y@!puApOm!a( z6KkK5??CHLE`W&CN|Fbs!@DrW_U(Ch_#`*lqUm5G5E8CobVfv6c|INQ&Cb1aeI@f^ ztJ>f`{d7@xwPM$b4j<@JP-dJUerSbT*;#rucS_z)KYi+ z%Hu)*fkexdajZ6b+7>4x=HK8Gh0P8o97T&AE(}=+$?H&?tM06lk63j^t(DFr(Zo1~ zvo-=@&b^)}6I1h^oK0yY~@*>vG?F=gI%b+0;&tyl@qL00Y}EY@?F&w+3AmunM? zW?y5fZ%@bi5G%r{Ix;k1t4L29Y|J~pPp4h_%dR%k=-g!1(gChjkVhsK!rjjvc+{y< zFd)ht6Jgw70iN?cuEG2H^y}y^ej--A4~Cw_F4`h)%l-%F=WWecm%?vpF(FS*E@u?y zyjza7EHa!9WDDSb$~h@f@5m#5@6vyO%HW1YQ)dfWG;yZN64mxh-q$v)yAUGrdEs_X ziM*)csoojrNK-s$Aen>s8ELO2+(O$h-Y@kN8sSCV{IHeS+)@&ok{Gn)gHUi`m>a6n(bd?+aO-0!~RNDxnLr@ z$}%KzUv1g!X#3P1)hUMpeHCxF@*Vb9la0 zySV96z&IN%=Q_VHHC3%Wx3kGPW>4td%(ZUe*FF7PZ5{r&>7EcSWiD5Koy&>)IwdCO zpKETlFr0?T>4N%pbQ{$K!8l9vR9OS9VNVt4-Y|otN2+!Kw;{vL-dPF}#u_7=dBA|r zdaOMbG^GjsZyy@f`#%*_<`f`RoC70mn*G~4hNFqu!U#^Rg&!kWtWa4Clz(4EL}u#?-+( z%D2e#3ZUEQ3KK9^ZG?v({0E_3)9~zqC`^FMO`A1i)=+3jY7X>SQwC;miy$dQaT#*$ zT7Pz2f+Cx87)tiLUJtyb{_2PL|Qd!7mq#fo$3_Av3_|I_sIu2d%JYf z2Iqb_+culb71R9l>dH{zLtt0_-5eZ3_6&$I_R-~|v?NW3?@UfXSwpD;cXX2C6#XrH zj&&AWQ+Jq~KYywzCZ&XLPk%Ju9%X>`yBLL`c|0D1(MfDFjju{}8<+9C?ZuR&_3Oqj zYUGG__SN4kU*p9u3%(aJe%OdyPbwtn+pX>EG!r&%%3H%qf$U0n9wpySgKn2m=*9Va z%L(4u8dW-cSYaE!w{{;|{7Pm-|0f`n-WEFH(J?6a=$p)=fvo*6Sh>?Xu?qGpC?Oew z0eECI&^bYW_|LIbo1a%K{6C7g{F>|8J!9PZ)*y%1hR=o%@LPo)R~zP$NirP2<15RV zXbK!$k_m+0#`^weOI3Ohr$+(Lx8s4%*L%YH&hS$DY?^hFRYuDr?;TpSeK^EZE|Aup zAbDgSLJXcxJQDvUm7_l&!OC5q@1qqwl zRHBg>mLI7$jyepTuVJ+5;sk*y1(&WFEk(l@DQDe^v30=F*O%5KFn#3Uo)QpRxIvQX zlv`!asBX*S3E!TZm*eUo{>wN3G9?bs4o)W*uvqLh)NfP)Fy9B)Hh6H3F0jzF8!zpD zfjsH8w2!@N@-V;yydu^iSh>CC94st3Pc!Pum+^_*{)BjBeA#*oT&z*W#wroVYbJgS zwo-0_uoHo8iIj+x{E?QzF)SM94oO3G3qsa1D}e*cU)oi4L)ggNl!StQ16w%VK;(PF z5=}{68p#DC!mE+)paiO0ZI z(&WUI385G7wWajlmc*G_6}0R~h$5`)&-Hj@CI2=_c_a$|{186{Uz8b?vcP(v7uejF zY+-bXJ5u(LIW78`rib@tb5L>-c%-}xhaFe_;U1=8$R|UiygWUC=lUqP4EXqvx*e|^ znxZs~{=s3-5njURPHv3YJCCv@0mqN+jz-;B8Rb1> zmyZ7zPGgF~y#6KEolud;l9)DCiqq#$ClZTgXu!^Z3s+-~`7emg;0RA7Dq8qC2Yx4d zW@Q=2fc_vpW#kMXJw-|sV{_=IUGrw{M^uB6thWhf|-VQ4A|o=!c(Qu zf~D4#n$-DbyweH57i@eREJ|vP+BMs-JK#f(anj_JDdrAzIS7|Ovm5Fr%;~n#@Wmk-}ZmJEiBq3`wCh_!# z9Uu$FEtuO}11zmBK5NbmjsG39whD%46YDfU=i=SrBV|E^4U`N&+z(z78SZ zjO2{$;?>U^)g>?^`%`Tb;&13H<{X*1_|@4y(elpgT**%KK`O<^Kdk#l&Fu2 z(}|i{`x$>n>1i6m1)9aZFxkktG9zosb(F^VmQ6@4d)`Ov>b9DY4o{fOwE31KxA-?$ zZj~f|%&6}sQ;L)Q)*s4q76y?mF)Rw;%S#FcQ9Til$NW%7b}%IVq;RksP`x}W2BC_R zA^VNPJLTb>baveIBDAFC(V+b`ey`Gh<5=f-k7K^@cyPJ?nT7UbfkeQQtz%n<2Zr*q zZjT#Kwj7a%q47oqTkg`x^eK1Ou4WhG9E*L^X5w)qw<>4!w-;aIs%I%LXb)k(-T2#T znD;QWtY|0tKGr#%t;|u~hMsA&SbyVJu&Caz0G9ZQpI6~N#Z_6F@ME!Xu_G>tz)VfEoXCi#e%*tInG|5iE|qf;$$pUHcU zoSs{uB1HRSC1G|8J(3M{%X z=EDD&-aJ-P<`bQ@P=FS|1W7+yDi3MRE|mP9tT6wA*`-6Hjcpkn-fm5=MjYHC-AVK8 zBwoO5r<9F^w-o^o@qq$~8OntsJV^PbteE;OTZMN&O$75<0r@?_dYJNfptEu-%nket z1z#XO*v7<3C!80KndgLeQRT%_6LvMYF)@dUvZj;u+Hdt&7kU5pDg^Q2e1<_3spM9Y zgKXSRo0kR5CGslG#aLn*NIuP-h|M%j@!1IcVUlH3C=l!i=z91Tr=Z)w#1q+M>rpR5 zXmVYHLk82JX&b8H+`qbsm>12@iZ%fDFQ|MCyTIuw687)#Yo-z)LkZ!!mf)S&9e-|- zQ)2-$2=*kz$=9hpc=(`TUYb`2>5Wv4S)oz*45O4fLISi0`3soh`?GTsfbP1PtJb8Q2T+X6sWWya$&0#wCXtRY1N@tC^~YQ7dNd4ru;a zbiP<}700MB3dGm4K9Sk;cx&5CP9CX$ciC{2>e*vX=V=gBpJ=H&A9}Fot@qUncKdVs zDf3iJU2VX)*T#?6-VW6{uDA(h1jxz|N6teLy|8ky$!xhy;theeWQt>_kwO4xoMP{W z^luMy7qdu7JI_lnUP+`h2kiXh#RGI!G;;4j!_gBf^S%7Be<%lK8I-TT=))5?fMr$I zNNzN84YGd{5KC2{`U8AKl51hCto9`e10Sk(^>*LaB0m%Zb~T-0JvbQ^^)@uk>FC{& za4|P`0ujjJ6_r(z8#-JV-cNi<*V2Gwm1_;eB>hWe39Hh8)E@B*Y=plQ(A_5E8*TEN5eGHAH z>I>B%mgc3fu|YDk@iK#M$e=m7GCMvoHimY5(EYqR3@C{i^bV*Xp)2fhXMp1gK=OS!NwIICz}DobxJ&XJ)KyG z!)f+ILv}DA&%v65x0I2p-8-coyFA~7!&WUD8hmOZPk7L~ZJ#|29*nz~;!%Y`jbK-I zW#PS&DhRJE)tC$7wI@xqW7VuGt?RTjV8yMgseSXSL(Jvw-J7MJyFBa+WZosS7)`^^ zb*m2ttBD_5oOG(y-N$`M5Sxm_=mqPjeqsc@B?xBHe~4RZX-RxmaEXuj7B_#_{*{S0 z={mf;6}5tias7Gjg(mIRO1bM#uM*|MJN2Tk!?B;>w**p#Ch2QEo{>M**mtusy$-0* zgJnUIk;`4n2~Opns&jS)D8jksC4Is}LikE~B)svI@-=`@Z#3RId!fU=IH(+4E{na< z@6&oQ0Umttg`+lyhh3-7zs8lSP<}z`l=-o&k;M!j0miKa@VV3s%{!PY0@D#TR}L4i zLE=}>|Eznj2!&$!M*2~=TD7-p`fv2?A%p&1!jk~yE?1`~^Y=sHs&%M6dMmhx>VY?GZzuqRR*NdoCn|2Nr zdXtT(3MyHi3oswEvT$Ie0WdP$IwkWgud++@hN79Bv~$0vMfIAIeAEP-g=p@-P&)=3 zJZ&UH+h-*--SPCAkrJvTmAU$+#LRht^i_X8v26VSFiAUbftYva9ehaC zdTiDO5#xwN->;8kPseN)`jzz`V+hn7Z4$InP1{YTb}R$a7(1y9 z&j-?8OKuI>?hwN$+*BK1B7S%d-3$iEiv(}Oya{9!9m}h17gLhvcsfXuwvsSZHS!QS z-}OyAYBaX)Pr>&feuLqaIL`JdB2NIVv(eyW{+Xx2C90sVX10o#{KrWP#QqJM*y=y+ z*uG!=elB+N_?%s*;GiKGHuoz+#@Y9qV<8WFyDK2b?5&`?D=Ux!VN=vj)+Ep5CInz* zF`Mtyw{qURWRK&ru@-;qz|h#yZLbQ4&IhbaZf@M2Z>d;a48-nKbsYz!$gzd#E#_tq41g4i?UR^|SYHmJDEeY_IL-JzTxk|Q{Y%{WH2qcBi^u}Fu@$(cpOwR~ zO$E<>#C)FJ8X^{k)@RytzaCYHRu!F?V^MrYAxCV2!o`u-niY)y5ut6#Z>3AkNG^rO zyl1bdc+dP1K=_uNYpqr~AGRp%(C=g5c?)D1JU)@4m$x^xR5{+pd#K`~nJL}Ps<%2% z6dqDd^6Ol3LtVU1vnWJM;akfHU;hx8Ow1)T*ZxfJ>$zrKzXw34lb2~jd zY2i||34qQT3mMyPOJ=+GFHHq*R0XOtUi3gJBhj^WVXAXh?$2JE&`C#Ke-0kqhX`-` zg8qqa*AjM50tx`QeZ9R`v%M^OiTKTYg9K>j)LB~eO~Ma7zUhPn>jKB^aD|hqw><%K z90O~12ybF9*|-nJ95PAtW;b+7gh0h=Pjbg5t(5oFnE?{2bn*^(t7!JGH9&75<%bS_ zwx-VNg=Vu2d{)@y1G^8LNA3JjQW1Ym?z@Lxxt_qoed_QE*u{uRF|R#-93&8gKa{s! zvbFSJ)OIMW0o)@GC@!k*A0=EKs9B@gszX;bg1;Z11`+bR6^9#BE z2=KH42dXNq8^9Mrwl1dWYJ2jl4XG$A{I774?f| z$bF&LJ|omI!fxfz0zmr%+qD!Kx_0pXw!B&(nhk0+YdjUc>Ds*yF$9*`*@{Oo_8R#6(c*tS6I%hGaaek#dWkrI`n_aOV|3)8&Dj=jP*Wb_9IuD{=Avq>j7FJ2owi^+BSnu8{*MgA<=wsfCED0;LSC3H zChs4Xf&dw(_Kjd*TE#gPy0e>KrgkkGG^29W8`m6V1UZ0?km18&Mk#hVp3{(0N^)o~ zn^iDjJ$c_x*lB@_Y00l+z}vPdnIPSH>TY$*O70};4JEY0KZEGT>1ZhUeyHr~{?fsq zhHKuv&susH4;w7v15W{}DpJp8!;d8$MCq&3>ZJcP%{vAbc`AlM$rI4ebW9@lr<@<@;}a zP)m`AecX({-2a-hTgbc1GRCL;cUpEe?f~{^!;&R?J(%wM<&)!*olf*6vM{9~`=4~ujkpr1%6PB`1#av3vVevU45#lKI9_xy5O#mw21RoHWN(E8fXZGDJ= zm^aW~G}cH?Pk^2|h~dp68;@(P5K=WP0sUl07Q(fVHoJ{qPkiiT1qRY~3MBGG zQ#>Ku9dWfaBSzKU`AvP?h~h{fI$GU%5VvKP??Rbr=c?^CeQ_wKy&W%0T$csvGDsw- z{soARqU5eLp*!~d^B4Xk?A#OSJnt;aW3-B)%ne+shE90WIcvs5N?_^l84W-~V(Ksf zKcP<(FBcbhDpQ}zh=lVx(H##2Il`J~<3`2l%U=@a__Zn%+@BG0(>uN*fXEMN<=UOl{I!3F_%*M|owiCaX`m04~syo_aZ)Y1Ymo#?Dot+za|k zWu(O(V^++BD*dkIbI$yHFS!bx`nk2gNfH8$NVML&zXx3JvrjH+-1^GqVF1xzAdJv3uO;+PU7e5{Z%UV2d!*u^;3;v8xRJI zeIe;&%fiv`bXnI5!6z}oqDw8XeWho7)GI;FbM;}ent%kDpk9xIYuM~g^O9W2;-kPj zP%`?%GqZ)lqOC`Bp66wY%~kquwH`{FfQnnh*`JcI+so0xcO(5d<*MwD|Esli7tp&?OrwIV^4keh52O;cFIZaXx-(!x`EJ?uj z@52p^Nt|)-Z<^CJ|3N&4PBN1zCLF992i}{gR0i-t%XbGxL$M$|!-$P>rDu|?CmboT z$EF}+0yKUR1~dTg!W&y{iRwQmlI=e}9#=qh^{It6;8v|x4^G=g2dtSHy|M+<+Ff7q+k@icg6jj?q4?5!lEG*H=F{3A;uxwaxF zuYZ(jGJV0#O)@xgkiOs?xE^?1{Ol^wO3#!eMz|wh^vI)zmGtE6Bk^_>f?BFAZ}HEP z_LmSzf!AyoB2h~Nsr`oX2b#AB5(?0J&(@%n>8k`Mi7oy?yA4Uz z#~1)g`~$jG!xE|{+)X^>8KhTatZ9G|!wWQ{bqquA&B>jTfZ+J0s2O2p7tNOaZ#etCxfFkztsQ*|+8aX?3-sfgw+jGmj|vWXp`F(j}@d<3H%{er+Q~E^Wd; zrHPl8Kzeh=>bjK@T$XVDhz&-Q<%RT%;;0w19)m%TbLYnzdO6tl6RTX$JrZ?xxTp94n9f~I7?Y?*S zyp+4hU9{S9N79=dm9e8(i>~B>1ZcHwPQEa(D!gk)5?N0-AH)HT?ZH=$`oOnJE$Ute`}1i(SLR;J+@V4m zh@img*qfEoz;_UR_*=Ss1Ms%QP;p@1BVnnI^{R))UycKt){3_1a^H#tdh(Vx?w2P; zw4Jq=YckE^E{KrTzb)$NpvL|G=iSBs6Lr`4MV1eDk~|U#yuitJ)y(Qr^@ZE9{|k;C BM>PNd diff --git a/examples/heart.png b/examples/heart.png index 79ca8af2079ee8b2eaf14699362f84695499e757..25d0f6bb6ed6d2d99f168f6b57bbc4202ea2a46c 100644 GIT binary patch literal 3713 zcmbtXcQhOB*O%B^&Dx<_RBipDRwxzvrF7aWM(rA{5hQla7^P9GRa!-j+KreMR8ShD z#9k$4Td^W}eZS}TzUTe(J?H)7d7gWp&t2!a&$;K`Bnxw6b`~KP8X6jQ6Nus6^Rxe- z#l&#Ff3&JDqM_k{m>BBc4+U(`MyA?5#W3uxALbWEI-|Gea@}lgZ1ee>at-9-En1v< zo61up70aev=rT=bxFQyl%O>e|R)t#BLmR_o8FFOQB`5(rAP__EUZSOCCqmz{Gec57 z;qHo&Pidj1`iQ@&CmQYH;STTkeG-x7Jly0ld`xLyKitA;s^0UFl7xQZ%2bvGNhA=lu7_fa^D18NP2^K{>1`p=pyrfgX38s4eR31qnbqzPQ~=kb`mYAyJ*Xf zV+H(QJ~w@PX+V!dm8mS>bOXhWUn=Bu0&O?ql`>Q9p0%H8zX%Bw; z8J<=6UpkrAdEOo-ULvlW{L>f-7}=sL3cJ9Vup2d(^pnyjM2uK=I7FR1XujT5cg)dj z=7-+HcUT>>Lg)Sn7IOuI||jKJYQ z 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 literal 4758 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 diff --git a/examples/image_tiled.png b/examples/image_tiled.png index 9d5a7a4f64d595550476bc3ae37519cb55f9d344..5c955bd30cca67809013c1db39466fc288441810 100644 GIT binary patch literal 40535 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 literal 40415 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 a++A;~8jW(lvb_KB4@^T>y;{}g{r>=}=q|AU diff --git a/examples/line.png b/examples/line.png index 42eddfaeac8048b1cb3564988ef3b378cdaf67bb..6ebe0e6b505bc129bfd393242b1d9c9153557629 100644 GIT binary patch literal 1374 zcmb7^T~HHO6vuH{bi-#pl$k`R%OwedQ{qsR8Wk?EgiR1oEQ3P*Kv&v07PS^joIwmA z5)nvNief4@V-ji`(JF&N6_go8)GCctpnx`lw2W2@R;v+e@4oc4(}(@-f6kn9es}lb z8kVOe`*};eJv==8)HIcW-q*N?n2vaIRa1k9hnGxE#eYyZ?f3rFd})$ok8AFO#+vxc zfi1(WB~`0V+g8^^M@Oab=DY(1%P`!V%EuZXYPaTU}XZ!Pcs-|&e&Q`2p zg~C`dTpZVataG?X6L1b#bOqS!`PE^-;`zu^7s-X~n>@R(j8oER$A@If!$KgGWXg^2 zUoUc#>mtDGN8j5z$|J7h6QhTn<9Soq{h>veJ$w_kC@7#uZCa=-M4xG ztv-GHB^t;LD?$UE{%&sIy4xFZzuN~<XMma&&&0w@hj6T)n zh3SB>A;cJ9C`%_sRsxqNrmLo3nc-R>%n;IbwEd$Qx+*$C^F!;*rUk-1{*l=P*2*eFAQpQ?%j1Lgk z!4|-V@R$@Ju7)jg)nG z-Sa8tn=YgC#TreQ`GrsMh4eAkLfakfRNrMDBL)3mLRBc6%3~QwTqpgRJqH_?HjYYys61sL3( z_x=Q(_|8PVVM+j%{rL8VTP+flnnTF_0dB8>A^A+QC1+Y zq)1213e>RVAO-lhV&YMZDn(t9G25hA?(9+(;J3WD9>tu}Bot$oOEJrVcpxAi`SJ~L z?zhirJV6(n42%Zb5&wO)P0uov_Z@G0yWZ5klfP1V^j^)yp1XU8b6fpG1w=tXpaFh; z>Nt&e#wraI`J}NF#db*zilA>jti% z0EWcAdb~ zjFzGhr`Tak@L9HYf{aI(8Q0q|DJny;NF}xw1w;$BR$AC4^PGFLzm_F^o&3)C`+mRg z`_Ab-yeTPR&a5S~7!1aoL_yqU@|&1?&v=Xcyu3|&n!%V^k{B2Bxop~S4^NvWKVj?- zlFx7b=5b<8*v#{>94TXvaePn1s_pzAj-la8-GQgV_m443bN+~K8j- zs(m5PJpbxOGS4@5d!>oh`dnDe5q9C6NWL;@PH@sHc2?qh{izTlu_Sk)V#1 z{fT?M;n9Nv5yQeJs>>hh%Q=ya!}ulCn1v=vvzwW6Q(jSbMMhmi#5|$>Rm0vhK_q)>u=p5oR$?#f^i|zo5`}=EKO986gfy-4|z3nWO%4D_@0YDuj%g8&KiZ2 zV`0w-WHk>2w>0XLPd`{i+lUnQ;+W{?qhJ4C7&&gk0}8S4(uU4xp7nJ^%T-2NSipk_ zTG;n%M<{+>ts{WqugXjXucqoXjh10)J=?W6*SfO3PTB74_YEaX$<5xyrqM-O%rq6{ zE(xWgsnUm1ZjgLbF#ik3Nz%-w1a-WR635`; z9hBGy=eMjAZ>a*1z7Qqc@I**2Gd(+DvK$HKhG$@CGa?Fw&{Hwy<^YL9>k&~dgmT2# zc8ai;*>eQs8Wp2N6+D=APxuW>0Y%hC#0dw{yhV&DVF9Aj5T^jL$4W3I6}16zzD+@5 z%nYNlwM_X^P~NO9D4~ZNXE{;Kop=loop>6wn5<GHIx+EY2>BemqXk-&A*!c;Bx^SBvLLZ`nJ#c}cf=6&M zj|@tHL7lkm1%M3ssGv;=1QuLkn%oOtUktt^3Dz_hv~FY*q8^7u>kwm2p%4;~5EUiH zdP*VTk4%#kYk;b-TC;Tu1LlkuWW79 z7ymT%U*&qh3rm6L4tc_N%0LZ^Rel`vyMP}d%NqqCE7>r|0${9^tBTS9iED1*8EhcY zK(=B0ABu5y@s$-kZ+L1eX-^@)QQ>tNs_l0S7Mpv3uj5q)<@p;t*Y+4p2PCUcfCg#lL`f*i5RV&oaoTme4*m_2_$cxK diff --git a/examples/masking.nim b/examples/masking.nim index 535c10b..db9bf74 100644 --- a/examples/masking.nim +++ b/examples/masking.nim @@ -3,7 +3,7 @@ import pixie let image = newImage(200, 200) lines = newImage(200, 200) - mask = newMask(200, 200) + mask = newImage(200, 200) lines.fill(parseHtmlColor("#FC427B").rgba) image.fill(rgba(255, 255, 255, 255)) @@ -23,9 +23,10 @@ mask.fillPath( Q 180 120 100 180 Q 20 120 20 60 z - """ + """, + color(1, 1, 1, 1) ) -lines.draw(mask) +lines.draw(mask, blendMode = MaskBlend) image.draw(lines) image.writeFile("examples/masking.png") diff --git a/examples/masking.png b/examples/masking.png index e98964e8736d64923d21790e4128238faa06f59e..74c95075462bc9a651ef8fd11b18d31d50814438 100644 GIT binary patch literal 4876 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 M&UH+YmILX30R3GCy8r+H literal 6062 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 diff --git a/examples/rounded_rectangle.png b/examples/rounded_rectangle.png index a8bf4d1a841906ebe01e97e6a14715a943854e68..8b723685803b143f07439d2239ee06d51c26e3bf 100644 GIT binary patch literal 1719 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 literal 9463 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 DWiV@9 diff --git a/examples/square.png b/examples/square.png index 9d011d9a3a45742f7d5228055560d71c507ffd7d..388cbb6a23dae3f6088971b6a00e1d0f9a3dc326 100644 GIT binary patch literal 629 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 JdC&YP{ompy7W@DJ diff --git a/examples/text_spans.png b/examples/text_spans.png index dcd304c14f2b7343599c24c184fadbb44d04839a..81788a16a368f12e0d9176a199959f82860fb6cb 100644 GIT binary patch literal 15593 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 Iol`;+0J*`)VE_OC diff --git a/examples/tiger.png b/examples/tiger.png index 765c596045ae76c1cfcb3822a297aa6c61ba515c..c55514cae08523b053a10cd32e1671657441a6f8 100644 GIT binary patch literal 41395 zcmX6^Wl&pf(}pTiin|pkZpDiicZcBa!HNV4)>7Ol?!_e#+_ktetl5{F=Xuv_ z`a8`>8u_+m4$et`Zui|)_es%RUvc5J4!y^)uV`U^K2!(=OMMQ0;~M?}`99_^j>P+Q z9J1duK@>eSyg^d01cRmQUWK8#AwP=t9(N1peI70a?GO!xB;9A}c;tn$U&B8aa`gk#Oce|V0;Iz!Yy}Jvkt#ylYc&u8-k$C#>!BHuNZ7Pg9zz)r| z2c5B0Emw?8z&Y!<>p8&xc01Le-Y((n>};%tA~!Ly;P!l%+|9^)J%o(cE*{$T1Xjrw z(iu(VoIhNw<1_DhMYo`93`&j_Ig_=N0OKgYAixYR)y!M>n^Nx z9B`}?#v#D|D@5IRNnEzXBW^YxU=Ad-)RpiIWl+ts3ny=$dwyJdwm;h%W?^M@P@D-Q zMgDLnuU=jLeoH<3Z@m}PPpC_Rnj_$nv$&Rq(iHBw7YwC>i?K)uV8zXsiP9!*)f^qt z?>aA3OStchai!$_`qix$@+c9bW>DQA$y&$4+pf}lOqEzltg1K@wp(-%lBfyNf3|Bt zXPs#m>xaYEy zL8D_j&1>lRs#yX7qP|o~GyF{>+Kg*99jLcj+8?Cg@aUmK-r=oT{-!W&WZ*l?jT~r|d~D*_BZd&GIv1aCx>Pd8Ma_rX@GUie4OJ!eO^PMsQRJ~1 zQ(ru>(-;{YRjH75)X~$k8@P`fpb0u;L`xBWesDK-ALkva->zgtrFA1UUSc^ ziGGXU?8=n6?9ye-nCn*?Q6^8zX3~CRW>TzxJl2ohbCrfF)qdN_x`=Uswb|(+rI^NL za*{)EQeek|iFUy$CWgn_mU72u9y$GfSb6!W{amqTGT_cLXGUZsZ&to7lEv>1=u<Z?+QElxu^c;ne6mhd5WLH&27qf$hUMgu91-s^{`rD*~fs8!)vj)GKgMUihsg zM34nKyZd_tw2FP^gf}ZzT2OqKA`719bQ-Ig^F7DBXo_pv8>X&%XFpP2!`GmfYgl;# zNVOZuz++!AfKIbi)leL5W=CSwkRBvx?eHCqtpT7e0D^<`TsMzfIYZEJnBm3mAivEC zQE!i*)3k>TF;Ah2Ri=L1Lg@%kWHE%D3bH8%X zng2zn_=igs?#;qP)oIqM_WXi4F#|Qx%cP%)i7M_mmPbns3_Evp$OfYF3SXKf za!m8D zhEbXdpGg6L%Qvul%%6OJj);}|BsG+UNqFSuVVDc%c!1u?-54q0C=@oWsL=IVb9ayH!GJl3* znZWFIij_9dUN$6PNxisfXY1gJxsS?`wAEKLv}G=JG;)@GvGO2{{_yZ5hVCY-uq{@Z z8(`zz_Q`3aYHntx_VQ1XvQ%w;B$+-t5nq%iVm3#k6=W4eLrBV_Zg4c;n#JP&cxyP? zz*eWY&9_iGU|zR4Cdmxg2q8B4U%*Vz&OW2<&PD<+wA8 zGRaJKV3P*Ltf2)srWsS>!-dMV3Z1FbOBn}?O11KpwB}RxpbF`&Pv=Jl%?-+8xu*OO z8A?33P>o^Ia29G0_~zRvprOP|pYy}u+VhiFjhi_5!mhu+KYcp2wYw;Pg+2|(q-y^E ze!jx@<>lqks%sfi$;N>$FPk?4$MgNIy*^CLKHprb~@%P%tz zo0y1<-9U36UsKU>n&!9l+(*64?hyNTIwoC$#8Ka>DIK-vZm`T(Gcv1K#a4^WIV)h6 zT09Nhbw({kd^=0;Ghr*s_=6>gn$4doE4AKoA<*<{os;oNU2~t9S|uQ_yJbXqfD+!9 zA^-0%AdI;rixxOZMk|ZbtT|i0zWT)YAHqS6X|V4V@_)KgYCX@l++MxuI3`atBU*$~ zP%!4MRe1%D&+z3s�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

Lx9Q*F+=xag0Ib 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 diff --git a/src/pixie.nim b/src/pixie.nim index bb7ad28..f4a1004 100644 --- a/src/pixie.nim +++ b/src/pixie.nim @@ -1,10 +1,10 @@ import bumpy, chroma, flatty/binny, os, pixie/common, pixie/contexts, pixie/fileformats/bmp, pixie/fileformats/gif, pixie/fileformats/jpeg, pixie/fileformats/png, pixie/fileformats/ppm, pixie/fileformats/qoi, - pixie/fileformats/svg, pixie/fonts, pixie/images, pixie/internal, pixie/masks, pixie/paints, - pixie/paths, strutils, vmath + pixie/fileformats/svg, pixie/fonts, pixie/images, pixie/internal, + pixie/paints, pixie/paths, strutils, vmath -export bumpy, chroma, common, contexts, fonts, images, masks, paints, paths, vmath +export bumpy, chroma, common, contexts, fonts, images, paints, paths, vmath type FileFormat* = enum @@ -57,13 +57,6 @@ proc decodeImage*(data: string): Image {.raises: [PixieError].} = else: raise newException(PixieError, "Unsupported image file format") -proc decodeMask*(data: string): Mask {.raises: [PixieError].} = - ## Loads a mask from memory. - if data.len > 8 and data.readUint64(0) == cast[uint64](pngSignature): - newMask(decodePng(data).convertToImage()) - else: - raise newException(PixieError, "Unsupported mask file format") - proc readImageDimensions*( filePath: string ): ImageDimensions {.inline, raises: [PixieError].} = @@ -80,13 +73,6 @@ proc readImage*(filePath: string): Image {.inline, raises: [PixieError].} = except IOError as e: raise newException(PixieError, e.msg, e) -proc readMask*(filePath: string): Mask {.raises: [PixieError].} = - ## Loads a mask from a file. - try: - decodeMask(readFile(filePath)) - except IOError as e: - raise newException(PixieError, e.msg, e) - proc encodeImage*(image: Image, fileFormat: FileFormat): string {.raises: [PixieError].} = ## Encodes an image into memory. case fileFormat: @@ -103,14 +89,6 @@ proc encodeImage*(image: Image, fileFormat: FileFormat): string {.raises: [Pixie of PpmFormat: image.encodePpm() -proc encodeMask*(mask: Mask, fileFormat: FileFormat): string {.raises: [PixieError].} = - ## Encodes a mask into memory. - case fileFormat: - of PngFormat: - mask.encodePng() - else: - raise newException(PixieError, "Unsupported file format") - proc writeFile*(image: Image, filePath: string) {.raises: [PixieError].} = ## Writes an image to a file. let fileFormat = case splitFile(filePath).ext.toLowerAscii(): @@ -127,22 +105,6 @@ proc writeFile*(image: Image, filePath: string) {.raises: [PixieError].} = except IOError as e: raise newException(PixieError, e.msg, e) -proc writeFile*(mask: Mask, filePath: string) {.raises: [PixieError].} = - ## Writes a mask to a file. - let fileFormat = case splitFile(filePath).ext.toLowerAscii(): - of ".png": PngFormat - of ".bmp": BmpFormat - of ".jpg", ".jpeg": JpegFormat - of ".qoi": QoiFormat - of ".ppm": PpmFormat - else: - raise newException(PixieError, "Unsupported file extension") - - try: - writeFile(filePath, mask.encodeMask(fileFormat)) - except IOError as e: - raise newException(PixieError, e.msg, e) - proc fill*(image: Image, paint: Paint) {.raises: [PixieError].} = ## Fills the image with the paint. case paint.kind: diff --git a/src/pixie/blends.nim b/src/pixie/blends.nim index 2694c73..484e9b3 100644 --- a/src/pixie/blends.nim +++ b/src/pixie/blends.nim @@ -8,8 +8,6 @@ import chroma, common, simd, std/math type Blender* = proc(backdrop, source: ColorRGBX): ColorRGBX {.gcsafe, raises: [].} ## Function signature returned by blender. - MaskBlender* = proc(backdrop, source: uint8): uint8 {.gcsafe, raises: [].} - ## Function signature returned by maskBlender. when defined(release): {.push checks: off.} @@ -414,54 +412,10 @@ proc blender*(blendMode: BlendMode): Blender {.raises: [].} = of SubtractMaskBlend: subtractMaskBlender of ExcludeMaskBlend: excludeMaskBlender -proc maskBlendNormal*(backdrop, source: uint8): uint8 {.inline.} = - ## Normal blend masks - blendAlpha(backdrop, source) - -proc maskBlendMask*(backdrop, source: uint8): uint8 {.inline.} = - ## Mask blend masks - ((backdrop.uint32 * source) div 255).uint8 - -proc maskBlendSubtract*(backdrop, source: uint8): uint8 {.inline.} = - ## Subtract blend masks - ((backdrop.uint32 * (255 - source)) div 255).uint8 - -proc maskBlendExclude*(backdrop, source: uint8): uint8 {.inline.} = - ## Exclude blend masks - max(backdrop, source) - min(backdrop, source) - -proc maskBlendNormalMaskBlender(backdrop, source: uint8): uint8 = - maskBlendNormal(backdrop, source) - -proc maskBlendMaskMaskBlender(backdrop, source: uint8): uint8 = - maskBlendMask(backdrop, source) - -proc maskBlendSubtractMaskBlender(backdrop, source: uint8): uint8 = - maskBlendSubtract(backdrop, source) - -proc maskBlendExcludeMaskBlender(backdrop, source: uint8): uint8 = - maskBlendExclude(backdrop, source) - -proc maskBlendOverwriteMaskBlender(backdrop, source: uint8): uint8 = - source - -proc maskBlender*(blendMode: BlendMode): MaskBlender {.raises: [PixieError].} = - ## Returns a blend masking function for a given blend masking mode. - case blendMode: - of NormalBlend: maskBlendNormalMaskBlender - of MaskBlend: maskBlendMaskMaskBlender - of OverwriteBlend: maskBlendOverwriteMaskBlender - of SubtractMaskBlend: maskBlendSubtractMaskBlender - of ExcludeMaskBlend: maskBlendExcludeMaskBlender - else: - raise newException(PixieError, "No masker for " & $blendMode) - when defined(amd64) and allowSimd: type BlenderSimd* = proc(blackdrop, source: M128i): M128i {.gcsafe, raises: [].} ## Function signature returned by blenderSimd. - MaskerSimd* = proc(blackdrop, source: M128i): M128i {.gcsafe, raises: [].} - ## Function signature returned by maskerSimd. proc blendNormalSimd*(backdrop, source: M128i): M128i {.inline.} = let @@ -535,112 +489,5 @@ when defined(amd64) and allowSimd: ## Is there a blend function for a given blend mode with SIMD support? blendMode in {NormalBlend, MaskBlend, OverwriteBlend} - proc maskBlendNormalSimd*(backdrop, source: M128i): M128i {.inline.} = - ## Blending masks - let - oddMask = mm_set1_epi16(cast[int16](0xff00)) - v255high = mm_set1_epi16(cast[int16](255.uint16 shl 8)) - div255 = mm_set1_epi16(cast[int16](0x8081)) - - var - sourceEven = mm_slli_epi16(source, 8) - sourceOdd = mm_and_si128(source, oddMask) - - let - evenK = mm_sub_epi16(v255high, sourceEven) - oddK = mm_sub_epi16(v255high, sourceOdd) - - var - backdropEven = mm_slli_epi16(backdrop, 8) - backdropOdd = mm_and_si128(backdrop, oddMask) - backdropEven = mm_mulhi_epu16(backdropEven, evenK) - backdropOdd = mm_mulhi_epu16(backdropOdd, oddK) - backdropEven = mm_srli_epi16(mm_mulhi_epu16(backdropEven, div255), 7) - backdropOdd = mm_srli_epi16(mm_mulhi_epu16(backdropOdd, div255), 7) - - sourceEven = mm_srli_epi16(sourceEven, 8) - sourceOdd = mm_srli_epi16(sourceOdd, 8) - - let - blendedEven = mm_add_epi16(sourceEven, backdropEven) - blendedOdd = mm_add_epi16(sourceOdd, backdropOdd) - - mm_or_si128(blendedEven, mm_slli_epi16(blendedOdd, 8)) - - proc maskBlendMaskSimd*(backdrop, source: M128i): M128i = - let - oddMask = mm_set1_epi16(cast[int16](0xff00)) - div255 = mm_set1_epi16(cast[int16](0x8081)) - sourceEven = mm_slli_epi16(source, 8) - sourceOdd = mm_and_si128(source, oddMask) - - var - backdropEven = mm_slli_epi16(backdrop, 8) - backdropOdd = mm_and_si128(backdrop, oddMask) - backdropEven = mm_mulhi_epu16(backdropEven, sourceEven) - backdropOdd = mm_mulhi_epu16(backdropOdd, sourceOdd) - backdropEven = mm_srli_epi16(mm_mulhi_epu16(backdropEven, div255), 7) - backdropOdd = mm_srli_epi16(mm_mulhi_epu16(backdropOdd, div255), 7) - - mm_or_si128(backdropEven, mm_slli_epi16(backdropOdd, 8)) - - proc maskBlendSubtractSimd*(backdrop, source: M128i): M128i {.inline.} = - let - oddMask = mm_set1_epi16(cast[int16](0xff00)) - vec255 = mm_set1_epi8(255) - div255 = mm_set1_epi16(cast[int16](0x8081)) - - let sourceMinus255 = mm_sub_epi8(vec255, source) - - var - multiplierEven = mm_slli_epi16(sourceMinus255, 8) - multiplierOdd = mm_and_si128(sourceMinus255, oddMask) - backdropEven = mm_slli_epi16(backdrop, 8) - backdropOdd = mm_and_si128(backdrop, oddMask) - - backdropEven = mm_mulhi_epu16(backdropEven, multiplierEven) - backdropOdd = mm_mulhi_epu16(backdropOdd, multiplierOdd) - - backdropEven = mm_srli_epi16(mm_mulhi_epu16(backdropEven, div255), 7) - backdropOdd = mm_srli_epi16(mm_mulhi_epu16(backdropOdd, div255), 7) - - mm_or_si128(backdropEven, mm_slli_epi16(backdropOdd, 8)) - - proc maskBlendExcludeSimd*(backdrop, source: M128i): M128i {.inline.} = - mm_sub_epi8(mm_max_epu8(backdrop, source), mm_min_epu8(backdrop, source)) - - proc maskBlendNormalSimdMaskBlender(backdrop, source: M128i): M128i = - maskBlendNormalSimd(backdrop, source) - - proc maskBlendMaskSimdMaskBlender(backdrop, source: M128i): M128i = - maskBlendMaskSimd(backdrop, source) - - proc maskBlendExcludeSimdMaskBlender(backdrop, source: M128i): M128i = - maskBlendExcludeSimd(backdrop, source) - - proc maskBlendSubtractSimdMaskBlender(backdrop, source: M128i): M128i = - maskBlendSubtractSimd(backdrop, source) - - proc maskBlenderSimd*(blendMode: BlendMode): MaskerSimd {.raises: [PixieError].} = - ## Returns a blend masking function with SIMD support. - case blendMode: - of NormalBlend: maskBlendNormalSimdMaskBlender - of MaskBlend: maskBlendMaskSimdMaskBlender - of OverwriteBlend: overwriteSimdBlender - of SubtractMaskBlend: maskBlendSubtractSimdMaskBlender - of ExcludeMaskBlend: maskBlendExcludeSimdMaskBlender - else: - raise newException(PixieError, "No SIMD masker for " & $blendMode) - - proc hasSimdMaskBlender*(blendMode: BlendMode): bool {.inline, raises: [].} = - ## Is there a blend masking function with SIMD support? - blendMode in { - NormalBlend, - MaskBlend, - OverwriteBlend, - SubtractMaskBlend, - ExcludeMaskBlend - } - when defined(release): {.pop.} diff --git a/src/pixie/common.nim b/src/pixie/common.nim index 94f4563..8b04458 100644 --- a/src/pixie/common.nim +++ b/src/pixie/common.nim @@ -36,11 +36,6 @@ type width*, height*: int data*: seq[ColorRGBX] - Mask* = ref object - ## Mask object that holds mask opacity data. - width*, height*: int - data*: seq[uint8] - proc newImage*(width, height: int): Image {.raises: [PixieError].} = ## Creates a new image with the parameter dimensions. if width <= 0 or height <= 0: @@ -51,16 +46,6 @@ proc newImage*(width, height: int): Image {.raises: [PixieError].} = result.height = height result.data = newSeq[ColorRGBX](width * height) -proc newMask*(width, height: int): Mask {.raises: [PixieError].} = - ## Creates a new mask with the parameter dimensions. - if width <= 0 or height <= 0: - raise newException(PixieError, "Mask width and height must be > 0") - - result = Mask() - result.width = width - result.height = height - result.data = newSeq[uint8](width * height) - proc mix*(a, b: uint8, t: float32): uint8 {.inline, raises: [].} = ## Linearly interpolate between a and b using t. let t = round(t * 255).uint32 diff --git a/src/pixie/contexts.nim b/src/pixie/contexts.nim index ee2d0d1..244ba21 100644 --- a/src/pixie/contexts.nim +++ b/src/pixie/contexts.nim @@ -1,5 +1,5 @@ -import bumpy, chroma, pixie/common, pixie/fonts, pixie/images, pixie/masks, - pixie/paints, pixie/paths, tables, vmath +import bumpy, chroma, pixie/common, pixie/fonts, pixie/images, pixie/paints, + pixie/paths, tables, vmath ## This file provides a Nim version of the Canvas 2D API commonly used on the ## web. The goal is to make picking up Pixie easy for developers familiar with @@ -30,8 +30,7 @@ type lineDash: seq[float32] path: Path mat: Mat3 - mask: Mask - layer: Image + mask, layer: Image stateStack: seq[ContextState] typefaces: Table[string, Typeface] @@ -47,8 +46,7 @@ type textAlign: HorizontalAlignment lineDash: seq[float32] mat: Mat3 - mask: Mask - layer: Image + mask, layer: Image TextMetrics* = object width*: float32 @@ -391,10 +389,13 @@ proc clip*( ## region, if any, is intersected with the current or given path to create ## the new clipping region. if ctx.mask == nil: - ctx.mask = newMask(ctx.image.width, ctx.image.height) - ctx.mask.fillPath(path, windingRule = windingRule) + ctx.mask = newImage(ctx.image.width, ctx.image.height) + ctx.mask.fillPath(path, color(1, 1, 1, 1), windingRule = windingRule) else: - ctx.mask.fillPath(path, windingRule = windingRule, blendMode = MaskBlend) + let maskPaint = newPaint(SolidPaint) + maskPaint.color = color(1, 1, 1, 1) + maskPaint.blendMode = MaskBlend + ctx.mask.fillPath(path, maskPaint, windingRule = windingRule) proc clip*( ctx: Context, windingRule = NonZero diff --git a/src/pixie/fileformats/gif.nim b/src/pixie/fileformats/gif.nim index a061d6e..88d0d2e 100644 --- a/src/pixie/fileformats/gif.nim +++ b/src/pixie/fileformats/gif.nim @@ -388,7 +388,7 @@ proc decodeGifDimensions*( result.width = data.readInt16(6).int result.height = data.readInt16(8).int -proc newImage*(gif: Gif): Image {.raises: [PixieError].} = +proc newImage*(gif: Gif): Image {.raises: [].} = gif.frames[0].copy() when defined(release): diff --git a/src/pixie/fileformats/jpeg.nim b/src/pixie/fileformats/jpeg.nim index 4fe5980..852eb20 100644 --- a/src/pixie/fileformats/jpeg.nim +++ b/src/pixie/fileformats/jpeg.nim @@ -1,5 +1,5 @@ import chroma, flatty/binny, pixie/common, pixie/images, pixie/internal, - pixie/masks, pixie/simd, std/decls, std/sequtils, std/strutils + pixie/simd, std/decls, std/sequtils, std/strutils # This JPEG decoder is loosely based on stb_image which is public domain. @@ -59,7 +59,7 @@ type widthCoeff, heightCoeff: int coeff, lineBuf: seq[uint8] blocks: seq[seq[array[64, int16]]] - channel: Mask + channel: seq[uint8] DecoderState = object buffer: ptr UncheckedArray[uint8] @@ -321,7 +321,8 @@ proc decodeSOF0(state: var DecoderState) = component.widthStride = state.numMcuWide * component.yScale * 8 component.heightStride = state.numMcuHigh * component.xScale * 8 - component.channel = newMask(component.widthStride, component.heightStride) + component.channel = + newSeq[uint8](component.widthStride * component.heightStride) if state.progressive: component.widthCoeff = component.widthStride div 8 @@ -812,14 +813,14 @@ proc idctBlock(component: var Component, offset: int, data: array[64, int16]) = x2 += 65536 + (128 shl 17) x3 += 65536 + (128 shl 17) - component.channel.data[outPos + 0] = clampByte((x0 + t3) shr 17) - component.channel.data[outPos + 7] = clampByte((x0 - t3) shr 17) - component.channel.data[outPos + 1] = clampByte((x1 + t2) shr 17) - component.channel.data[outPos + 6] = clampByte((x1 - t2) shr 17) - component.channel.data[outPos + 2] = clampByte((x2 + t1) shr 17) - component.channel.data[outPos + 5] = clampByte((x2 - t1) shr 17) - component.channel.data[outPos + 3] = clampByte((x3 + t0) shr 17) - component.channel.data[outPos + 4] = clampByte((x3 - t0) shr 17) + component.channel[outPos + 0] = clampByte((x0 + t3) shr 17) + component.channel[outPos + 7] = clampByte((x0 - t3) shr 17) + component.channel[outPos + 1] = clampByte((x1 + t2) shr 17) + component.channel[outPos + 6] = clampByte((x1 - t2) shr 17) + component.channel[outPos + 2] = clampByte((x2 + t1) shr 17) + component.channel[outPos + 5] = clampByte((x2 - t1) shr 17) + component.channel[outPos + 3] = clampByte((x3 + t0) shr 17) + component.channel[outPos + 4] = clampByte((x3 - t0) shr 17) {.pop.} @@ -901,45 +902,59 @@ proc quantizationAndIDCTPass(state: var DecoderState) = data ) -proc magnifyXBy2(mask: Mask): Mask = - ## Smooth magnify by power of 2 only in the X direction. - result = newMask(mask.width * 2, mask.height) - for y in 0 ..< mask.height: - for x in 0 ..< mask.width: - let n = 3 * mask.unsafe[x, y].uint16 - if x == 0: - result.unsafe[x * 2 + 0, y] = mask.unsafe[x, y] - result.unsafe[x * 2 + 1, y] = - ((n + mask.unsafe[x + 1, y].uint16 + 2) div 4).uint8 - elif x == mask.width - 1: - result.unsafe[x * 2 + 0, y] = - ((n + mask.unsafe[x - 1, y].uint16 + 2) div 4).uint8 - result.unsafe[x * 2 + 1, y] = mask.unsafe[x, y] - else: - result.unsafe[x * 2 + 0, y] = - ((n + mask.unsafe[x - 1, y].uint16) div 4).uint8 - result.unsafe[x * 2 + 1, y] = - ((n + mask.unsafe[x + 1, y].uint16) div 4).uint8 +template dataIndex(component: var Component, x, y: int): int = + component.widthStride * y + x -proc magnifyYBy2(mask: Mask): Mask = - ## Smooth magnify by power of 2 only in the Y direction. - result = newMask(mask.width, mask.height * 2) - for y in 0 ..< mask.height: - for x in 0 ..< mask.width: - let n = 3 * mask.unsafe[x, y].uint16 - if y == 0: - result.unsafe[x, y * 2 + 0] = mask.unsafe[x, y] - result.unsafe[x, y * 2 + 1] = - ((n + mask.unsafe[x, y + 1].uint16 + 2) div 4).uint8 - elif y == mask.height - 1: - result.unsafe[x, y * 2 + 0] = - ((n + mask.unsafe[x, y - 1].uint16 + 2) div 4).uint8 - result.unsafe[x, y * 2 + 1] = mask.unsafe[x, y] +template `[]`*(component: Component, x, y: int): uint8 = + component.channel[component.dataIndex(x, y)] + +proc magnifyXBy2(component: var Component) = + ## Smooth magnify by power of 2 only in the X direction. + var magnified = + newSeq[uint8](component.widthStride * 2 * component.heightStride) + for y in 0 ..< component.heightStride: + for x in 0 ..< component.widthStride: + let n = 3 * component[x, y].uint16 + if x == 0: + magnified[component.dataIndex(x * 2 + 0, y)] = component[x, y] + magnified[component.dataIndex(x * 2 + 1, y)] = + ((n + component[x + 1, y].uint16 + 2) div 4).uint8 + elif x == component.widthStride - 1: + magnified[component.dataIndex(x * 2 + 0, y)] = + ((n + component[x - 1, y].uint16 + 2) div 4).uint8 + magnified[component.dataIndex(x * 2 + 1, y)] = component[x, y] else: - result.unsafe[x, y * 2 + 0] = - ((n + mask.unsafe[x, y - 1].uint16) div 4).uint8 - result.unsafe[x, y * 2 + 1] = - ((n + mask.unsafe[x, y + 1].uint16) div 4).uint8 + magnified[component.dataIndex(x * 2 + 0, y)] = + ((n + component[x - 1, y].uint16) div 4).uint8 + magnified[component.dataIndex(x * 2 + 1, y)] = + ((n + component[x + 1, y].uint16) div 4).uint8 + + component.channel = move magnified + component.widthStride *= 2 + +proc magnifyYBy2(component: var Component) = + ## Smooth magnify by power of 2 only in the Y direction. + var magnified = + newSeq[uint8](component.widthStride * component.heightStride * 2) + for y in 0 ..< component.heightStride: + for x in 0 ..< component.widthStride: + let n = 3 * component[x, y].uint16 + if y == 0: + magnified[component.dataIndex(x, y * 2 + 0)] = component[x, y] + magnified[component.dataIndex(x, y * 2 + 1)] = + ((n + component[x, y + 1].uint16 + 2) div 4).uint8 + elif y == component.heightStride - 1: + magnified[component.dataIndex(x, y * 2 + 0)] = + ((n + component[x, y - 1].uint16 + 2) div 4).uint8 + magnified[component.dataIndex(x, y * 2 + 1)] = component[x, y] + else: + magnified[component.dataIndex(x, y * 2 + 0)] = + ((n + component[x, y - 1].uint16) div 4).uint8 + magnified[component.dataIndex(x, y * 2 + 1)] = + ((n + component[x, y + 1].uint16) div 4).uint8 + + component.channel = move magnified + component.heightStride *= 2 proc yCbCrToRgbx(py, pcb, pcr: uint8): ColorRGBX = ## Takes a 3 component yCbCr outputs and populates image. @@ -974,33 +989,29 @@ proc buildImage(state: var DecoderState): Image = of 3: for component in state.components.mitems: while component.yScale < state.maxYScale: - component.channel = component.channel.magnifyXBy2() + component.magnifyXBy2() component.yScale *= 2 while component.xScale < state.maxXScale: - component.channel = component.channel.magnifyYBy2() + component.magnifyYBy2() component.xScale *= 2 - let - cy = state.components[0].channel - cb = state.components[1].channel - cr = state.components[2].channel for y in 0 ..< state.imageHeight: - var channelIndex = cy.dataIndex(0, y) + var channelIndex = state.components[0].dataIndex(0, y) for x in 0 ..< state.imageWidth: result.unsafe[x, y] = yCbCrToRgbx( - cy.data[channelIndex], - cb.data[channelIndex], - cr.data[channelIndex], + state.components[0].channel[channelIndex], # cy + state.components[1].channel[channelIndex], # cb + state.components[2].channel[channelIndex], # cr ) inc channelIndex of 1: - let cy = state.components[0].channel for y in 0 ..< state.imageHeight: - var channelIndex = cy.dataIndex(0, y) + var channelIndex = state.components[0].dataIndex(0, y) for x in 0 ..< state.imageWidth: - result.unsafe[x, y] = grayScaleToRgbx(cy.data[channelIndex]) + result.unsafe[x, y] = + grayScaleToRgbx(state.components[0].channel[channelIndex]) # cy inc channelIndex else: diff --git a/src/pixie/fileformats/png.nim b/src/pixie/fileformats/png.nim index 9877d7a..f53bfaf 100644 --- a/src/pixie/fileformats/png.nim +++ b/src/pixie/fileformats/png.nim @@ -616,14 +616,5 @@ proc encodePng*(image: Image): string {.raises: [PixieError].} = copy.toStraightAlpha() encodePng(image.width, image.height, 4, copy[0].addr, copy.len * 4) -proc encodePng*(mask: Mask): string {.raises: [PixieError].} = - ## Encodes the mask data into the PNG file format. - if mask.data.len == 0: - raise newException( - PixieError, - "Mask has no data (are height and width 0?)" - ) - encodePng(mask.width, mask.height, 1, mask.data[0].addr, mask.data.len) - when defined(release): {.pop.} diff --git a/src/pixie/fonts.nim b/src/pixie/fonts.nim index 28bd41a..570be0c 100644 --- a/src/pixie/fonts.nim +++ b/src/pixie/fonts.nim @@ -1,6 +1,6 @@ import bumpy, chroma, common, os, pixie/fontformats/opentype, - pixie/fontformats/svgfont, pixie/images, pixie/masks, pixie/paints, - pixie/paths, strutils, unicode, vmath + pixie/fontformats/svgfont, pixie/images, pixie/paints, pixie/paths, + strutils, unicode, vmath const autoLineHeight*: float32 = -1 ## Use default line height for the font size @@ -561,7 +561,7 @@ proc computePaths(arrangement: Arrangement): seq[Path] = result.add(spanPath) proc textUber( - target: Image | Mask, + target: Image, arrangement: Arrangement, transform = mat3(), strokeWidth: float32 = 1.0, @@ -575,22 +575,11 @@ proc textUber( for spanIndex in 0 ..< arrangement.spans.len: let path = spanPaths[spanIndex] when stroke: - when type(target) is Image: - let font = arrangement.fonts[spanIndex] - for paint in font.paints: - target.strokePath( - path, - paint, - transform, - strokeWidth, - lineCap, - lineJoin, - miterLimit, - dashes - ) - else: # target is Mask + let font = arrangement.fonts[spanIndex] + for paint in font.paints: target.strokePath( path, + paint, transform, strokeWidth, lineCap, @@ -599,12 +588,9 @@ proc textUber( dashes ) else: - when type(target) is Image: - let font = arrangement.fonts[spanIndex] - for paint in font.paints: - target.fillPath(path, paint, transform) - else: # target is Mask - target.fillPath(path, transform) + let font = arrangement.fonts[spanIndex] + for paint in font.paints: + target.fillPath(path, paint, transform) proc computeBounds*( arrangement: Arrangement, @@ -617,7 +603,7 @@ proc computeBounds*( fullPath.computeBounds() proc fillText*( - target: Image | Mask, + target: Image, arrangement: Arrangement, transform = mat3() ) {.inline, raises: [PixieError].} = @@ -629,7 +615,7 @@ proc fillText*( ) proc fillText*( - target: Image | Mask, + target: Image, font: Font, text: string, transform = mat3(), @@ -645,7 +631,7 @@ proc fillText*( fillText(target, font.typeset(text, bounds, hAlign, vAlign), transform) proc strokeText*( - target: Image | Mask, + target: Image, arrangement: Arrangement, transform = mat3(), strokeWidth: float32 = 1.0, @@ -668,7 +654,7 @@ proc strokeText*( ) proc strokeText*( - target: Image | Mask, + target: Image, font: Font, text: string, transform = mat3(), diff --git a/src/pixie/images.nim b/src/pixie/images.nim index 9e61f9f..6fc99f4 100644 --- a/src/pixie/images.nim +++ b/src/pixie/images.nim @@ -1,4 +1,4 @@ -import blends, bumpy, chroma, common, internal, masks, simd, vmath +import blends, bumpy, chroma, common, internal, simd, vmath export Image, newImage @@ -9,18 +9,6 @@ type UnsafeImage = distinct Image when defined(release): {.push checks: off.} -proc newImage*(mask: Mask): Image {.hasSimd, raises: [PixieError].} = - result = newImage(mask.width, mask.height) - for i in 0 ..< mask.data.len: - let v = mask.data[i] - result.data[i] = rgbx(v, v, v, v) - -proc newMask*(image: Image): Mask {.hasSimd, raises: [PixieError].} = - ## Returns a new mask using the alpha values of the image. - result = newMask(image.width, image.height) - for i in 0 ..< image.data.len: - result.data[i] = image.data[i].a - proc copy*(image: Image): Image {.raises: [].} = ## Copies the image data into a new image. result = Image() @@ -517,7 +505,7 @@ proc blitRect( ) proc drawCorrect( - a, b: Image | Mask, transform = mat3(), blendMode = NormalBlend, tiled = false + a, b: Image, transform = mat3(), blendMode = NormalBlend, tiled = false ) {.raises: [PixieError].} = ## Draws one image onto another using matrix with color blending. @@ -555,44 +543,24 @@ proc drawCorrect( transform[2, 1].fractional == 0.0 ) - when type(a) is Image and type(b) is Image: - if not hasRotationOrScaling and not smooth and not tiled: - blitRect(a, b, ivec2(transform[2, 0].int32, transform[2, 1].int32), blendMode) - return - - when type(a) is Image: - let blender = blendMode.blender() - else: # a is a Mask - let masker = blendMode.masker() + if not hasRotationOrScaling and not smooth and not tiled: + blitRect(a, b, ivec2(transform[2, 0].int32, transform[2, 1].int32), blendMode) + return + let blender = blendMode.blender() for y in 0 ..< a.height: for x in 0 ..< a.width: let samplePos = inverseTransform * vec2(x.float32 + h, y.float32 + h) xFloat = samplePos.x - h yFloat = samplePos.y - h - - when type(a) is Image: - let backdrop = a.unsafe[x, y] - when type(b) is Image: - let - sample = b.getRgbaSmooth(xFloat, yFloat, tiled) - blended = blender(backdrop, sample) - else: # b is a Mask - let - sample = b.getValueSmooth(xFloat, yFloat) - blended = blender(backdrop, rgbx(0, 0, 0, sample)) - a.unsafe[x, y] = blended - else: # a is a Mask - let backdrop = a.unsafe[x, y] - when type(b) is Image: - let sample = b.getRgbaSmooth(xFloat, yFloat, tiled).a - else: # b is a Mask - let sample = b.getValueSmooth(xFloat, yFloat) - a.setValueUnsafe(x, y, masker(backdrop, sample)) + backdrop = a.unsafe[x, y] + sample = b.getRgbaSmooth(xFloat, yFloat, tiled) + blended = blender(backdrop, sample) + a.unsafe[x, y] = blended proc drawUber( - a, b: Image | Mask, transform = mat3(), blendMode: BlendMode + a, b: Image, transform = mat3(), blendMode: BlendMode ) {.raises: [PixieError].} = let corners = [ @@ -650,10 +618,7 @@ proc drawUber( yMin = yMin.clamp(0, a.height) yMax = yMax.clamp(0, a.height) - when type(a) is Image: - let blender = blendMode.blender() - else: # a is a Mask - let maskBlender = blendMode.maskBlender() + let blender = blendMode.blender() if blendMode == MaskBlend: if yMin > 0: @@ -697,27 +662,12 @@ proc drawUber( if smooth: var srcPos = p + dx * xStart.float32 + dy * y.float32 srcPos = vec2(srcPos.x - h, srcPos.y - h) - for x in xStart ..< xStop: - when type(a) is Image: - let backdrop = a.unsafe[x, y] - when type(b) is Image: - let - sample = b.getRgbaSmooth(srcPos.x, srcPos.y) - blended = blender(backdrop, sample) - else: # b is a Mask - let - sample = b.getValueSmooth(srcPos.x, srcPos.y) - blended = blender(backdrop, rgbx(0, 0, 0, sample)) - a.unsafe[x, y] = blended - else: # a is a Mask - let backdrop = a.unsafe[x, y] - when type(b) is Image: - let sample = b.getRgbaSmooth(srcPos.x, srcPos.y).a - else: # b is a Mask - let sample = b.getValueSmooth(srcPos.x, srcPos.y) - a.unsafe[x, y] = maskBlender(backdrop, sample) - + let + backdrop = a.unsafe[x, y] + sample = b.getRgbaSmooth(srcPos.x, srcPos.y) + blended = blender(backdrop, sample) + a.unsafe[x, y] = blended srcPos += dx else: @@ -728,158 +678,63 @@ proc drawUber( sy = srcPos.y.int var sx = srcPos.x.int - when type(a) is Image and type(b) is Image: - if blendMode in {NormalBlend, OverwriteBlend} and - isOpaque(b.data, b.dataIndex(sx, sy), xStop - xStart): - copyMem( - a.data[a.dataIndex(x, y)].addr, - b.data[b.dataIndex(sx, sy)].addr, - (xStop - xStart) * 4 - ) - continue + if blendMode in {NormalBlend, OverwriteBlend} and + isOpaque(b.data, b.dataIndex(sx, sy), xStop - xStart): + copyMem( + a.data[a.dataIndex(x, y)].addr, + b.data[b.dataIndex(sx, sy)].addr, + (xStop - xStart) * 4 + ) + continue when defined(amd64) and allowSimd: case blendMode: of OverwriteBlend: for _ in 0 ..< (xStop - xStart) div 16: - when type(a) is Image: - when type(b) is Image: - for q in [0, 4, 8, 12]: - let sourceVec = mm_loadu_si128(b.data[b.dataIndex(sx + q, sy)].addr) - mm_storeu_si128(a.data[a.dataIndex(x + q, y)].addr, sourceVec) - else: # b is a Mask - var values = mm_loadu_si128(b.data[b.dataIndex(sx, sy)].addr) - for q in [0, 4, 8, 12]: - let sourceVec = unpackAlphaValues(values) - mm_storeu_si128(a.data[a.dataIndex(x + q, y)].addr, sourceVec) - # Shuffle 32 bits off for the next iteration - values = mm_srli_si128(values, 4) - else: # a is a Mask - when type(b) is Image: - var - i = mm_loadu_si128(b.data[b.dataIndex(sx + 0, sy)].addr) - j = mm_loadu_si128(b.data[b.dataIndex(sx + 4, sy)].addr) - k = mm_loadu_si128(b.data[b.dataIndex(sx + 8, sy)].addr) - l = mm_loadu_si128(b.data[b.dataIndex(sx + 12, sy)].addr) - let sourceVec = pack4xAlphaValues(i, j, k, l) - else: # b is a Mask - let sourceVec = mm_loadu_si128(b.data[b.dataIndex(sx, sy)].addr) - mm_storeu_si128(a.data[a.dataIndex(x, y)].addr, sourceVec) + for q in [0, 4, 8, 12]: + let sourceVec = mm_loadu_si128(b.data[b.dataIndex(sx + q, sy)].addr) + mm_storeu_si128(a.data[a.dataIndex(x + q, y)].addr, sourceVec) x += 16 sx += 16 of NormalBlend: let vec255 = mm_set1_epi32(cast[int32](uint32.high)) for _ in 0 ..< (xStop - xStart) div 16: - when type(a) is Image: - when type(b) is Image: - for q in [0, 4, 8, 12]: + for q in [0, 4, 8, 12]: + let + sourceVec = mm_loadu_si128(b.data[b.dataIndex(sx + q, sy)].addr) + eqZer0 = mm_cmpeq_epi8(sourceVec, mm_setzero_si128()) + if mm_movemask_epi8(eqZer0) != 0xffff: + let eq255 = mm_cmpeq_epi8(sourceVec, vec255) + if (mm_movemask_epi8(eq255) and 0x8888) == 0x8888: + mm_storeu_si128(a.data[a.dataIndex(x + q, y)].addr, sourceVec) + else: let - sourceVec = mm_loadu_si128(b.data[b.dataIndex(sx + q, sy)].addr) - eqZer0 = mm_cmpeq_epi8(sourceVec, mm_setzero_si128()) - if mm_movemask_epi8(eqZer0) != 0xffff: - let eq255 = mm_cmpeq_epi8(sourceVec, vec255) - if (mm_movemask_epi8(eq255) and 0x8888) == 0x8888: - mm_storeu_si128(a.data[a.dataIndex(x + q, y)].addr, sourceVec) - else: - let - backdropIdx = a.dataIndex(x + q, y) - backdropVec = mm_loadu_si128(a.data[backdropIdx].addr) - mm_storeu_si128( - a.data[backdropIdx].addr, - blendNormalSimd(backdropVec, sourceVec) - ) - else: # b is a Mask - var values = mm_loadu_si128(b.data[b.dataIndex(sx, sy)].addr) - for q in [0, 4, 8, 12]: - let - sourceVec = unpackAlphaValues(values) - eqZer0 = mm_cmpeq_epi8(sourceVec, mm_setzero_si128()) - if mm_movemask_epi8(eqZer0) != 0xffff: - let eq255 = mm_cmpeq_epi8(sourceVec, vec255) - if (mm_movemask_epi8(eq255) and 0x8888) == 0x8888: - discard - else: - let - backdropIdx = a.dataIndex(x + q, y) - backdropVec = mm_loadu_si128(a.data[backdropIdx].addr) - mm_storeu_si128( - a.data[backdropIdx].addr, - blendNormalSimd(backdropVec, sourceVec) - ) - # Shuffle 32 bits off for the next iteration - values = mm_srli_si128(values, 4) - else: # a is a Mask - let backdropVec = mm_loadu_si128(a.data[a.dataIndex(x, y)].addr) - when type(b) is Image: - var - i = mm_loadu_si128(b.data[b.dataIndex(sx + 0, sy)].addr) - j = mm_loadu_si128(b.data[b.dataIndex(sx + 4, sy)].addr) - k = mm_loadu_si128(b.data[b.dataIndex(sx + 8, sy)].addr) - l = mm_loadu_si128(b.data[b.dataIndex(sx + 12, sy)].addr) - let sourceVec = pack4xAlphaValues(i, j, k, l) - else: # b is a Mask - let sourceVec = mm_loadu_si128(b.data[b.dataIndex(sx, sy)].addr) - mm_storeu_si128( - a.data[a.dataIndex(x, y)].addr, - maskBlendNormalSimd(backdropVec, sourceVec) - ) + backdropIdx = a.dataIndex(x + q, y) + backdropVec = mm_loadu_si128(a.data[backdropIdx].addr) + mm_storeu_si128( + a.data[backdropIdx].addr, + blendNormalSimd(backdropVec, sourceVec) + ) x += 16 sx += 16 of MaskBlend: let vec255 = mm_set1_epi32(cast[int32](uint32.high)) for _ in 0 ..< (xStop - xStart) div 16: - when type(a) is Image: - when type(b) is Image: - for q in [0, 4, 8, 12]: - let - sourceVec = mm_loadu_si128(b.data[b.dataIndex(sx + q, sy)].addr) - eqZer0 = mm_cmpeq_epi8(sourceVec, mm_setzero_si128()) - if mm_movemask_epi8(eqZer0) == 0xffff: - mm_storeu_si128( - a.data[a.dataIndex(x + q, y)].addr, - mm_setzero_si128() - ) - elif mm_movemask_epi8(mm_cmpeq_epi8(sourceVec, vec255)) != 0xffff: - let backdropVec = mm_loadu_si128(a.data[a.dataIndex(x + q, y)].addr) - mm_storeu_si128( - a.data[a.dataIndex(x + q, y)].addr, - blendMaskSimd(backdropVec, sourceVec) - ) - else: # b is a Mask - var values = mm_loadu_si128(b.data[b.dataIndex(sx, sy)].addr) - for q in [0, 4, 8, 12]: - let - sourceVec = unpackAlphaValues(values) - eqZer0 = mm_cmpeq_epi8(sourceVec, mm_setzero_si128()) - eq255 = mm_cmpeq_epi8(sourceVec, vec255) - if mm_movemask_epi8(eqZer0) == 0xffff: - mm_storeu_si128( - a.data[a.dataIndex(x + q, y)].addr, - mm_setzero_si128() - ) - elif (mm_movemask_epi8(eq255) and 0x8888) != 0x8888: - let backdropVec = mm_loadu_si128(a.data[a.dataIndex(x + q, y)].addr) - mm_storeu_si128( - a.data[a.dataIndex(x + q, y)].addr, - blendMaskSimd(backdropVec, sourceVec) - ) - # Shuffle 32 bits off for the next iteration - values = mm_srli_si128(values, 4) - else: # a is a Mask - let backdropVec = mm_loadu_si128(a.data[a.dataIndex(x, y)].addr) - when type(b) is Image: - var - i = mm_loadu_si128(b.data[b.dataIndex(sx + 0, sy)].addr) - j = mm_loadu_si128(b.data[b.dataIndex(sx + 4, sy)].addr) - k = mm_loadu_si128(b.data[b.dataIndex(sx + 8, sy)].addr) - l = mm_loadu_si128(b.data[b.dataIndex(sx + 12, sy)].addr) - let sourceVec = pack4xAlphaValues(i, j, k, l) - else: # b is a Mask - let sourceVec = mm_loadu_si128(b.data[b.dataIndex(sx, sy)].addr) - mm_storeu_si128( - a.data[a.dataIndex(x, y)].addr, - maskBlendMaskSimd(backdropVec, sourceVec) - ) + for q in [0, 4, 8, 12]: + let + sourceVec = mm_loadu_si128(b.data[b.dataIndex(sx + q, sy)].addr) + eqZer0 = mm_cmpeq_epi8(sourceVec, mm_setzero_si128()) + if mm_movemask_epi8(eqZer0) == 0xffff: + mm_storeu_si128( + a.data[a.dataIndex(x + q, y)].addr, + mm_setzero_si128() + ) + elif mm_movemask_epi8(mm_cmpeq_epi8(sourceVec, vec255)) != 0xffff: + let backdropVec = mm_loadu_si128(a.data[a.dataIndex(x + q, y)].addr) + mm_storeu_si128( + a.data[a.dataIndex(x + q, y)].addr, + blendMaskSimd(backdropVec, sourceVec) + ) x += 16 sx += 16 else: @@ -887,49 +742,14 @@ proc drawUber( if blendMode.hasSimdBlender(): let blenderSimd = blendMode.blenderSimd() for _ in 0 ..< (xStop - xStart) div 16: - when type(b) is Image: - for q in [0, 4, 8, 12]: - let - backdrop = mm_loadu_si128(a.data[a.dataIndex(x + q, y)].addr) - source = mm_loadu_si128(b.data[b.dataIndex(sx + q, sy)].addr) - mm_storeu_si128( - a.data[a.dataIndex(x + q, y)].addr, - blenderSimd(backdrop, source) - ) - else: # b is a Mask - var values = mm_loadu_si128(b.data[b.dataIndex(sx, sy)].addr) - for q in [0, 4, 8, 12]: - let - backdrop = mm_loadu_si128(a.data[a.dataIndex(x + q, y)].addr) - source = unpackAlphaValues(values) - mm_storeu_si128( - a.data[a.dataIndex(x + q, y)].addr, - blenderSimd(backdrop, source) - ) - # Shuffle 32 bits off for the next iteration - values = mm_srli_si128(values, 4) - x += 16 - sx += 16 - else: # is a Mask - if blendMode.hasSimdMaskBlender(): - let maskerSimd = blendMode.maskBlenderSimd() - for _ in 0 ..< (xStop - xStart) div 16: - let backdrop = mm_loadu_si128(a.data[a.dataIndex(x, y)].addr) - when type(b) is Image: - # Need to read 16 colors and pack their alpha values + for q in [0, 4, 8, 12]: let - i = mm_loadu_si128(b.data[b.dataIndex(sx + 0, sy)].addr) - j = mm_loadu_si128(b.data[b.dataIndex(sx + 4, sy)].addr) - k = mm_loadu_si128(b.data[b.dataIndex(sx + 8, sy)].addr) - l = mm_loadu_si128(b.data[b.dataIndex(sx + 12, sy)].addr) - source = pack4xAlphaValues(i, j, k, l) - else: # b is a Mask - let source = mm_loadu_si128(b.data[b.dataIndex(sx, sy)].addr) - - mm_storeu_si128( - a.data[a.dataIndex(x, y)].addr, - maskerSimd(backdrop, source) - ) + backdrop = mm_loadu_si128(a.data[a.dataIndex(x + q, y)].addr) + source = mm_loadu_si128(b.data[b.dataIndex(sx + q, sy)].addr) + mm_storeu_si128( + a.data[a.dataIndex(x + q, y)].addr, + blenderSimd(backdrop, source) + ) x += 16 sx += 16 @@ -942,93 +762,43 @@ proc drawUber( case blendMode: of OverwriteBlend: for x in x ..< xStop: - let samplePos = ivec2((srcPos.x - h).int32, (srcPos.y - h).int32) - when type(a) is Image: - when type(b) is Image: - let source = b.unsafe[samplePos.x, samplePos.y] - else: # b is a Mask - let source = rgbx(0, 0, 0, b.unsafe[samplePos.x, samplePos.y]) - if source.a > 0: - a.unsafe[x, y] = source - else: # a is a Mask - when type(b) is Image: - let source = b.unsafe[samplePos.x, samplePos.y].a - else: # b is a Mask - let source = b.unsafe[samplePos.x, samplePos.y] - if source > 0: - a.unsafe[x, y] = source + let + samplePos = ivec2((srcPos.x - h).int32, (srcPos.y - h).int32) + source = b.unsafe[samplePos.x, samplePos.y] + if source.a > 0: + a.unsafe[x, y] = source srcPos += dx of NormalBlend: for x in x ..< xStop: - let samplePos = ivec2((srcPos.x - h).int32, (srcPos.y - h).int32) - when type(a) is Image: - when type(b) is Image: - let source = b.unsafe[samplePos.x, samplePos.y] - else: # b is a Mask - let source = rgbx(0, 0, 0, b.unsafe[samplePos.x, samplePos.y]) - if source.a > 0: - if source.a == 255: - a.unsafe[x, y] = source - else: - let backdrop = a.unsafe[x, y] - a.unsafe[x, y] = blendNormal(backdrop, source) - else: # a is a Mask - when type(b) is Image: - let source = b.unsafe[samplePos.x, samplePos.y].a - else: # b is a Mask - let source = b.unsafe[samplePos.x, samplePos.y] - if source > 0: - if source == 255: - a.unsafe[x, y] = source - else: - let backdrop = a.unsafe[x, y] - a.unsafe[x, y] = blendAlpha(backdrop, source) + let + samplePos = ivec2((srcPos.x - h).int32, (srcPos.y - h).int32) + source = b.unsafe[samplePos.x, samplePos.y] + if source.a > 0: + if source.a == 255: + a.unsafe[x, y] = source + else: + let backdrop = a.unsafe[x, y] + a.unsafe[x, y] = blendNormal(backdrop, source) srcPos += dx of MaskBlend: for x in x ..< xStop: - let samplePos = ivec2((srcPos.x - h).int32, (srcPos.y - h).int32) - when type(a) is Image: - when type(b) is Image: - let source = b.unsafe[samplePos.x, samplePos.y] - else: # b is a Mask - let source = rgbx(0, 0, 0, b.unsafe[samplePos.x, samplePos.y]) - if source.a == 0: - a.unsafe[x, y] = rgbx(0, 0, 0, 0) - elif source.a != 255: - let backdrop = a.unsafe[x, y] - a.unsafe[x, y] = blendMask(backdrop, source) - else: # a is a Mask - when type(b) is Image: - let source = b.unsafe[samplePos.x, samplePos.y].a - else: # b is a Mask - let source = b.unsafe[samplePos.x, samplePos.y] - if source == 0: - a.unsafe[x, y] = 0 - elif source != 255: - let backdrop = a.unsafe[x, y] - a.unsafe[x, y] = maskBlendMask(backdrop, source) + let + samplePos = ivec2((srcPos.x - h).int32, (srcPos.y - h).int32) + source = b.unsafe[samplePos.x, samplePos.y] + if source.a == 0: + a.unsafe[x, y] = rgbx(0, 0, 0, 0) + elif source.a != 255: + let backdrop = a.unsafe[x, y] + a.unsafe[x, y] = blendMask(backdrop, source) srcPos += dx else: for x in x ..< xStop: - let samplePos = ivec2((srcPos.x - h).int32, (srcPos.y - h).int32) - when type(a) is Image: - let backdrop = a.unsafe[x, y] - when type(b) is Image: - let - sample = b.unsafe[samplePos.x, samplePos.y] - blended = blender(backdrop, sample) - else: # b is a Mask - let - sample = b.unsafe[samplePos.x, samplePos.y] - blended = blender(backdrop, rgbx(0, 0, 0, sample)) - a.unsafe[x, y] = blended - else: # a is a Mask - let backdrop = a.unsafe[x, y] - when type(b) is Image: - let sample = b.unsafe[samplePos.x, samplePos.y].a - else: # b is a Mask - let sample = b.unsafe[samplePos.x, samplePos.y] - a.unsafe[x, y] = maskBlender(backdrop, sample) + let + samplePos = ivec2((srcPos.x - h).int32, (srcPos.y - h).int32) + backdrop = a.unsafe[x, y] + sample = b.unsafe[samplePos.x, samplePos.y] + blended = blender(backdrop, sample) + a.unsafe[x, y] = blended srcPos += dx if blendMode == MaskBlend: @@ -1045,24 +815,6 @@ proc draw*( ## Draws one image onto another using matrix with color blending. a.drawUber(b, transform, blendMode) -proc draw*( - a, b: Mask, transform = mat3(), blendMode = MaskBlend -) {.inline, raises: [PixieError].} = - ## Draws a mask onto a mask using a matrix with color blending. - a.drawUber(b, transform, blendMode) - -proc draw*( - image: Image, mask: Mask, transform = mat3(), blendMode = MaskBlend -) {.inline, raises: [PixieError].} = - ## Draws a mask onto an image using a matrix with color blending. - image.drawUber(mask, transform, blendMode) - -proc draw*( - mask: Mask, image: Image, transform = mat3(), blendMode = MaskBlend -) {.inline, raises: [PixieError].} = - ## Draws a image onto a mask using a matrix with color blending. - mask.drawUber(image, transform, blendMode) - proc drawTiled*( dst, src: Image, mat: Mat3, blendMode = NormalBlend ) {.raises: [PixieError].} = @@ -1083,40 +835,83 @@ proc resize*(srcImage: Image, width, height: int): Image {.raises: [PixieError]. OverwriteBlend ) -proc resize*(srcMask: Mask, width, height: int): Mask {.raises: [PixieError].} = - ## Resize a mask to a given height and width. - if width == srcMask.width and height == srcMask.height: - result = srcMask.copy() - else: - result = newMask(width, height) - result.draw( - srcMask, - scale(vec2( - width.float32 / srcMask.width.float32, - height.float32 / srcMask.height.float32 - )), - OverwriteBlend - ) +proc spread(image: Image, spread: float32) {.raises: [PixieError].} = + ## Grows the mask by spread. + let spread = round(spread).int + if spread == 0: + return + + if spread > 0: + # Spread in the X direction. Store with dimensions swapped for reading later. + let spreadX = newImage(image.height, image.width) + for y in 0 ..< image.height: + for x in 0 ..< image.width: + var maxValue: uint8 + for xx in max(x - spread, 0) .. min(x + spread, image.width - 1): + let value = image.unsafe[xx, y].a + if value > maxValue: + maxValue = value + if maxValue == 255: + break + spreadX.unsafe[y, x] = rgbx(0, 0, 0, maxValue) + + # Spread in the Y direction and modify mask. + for y in 0 ..< image.height: + for x in 0 ..< image.width: + var maxValue: uint8 + for yy in max(y - spread, 0) .. min(y + spread, image.height - 1): + let value = spreadX.unsafe[yy, x].a + if value > maxValue: + maxValue = value + if maxValue == 255: + break + image.unsafe[x, y] = rgbx(0, 0, 0, maxValue) + + elif spread < 0: + let spread = -spread + + # Spread in the X direction. Store with dimensions swapped for reading later. + let spreadX = newImage(image.height, image.width) + for y in 0 ..< image.height: + for x in 0 ..< image.width: + var minValue: uint8 = 255 + for xx in max(x - spread, 0) .. min(x + spread, image.width - 1): + let value = image.unsafe[xx, y].a + if value < minValue: + minValue = value + if minValue == 0: + break + spreadX.unsafe[y, x] = rgbx(0, 0, 0, minValue) + + # Spread in the Y direction and modify mask. + for y in 0 ..< image.height: + for x in 0 ..< image.width: + var minValue: uint8 = 255 + for yy in max(y - spread, 0) .. min(y + spread, image.height - 1): + let value = spreadX.unsafe[yy, x].a + if value < minValue: + minValue = value + if minValue == 0: + break + image.unsafe[x, y] = rgbx(0, 0, 0, minValue) proc shadow*( image: Image, offset: Vec2, spread, blur: float32, color: SomeColor ): Image {.raises: [PixieError].} = ## Create a shadow of the image with the offset, spread and blur. - let mask = image.newMask() - - var shifted: Mask + var mask: Image if offset == vec2(0, 0): - shifted = mask + mask = image.copy() else: - shifted = newMask(mask.width, mask.height) - shifted.draw(mask, translate(offset), OverwriteBlend) + mask = newImage(image.width, image.height) + mask.draw(image, translate(offset), OverwriteBlend) - shifted.spread(spread) - shifted.blur(blur) + mask.spread(spread) + mask.blur(blur) - result = newImage(shifted.width, shifted.height) + result = newImage(mask.width, mask.height) result.fill(color) - result.draw(shifted) + result.draw(mask, blendMode = MaskBlend) proc superImage*(image: Image, x, y, w, h: int): Image {.raises: [PixieError].} = ## Either cuts a sub image or returns a super image with padded transparency. diff --git a/src/pixie/internal.nim b/src/pixie/internal.nim index e3466b2..3f00fca 100644 --- a/src/pixie/internal.nim +++ b/src/pixie/internal.nim @@ -59,13 +59,6 @@ proc intersectsInside*(a, b: Segment, at: var Vec2): bool {.inline.} = at = a.at + (t * s1) return true -proc fillUnsafe*( - data: var seq[uint8], value: uint8, start, len: int -) {.inline, raises: [].} = - ## Fills the mask data with the value starting at index start and - ## continuing for len indices. - nimSetMem(data[start].addr, value.cint, len) - proc fillUnsafe*( data: var seq[ColorRGBX], color: SomeColor, start, len: int ) {.hasSimd, raises: [].} = @@ -77,7 +70,7 @@ proc fillUnsafe*( nimSetMem(data[start].addr, rgbx.r.cint, len * 4) else: for i in start ..< start + len: - data[i] = rgbx + data[i] = rgbx const straightAlphaTable = block: var table: array[256, array[256, uint8]] diff --git a/src/pixie/masks.nim b/src/pixie/masks.nim deleted file mode 100644 index 9fd8438..0000000 --- a/src/pixie/masks.nim +++ /dev/null @@ -1,319 +0,0 @@ -import common, internal, simd, vmath - -export Mask, newMask - -type UnsafeMask = distinct Mask - -when defined(release): - {.push checks: off.} - -proc copy*(mask: Mask): Mask {.raises: [].} = - ## Copies the image data into a new image. - result = Mask() - result.width = mask.width - result.height = mask.height - result.data = mask.data - -proc `$`*(mask: Mask): string {.raises: [].} = - ## Prints the mask size. - "" - -proc inside*(mask: Mask, x, y: int): bool {.inline, raises: [].} = - ## Returns true if (x, y) is inside the mask. - x >= 0 and x < mask.width and y >= 0 and y < mask.height - -proc dataIndex*(mask: Mask, x, y: int): int {.inline, raises: [].} = - mask.width * y + x - -template unsafe*(src: Mask): UnsafeMask = - cast[UnsafeMask](src) - -template `[]`*(view: UnsafeMask, x, y: int): uint8 = - ## Gets a value from (x, y) coordinates. - ## * No bounds checking * - ## Make sure that x, y are in bounds. - ## Failure in the assumptions will case unsafe memory reads. - cast[Mask](view).data[cast[Mask](view).dataIndex(x, y)] - -template `[]=`*(view: UnsafeMask, x, y: int, color: uint8) = - ## Sets a value from (x, y) coordinates. - ## * No bounds checking * - ## Make sure that x, y are in bounds. - ## Failure in the assumptions will case unsafe memory writes. - cast[Mask](view).data[cast[Mask](view).dataIndex(x, y)] = color - -proc `[]`*(mask: Mask, x, y: int): uint8 {.inline, raises: [].} = - ## Gets a value at (x, y) or returns transparent black if outside of bounds. - if mask.inside(x, y): - return mask.unsafe[x, y] - -proc `[]=`*(mask: Mask, x, y: int, value: uint8) {.inline, raises: [].} = - ## Sets a value at (x, y) or does nothing if outside of bounds. - if mask.inside(x, y): - mask.unsafe[x, y] = value - -proc getValue*(mask: Mask, x, y: int): uint8 {.inline, raises: [].} = - ## Gets a value at (x, y) or returns transparent black if outside of bounds. - mask[x, y] - -proc setValue*(mask: Mask, x, y: int, value: uint8) {.inline, raises: [].} = - ## Sets a value at (x, y) or does nothing if outside of bounds. - mask[x, y] = value - -proc fill*(mask: Mask, value: uint8) {.inline, raises: [].} = - ## Fills the mask with the value. - fillUnsafe(mask.data, value, 0, mask.data.len) - -proc minifyBy2*(mask: Mask, power = 1): Mask {.raises: [PixieError].} = - ## Scales the mask down by an integer scale. - if power < 0: - raise newException(PixieError, "Cannot minifyBy2 with negative power") - if power == 0: - return mask.copy() - - var src = mask - for i in 1 .. power: - result = newMask(src.width div 2, src.height div 2) - for y in 0 ..< result.height: - var x: int - when defined(amd64) and allowSimd: - let oddMask = mm_set1_epi16(cast[int16](0xff00)) - while x <= result.width - 16: - let - top = mm_loadu_si128(src.data[src.dataIndex(x * 2, y * 2 + 0)].addr) - btm = mm_loadu_si128(src.data[src.dataIndex(x * 2, y * 2 + 1)].addr) - topShifted = mm_srli_si128(top, 1) - btmShifted = mm_srli_si128(btm, 1) - - topEven = mm_andnot_si128(oddMask, top) - topOdd = mm_srli_epi16(top, 8) - btmEven = mm_andnot_si128(oddMask, btm) - btmOdd = mm_srli_epi16(btm, 8) - - topShiftedEven = mm_andnot_si128(oddMask, topShifted) - topShiftedOdd = mm_srli_epi16(topShifted, 8) - btmShiftedEven = mm_andnot_si128(oddMask, btmShifted) - btmShiftedOdd = mm_srli_epi16(btmShifted, 8) - - topAddedEven = mm_add_epi16(topEven, topShiftedEven) - btmAddedEven = mm_add_epi16(btmEven, btmShiftedEven) - topAddedOdd = mm_add_epi16(topOdd, topShiftedOdd) - btmAddedOdd = mm_add_epi16(btmOdd, btmShiftedOdd) - - addedEven = mm_add_epi16(topAddedEven, btmAddedEven) - addedOdd = mm_add_epi16(topAddedOdd, btmAddedOdd) - - addedEvenDiv4 = mm_srli_epi16(addedEven, 2) - addedOddDiv4 = mm_srli_epi16(addedOdd, 2) - - merged = mm_or_si128(addedEvenDiv4, mm_slli_epi16(addedOddDiv4, 8)) - # Merged has the correct values in the even indices - # Mask out the odd values for packing - masked = mm_andnot_si128(oddMask, merged) - - mm_storeu_si128( - result.data[result.dataIndex(x, y)].addr, - mm_packus_epi16(masked, mm_setzero_si128()) - ) - x += 8 - - for x in x ..< result.width: - let value = - src.unsafe[x * 2 + 0, y * 2 + 0].uint32 + - src.unsafe[x * 2 + 1, y * 2 + 0] + - src.unsafe[x * 2 + 1, y * 2 + 1] + - src.unsafe[x * 2 + 0, y * 2 + 1] - result.unsafe[x, y] = (value div 4).uint8 - - # Set src as this result for if we do another power - src = result - -proc magnifyBy2*(mask: Mask, power = 1): Mask {.raises: [PixieError].} = - ## Scales mask up by 2 ^ power. - if power < 0: - raise newException(PixieError, "Cannot magnifyBy2 with negative power") - - let scale = 2 ^ power - result = newMask(mask.width * scale, mask.height * scale) - - for y in 0 ..< mask.height: - # Write one row of values duplicated by scale - var x: int - when defined(amd64) and allowSimd: - if scale == 2: - while x <= mask.width - 16: - let values = mm_loadu_si128(mask.unsafe[x, y].addr) - mm_storeu_si128( - result.data[result.dataIndex(x * scale + 0, y * scale)].addr, - mm_unpacklo_epi8(values, values) - ) - mm_storeu_si128( - result.data[result.dataIndex(x * scale + 16, y * scale)].addr, - mm_unpackhi_epi8(values, values) - ) - x += 16 - for x in x ..< mask.width: - let - value = mask.unsafe[x, y] - resultIdx = result.dataIndex(x * scale, y * scale) - for i in 0 ..< scale: - result.data[resultIdx + i] = value - # Copy that row of values into (scale - 1) more rows - let rowStart = result.dataIndex(0, y * scale) - for i in 1 ..< scale: - copyMem( - result.data[rowStart + result.width * i].addr, - result.data[rowStart].addr, - result.width - ) - -proc applyOpacity*(mask: Mask, opacity: float32) {.hasSimd, raises: [].} = - ## Multiplies alpha of the image by opacity. - let opacity = round(255 * opacity).uint16 - if opacity == 255: - return - - if opacity == 0: - mask.fill(0) - return - - for i in 0 ..< mask.data.len: - mask.data[i] = ((mask.data[i] * opacity) div 255).uint8 - -proc getValueSmooth*(mask: Mask, x, y: float32): uint8 {.raises: [].} = - ## Gets a interpolated value with float point coordinates. - let - x0 = x.int - y0 = y.int - x1 = x0 + 1 - y1 = y0 + 1 - xFractional = x.fractional - yFractional = y.fractional - - x0y0 = mask[x0, y0] - x1y0 = mask[x1, y0] - x0y1 = mask[x0, y1] - x1y1 = mask[x1, y1] - - var topMix = x0y0 - if xFractional > 0 and x0y0 != x1y0: - topMix = mix(x0y0, x1y0, xFractional) - - var bottomMix = x0y1 - if xFractional > 0 and x0y1 != x1y1: - bottomMix = mix(x0y1, x1y1, xFractional) - - if yFractional != 0 and topMix != bottomMix: - mix(topMix, bottomMix, yFractional) - else: - topMix - -proc invert*(mask: Mask) {.hasSimd, raises: [].} = - ## Inverts all of the values - creates a negative of the mask. - for i in 0 ..< mask.data.len: - mask.data[i] = 255 - mask.data[i] - -proc spread*(mask: Mask, spread: float32) {.raises: [PixieError].} = - ## Grows the mask by spread. - let spread = round(spread).int - if spread == 0: - return - - if spread > 0: - - # Spread in the X direction. Store with dimensions swapped for reading later. - let spreadX = newMask(mask.height, mask.width) - for y in 0 ..< mask.height: - for x in 0 ..< mask.width: - var maxValue: uint8 - for xx in max(x - spread, 0) .. min(x + spread, mask.width - 1): - let value = mask.unsafe[xx, y] - if value > maxValue: - maxValue = value - if maxValue == 255: - break - spreadX.unsafe[y, x] = maxValue - - # Spread in the Y direction and modify mask. - for y in 0 ..< mask.height: - for x in 0 ..< mask.width: - var maxValue: uint8 - for yy in max(y - spread, 0) .. min(y + spread, mask.height - 1): - let value = spreadX.unsafe[yy, x] - if value > maxValue: - maxValue = value - if maxValue == 255: - break - mask.unsafe[x, y] = maxValue - - elif spread < 0: - - # Spread in the X direction. Store with dimensions swapped for reading later. - let spread = -spread - let spreadX = newMask(mask.height, mask.width) - for y in 0 ..< mask.height: - for x in 0 ..< mask.width: - var maxValue: uint8 = 255 - for xx in max(x - spread, 0) .. min(x + spread, mask.width - 1): - let value = mask.unsafe[xx, y] - if value < maxValue: - maxValue = value - if maxValue == 0: - break - spreadX.unsafe[y, x] = maxValue - - # Spread in the Y direction and modify mask. - for y in 0 ..< mask.height: - for x in 0 ..< mask.width: - var maxValue: uint8 = 255 - for yy in max(y - spread, 0) .. min(y + spread, mask.height - 1): - let value = spreadX.unsafe[yy, x] - if value < maxValue: - maxValue = value - if maxValue == 0: - break - mask.unsafe[x, y] = maxValue - -proc ceil*(mask: Mask) {.hasSimd, raises: [].} = - ## A value of 0 stays 0. Anything else turns into 255. - for i in 0 ..< mask.data.len: - if mask.data[i] != 0: - mask.data[i] = 255 - -proc blur*(mask: Mask, radius: float32, outOfBounds: uint8 = 0) {.raises: [PixieError].} = - ## Applies Gaussian blur to the image given a radius. - let radius = round(radius).int - if radius == 0: - return - if radius < 0: - raise newException(PixieError, "Cannot apply negative blur") - - let kernel = gaussianKernel(radius) - - # Blur in the X direction. Store with dimensions swapped for reading later. - let blurX = newMask(mask.height, mask.width) - for y in 0 ..< mask.height: - for x in 0 ..< mask.width: - var value: uint32 - for xx in x - radius ..< min(x + radius, 0): - value += outOfBounds * kernel[xx - x + radius].uint32 - for xx in max(x - radius, 0) .. min(x + radius, mask.width - 1): - value += mask.unsafe[xx, y] * kernel[xx - x + radius].uint32 - for xx in max(x - radius, mask.width) .. x + radius: - value += outOfBounds * kernel[xx - x + radius].uint32 - blurX.unsafe[y, x] = (value div 256 div 255).uint8 - - # Blur in the Y direction and modify image. - for y in 0 ..< mask.height: - for x in 0 ..< mask.width: - var value: uint32 - for yy in y - radius ..< min(y + radius, 0): - value += outOfBounds * kernel[yy - y + radius].uint32 - for yy in max(y - radius, 0) .. min(y + radius, mask.height - 1): - value += blurX.unsafe[yy, x] * kernel[yy - y + radius].uint32 - for yy in max(y - radius, mask.height) .. y + radius: - value += outOfBounds * kernel[yy - y + radius].uint32 - mask.unsafe[x, y] = (value div 256 div 255).uint8 - -when defined(release): - {.pop.} diff --git a/src/pixie/paths.nim b/src/pixie/paths.nim index c0a20e5..c6b86e6 100644 --- a/src/pixie/paths.nim +++ b/src/pixie/paths.nim @@ -1,5 +1,5 @@ -import blends, bumpy, chroma, common, images, internal, masks, paints, simd, - std/fenv, std/strutils, vmath +import blends, bumpy, chroma, common, images, internal, paints, simd, std/fenv, + std/strutils, vmath type WindingRule* = enum @@ -1132,7 +1132,7 @@ proc initPartitionEntry(segment: Segment, winding: int16): PartitionEntry = result.m = (segment.at.y - segment.to.y) / d result.b = segment.at.y - result.m * segment.at.x -proc solveX(entry: PartitionEntry, y: float32): float32 {.inline.} = +proc solveX(entry: PartitionEntry, y: float32): float32 {.inline.} = if entry.m == 0: entry.b else: @@ -1420,17 +1420,14 @@ proc computeCoverage( for j in i ..< fillStart + fillLen: coverages[j - startX] += sampleCoverage -proc clearUnsafe(target: Image | Mask, startX, startY, toX, toY: int) = +proc clearUnsafe(image: Image, startX, startY, toX, toY: int) = ## Clears data from [start, to). - if startX == target.width or startY == target.height: + if startX == image.width or startY == image.height: return let - start = target.dataIndex(startX, startY) - len = target.dataIndex(toX, toY) - start - when type(target) is Image: - fillUnsafe(target.data, rgbx(0, 0, 0, 0), start, len) - else: # target is Mask - fillUnsafe(target.data, 0, start, len) + start = image.dataIndex(startX, startY) + len = image.dataIndex(toX, toY) - start + fillUnsafe(image.data, rgbx(0, 0, 0, 0), start, len) proc fillCoverage( image: Image, @@ -1618,98 +1615,6 @@ proc fillCoverage( image.data[dataIndex] = blender(backdrop, source(rgbx, coverage)) inc dataIndex -proc fillCoverage( - mask: Mask, - startX, y: int, - coverages: seq[uint8], - blendMode: BlendMode -) = - var - x = startX - dataIndex = mask.dataIndex(x, y) - - template simdBlob(blendProc: untyped) = - when allowSimd: - when defined(amd64): - for _ in 0 ..< coverages.len div 16: - let - coveragesVec = mm_loadu_si128(coverages[x - startX].unsafeAddr) - eqZero = mm_cmpeq_epi8(coveragesVec, mm_setzero_si128()) - allZeroes = mm_movemask_epi8(eqZero) == 0xffff - if not allZeroes: - let backdrop = mm_loadu_si128(mask.data[dataIndex].addr) - mm_storeu_si128( - mask.data[dataIndex].addr, - blendProc(backdrop, coveragesVec) - ) - x += 16 - dataIndex += 16 - - template blendBlob(blendProc: untyped) = - for x in x ..< startX + coverages.len: - let coverage = coverages[x - startX] - if coverage != 0: - let backdrop = mask.data[dataIndex] - mask.data[dataIndex] = blendProc(backdrop, coverage) - inc dataIndex - - case blendMode: - of OverwriteBlend: - copyMem( - mask.unsafe[startX, y].addr, - coverages[0].unsafeAddr, - coverages.len - ) - - of NormalBlend: - simdBlob(maskBlendNormalSimd) - blendBlob(maskBlendNormal) - - of MaskBlend: - {.linearScanEnd.} - - when allowSimd: - when defined(amd64): - for _ in 0 ..< coverages.len div 16: - let - coveragesVec = mm_loadu_si128(coverages[x - startX].unsafeAddr) - eqZero = mm_cmpeq_epi8(coveragesVec, mm_setzero_si128()) - allZeroes = mm_movemask_epi8(eqZero) == 0xffff - if not allZeroes: - let backdrop = mm_loadu_si128(mask.data[dataIndex].addr) - mm_storeu_si128( - mask.data[dataIndex].addr, - maskBlendMaskSimd(backdrop, coveragesVec) - ) - else: - mm_storeu_si128(mask.data[dataIndex].addr, mm_setzero_si128()) - x += 16 - dataIndex += 16 - - for x in x ..< startX + coverages.len: - let coverage = coverages[x - startX] - if coverage != 0: - let backdrop = mask.data[dataIndex] - mask.data[dataIndex] = maskBlendMask(backdrop, coverage) - else: - mask.data[dataIndex] = 0 - inc dataIndex - - mask.clearUnsafe(0, y, startX, y) - mask.clearUnsafe(startX + coverages.len, y, mask.width, y) - - of SubtractMaskBlend: - simdBlob(maskBlendSubtractSimd) - blendBlob(maskBlendSubtract) - - of ExcludeMaskBlend: - simdBlob(maskBlendExcludeSimd) - blendBlob(maskBlendExclude) - - else: - let maskBlender = blendMode.maskBlender() - blendBlob(maskBlender) - proc fillHits( image: Image, rgbx: ColorRGBX, @@ -1805,68 +1710,6 @@ proc fillHits( image.data[dataIndex] = blender(backdrop, rgbx) inc dataIndex -proc fillHits( - mask: Mask, - startX, y: int, - hits: seq[(Fixed32, int16)], - numHits: int, - windingRule: WindingRule, - blendMode: BlendMode -) = - template simdBlob(mask: Mask, x: var int, len: int, blendProc: untyped) = - when allowSimd: - when defined(amd64): - var p = cast[uint](mask.data[mask.dataIndex(x, y)].addr) - let - iterations = len div 16 - vec255 = mm_set1_epi8(255) - for _ in 0 ..< iterations: - let backdrop = mm_loadu_si128(cast[pointer](p)) - mm_storeu_si128(cast[pointer](p), blendProc(backdrop, vec255)) - p += 16 - x += iterations * 16 - - case blendMode: - of NormalBlend, OverwriteBlend: - for (start, len) in hits.walkInteger(numHits, windingRule, y, mask.width): - fillUnsafe(mask.data, 255, mask.dataIndex(start, y), len) - - of MaskBlend: - {.linearScanEnd.} - - var filledTo = startX - for (start, len) in hits.walkInteger(numHits, windingRule, y, mask.width): - let gapBetween = start - filledTo - if gapBetween > 0: - fillUnsafe(mask.data, 0, mask.dataIndex(filledTo, y), gapBetween) - filledTo = start + len - - mask.clearUnsafe(0, y, startX, y) - mask.clearUnsafe(filledTo, y, mask.width, y) - - of SubtractMaskBlend: - for (start, len) in hits.walkInteger(numHits, windingRule, y, mask.width): - var x = start - simdBlob(mask, x, len, maskBlendSubtractSimd) - var dataIndex = mask.dataIndex(x, y) - for _ in x ..< start + len: - let backdrop = mask.data[dataIndex] - mask.data[dataIndex] = maskBlendSubtract(backdrop, 255) - inc dataIndex - - of ExcludeMaskBlend: - for (start, len) in hits.walkInteger(numHits, windingRule, y, mask.width): - var x = start - simdBlob(mask, x, len, maskBlendExcludeSimd) - var dataIndex = mask.dataIndex(x, y) - for _ in x ..< start + len: - let backdrop = mask.data[dataIndex] - mask.data[dataIndex] = maskBlendExclude(backdrop, 255) - inc dataIndex - - else: - failUnsupportedBlendMode(blendMode) - proc fillShapes( image: Image, shapes: seq[Polygon], @@ -2179,93 +2022,6 @@ proc fillShapes( image.clearUnsafe(0, 0, 0, startY) image.clearUnsafe(0, pathHeight, 0, image.height) -proc fillShapes( - mask: Mask, - shapes: seq[Polygon], - windingRule: WindingRule, - blendMode: BlendMode -) = - # Figure out the total bounds of all the shapes, - # rasterize only within the total bounds - let - segments = shapes.shapesToSegments() - bounds = computeBounds(segments).snapToPixels() - startX = max(0, bounds.x.int) - startY = max(0, bounds.y.int) - pathWidth = - if startX < mask.width: - min(bounds.w.int, mask.width - startX) - else: - 0 - pathHeight = min(mask.height, (bounds.y + bounds.h).int) - - if pathWidth == 0: - return - - if pathWidth < 0: - raise newException(PixieError, "Path int overflow detected") - - var - partitions = partitionSegments(segments, startY, pathHeight) - partitionIndex: int - entryIndices = newSeq[int](partitions.maxEntryCount) - numEntryIndices: int - coverages = newSeq[uint8](pathWidth) - hits = newSeq[(Fixed32, int16)](partitions.maxEntryCount) - numHits: int - - for y in startY ..< pathHeight: - if y >= partitions[partitionIndex].bottom: - inc partitionIndex - - let - partition = partitions[partitionIndex].addr - partitionTop = partition.top - partitionBottom = partition.bottom - partitionHeight = partitionBottom - partitionTop - if partitionHeight == 0: - continue - - let - scanTop = y.float32 - scanBottom = (y + 1).float32 - - numEntryIndices = 0 - if partition.twoNonintersectingSpanningSegments: - numEntryIndices = 2 - entryIndices[0] = 0 - entryIndices[1] = 1 - else: - for i in 0 ..< partition.entries.len: - if partition.entries[i].segment.to.y < scanTop or - partition.entries[i].segment.at.y >= scanBottom: - continue - entryIndices[numEntryIndices] = i - inc numEntryIndices - - computeCoverage( - cast[ptr UncheckedArray[uint8]](coverages[0].addr), - hits, - numHits, - mask.width, - y, - startX, - partitions, - partitionIndex, - entryIndices, - numEntryIndices, - windingRule - ) - if partitions[partitionIndex].requiresAntiAliasing: - mask.fillCoverage(startX, y, coverages, blendMode) - zeroMem(coverages[0].addr, coverages.len) - else: - mask.fillHits(startX, y, hits, numHits, windingRule, blendMode) - - if blendMode == MaskBlend: - mask.clearUnsafe(0, 0, 0, startY) - mask.clearUnsafe(0, pathHeight, 0, mask.height) - proc miterLimitToAngle*(limit: float32): float32 {.inline.} = ## Converts miter-limit-ratio to miter-limit-angle. arcsin(1 / limit) * 2 @@ -2445,18 +2201,6 @@ proc parseSomePath( elif type(path) is Path: path.commandsToShapes(closeSubpaths, pixelScale) -proc fillPath*( - mask: Mask, - path: SomePath, - transform = mat3(), - windingRule = NonZero, - blendMode = NormalBlend -) {.raises: [PixieError].} = - ## Fills a path. - var shapes = parseSomePath(path, true, transform.pixelScale()) - shapes.transform(transform) - mask.fillShapes(shapes, windingRule, blendMode) - proc fillPath*( image: Image, path: SomePath, @@ -2480,10 +2224,10 @@ proc fillPath*( return let - mask = newMask(image.width, image.height) + mask = newImage(image.width, image.height) fill = newImage(image.width, image.height) - mask.fillPath(path, transform, windingRule) + mask.fillPath(path, color(1, 1, 1, 1), transform, windingRule) # Draw the image (maybe tiled) or gradients. Do this with opaque paint and # and then apply the paint's opacity to the mask. @@ -2505,34 +2249,9 @@ proc fillPath*( if paint.opacity != 1: mask.applyOpacity(paint.opacity) - fill.draw(mask) + fill.draw(mask, blendMode = MaskBlend) image.draw(fill, blendMode = paint.blendMode) -proc strokePath*( - mask: Mask, - path: SomePath, - transform = mat3(), - strokeWidth: float32 = 1.0, - lineCap = ButtCap, - lineJoin = MiterJoin, - miterLimit = defaultMiterLimit, - dashes: seq[float32] = @[], - blendMode = NormalBlend -) {.raises: [PixieError].} = - ## Strokes a path. - let pixelScale = transform.pixelScale() - var strokeShapes = strokeShapes( - parseSomePath(path, false, pixelScale), - strokeWidth, - lineCap, - lineJoin, - miterLimit, - dashes, - pixelScale - ) - strokeShapes.transform(transform) - mask.fillShapes(strokeShapes, NonZero, blendMode) - proc strokePath*( image: Image, path: SomePath, @@ -2568,11 +2287,12 @@ proc strokePath*( return let - mask = newMask(image.width, image.height) + mask = newImage(image.width, image.height) fill = newImage(image.width, image.height) mask.strokePath( path, + color(1, 1, 1, 1), transform, strokeWidth, lineCap, @@ -2601,7 +2321,7 @@ proc strokePath*( if paint.opacity != 1: mask.applyOpacity(paint.opacity) - fill.draw(mask) + fill.draw(mask, blendMode = MaskBlend) image.draw(fill, blendMode = paint.blendMode) proc overlaps( diff --git a/src/pixie/simd.nim b/src/pixie/simd.nim index f039b1a..57b0b8d 100644 --- a/src/pixie/simd.nim +++ b/src/pixie/simd.nim @@ -1,6 +1,6 @@ -import simd/internal, system/memory +import simd/internal -export internal, memory +export internal const allowSimd* = not defined(pixieNoSimd) and not defined(tcc) diff --git a/src/pixie/simd/neon.nim b/src/pixie/simd/neon.nim index 19fa0a3..e28572e 100644 --- a/src/pixie/simd/neon.nim +++ b/src/pixie/simd/neon.nim @@ -1,4 +1,4 @@ -import chroma, internal, nimsimd/neon, pixie/common, system/memory, vmath +import chroma, internal, nimsimd/neon, pixie/common, vmath when defined(release): {.push checks: off.} @@ -160,40 +160,6 @@ proc toPremultipliedAlphaNeon*(data: var seq[ColorRGBA | ColorRGBX]) {.simd.} = c.b = ((c.b.uint32 * c.a + 127) div 255).uint8 data[i] = c -proc newImageNeon*(mask: Mask): Image {.simd.} = - result = newImage(mask.width, mask.height) - - var i: int - for _ in 0 ..< mask.data.len div 16: - let alphas = vld1q_u8(mask.data[i].addr) - template doLane(lane: int) = - let packed = vgetq_lane_u32(cast[uint32x4](alphas), lane) - var unpacked = cast[uint8x16](vmovq_n_u32(packed)) - unpacked = vzip1q_u8(unpacked, unpacked) - unpacked = vzip1q_u8(unpacked, unpacked) - vst1q_u8(result.data[i + lane * 4].addr, unpacked) - doLane(0) - doLane(1) - doLane(2) - doLane(3) - i += 16 - - for i in i ..< mask.data.len: - let v = mask.data[i] - result.data[i] = rgbx(v, v, v, v) - -proc newMaskNeon*(image: Image): Mask {.simd.} = - result = newMask(image.width, image.height) - - var i: int - for _ in 0 ..< image.data.len div 16: - let alphas = vld4q_u8(image.data[i].addr).val[3] - vst1q_u8(result.data[i].addr, alphas) - i += 16 - - for i in i ..< image.data.len: - result.data[i] = image.data[i].a - proc invertNeon*(image: Image) {.simd.} = var i: int @@ -232,49 +198,6 @@ proc invertNeon*(image: Image) {.simd.} = toPremultipliedAlphaNeon(image.data) -proc invertNeon*(mask: Mask) {.simd.} = - var - i: int - p = cast[uint](mask.data[0].addr) - # Align to 16 bytes - while i < mask.data.len and (p and 15) != 0: - mask.data[i] = 255 - mask.data[i] - inc i - inc p - - let - vec255 = vmovq_n_u8(255) - iterations = mask.data.len div 16 - for _ in 0 ..< iterations: - let values = vld1q_u8(cast[pointer](p)) - vst1q_u8(cast[pointer](p), vsubq_u8(vec255, values)) - p += 16 - i += 16 * iterations - - for i in i ..< mask.data.len: - mask.data[i] = 255 - mask.data[i] - -proc ceilNeon*(mask: Mask) {.simd.} = - var - i: int - p = cast[uint](mask.data[0].addr) - - let - zeroVec = vmovq_n_u8(0) - vec255 = vmovq_n_u8(255) - iterations = mask.data.len div 16 - for _ in 0 ..< iterations: - var values = vld1q_u8(cast[pointer](p)) - values = vceqq_u8(values, zeroVec) - values = vbicq_u8(vec255, values) - vst1q_u8(cast[pointer](p), values) - p += 16 - i += 16 * iterations - - for i in i ..< mask.data.len: - if mask.data[i] != 0: - mask.data[i] = 255 - proc applyOpacityNeon*(image: Image, opacity: float32) {.simd.} = let opacity = round(255 * opacity).uint8 if opacity == 255: @@ -313,32 +236,5 @@ proc applyOpacityNeon*(image: Image, opacity: float32) {.simd.} = rgbx.a = ((rgbx.a * opacity) div 255).uint8 image.data[i] = rgbx -proc applyOpacityNeon*(mask: Mask, opacity: float32) {.simd.} = - let opacity = round(255 * opacity).uint8 - if opacity == 255: - return - - if opacity == 0: - nimSetMem(mask.data[0].addr, 0.cint, mask.data.len) - - var - i: int - p = cast[uint](mask.data[0].addr) - - let - opacityVec = vmov_n_u8(opacity) - iterations = mask.data.len div 8 - for _ in 0 ..< iterations: - let - values = vld1_u8(cast[pointer](p)) - multiplied = vmull_u8(values, opacityVec) - rounded = vraddhn_u16(multiplied, vrshrq_n_u16(multiplied, 8)) - vst1_u8(cast[pointer](p), rounded) - p += 8 - i += 8 * iterations - - for i in i ..< mask.data.len: - mask.data[i] = ((mask.data[i] * opacity) div 255).uint8 - when defined(release): {.pop.} diff --git a/src/pixie/simd/sse2.nim b/src/pixie/simd/sse2.nim index 5724cfd..313c756 100644 --- a/src/pixie/simd/sse2.nim +++ b/src/pixie/simd/sse2.nim @@ -1,4 +1,4 @@ -import chroma, internal, nimsimd/sse2, pixie/common, system/memory, vmath +import chroma, internal, nimsimd/sse2, pixie/common, vmath when defined(release): {.push checks: off.} @@ -207,43 +207,6 @@ proc toPremultipliedAlphaSse2*(data: var seq[ColorRGBA | ColorRGBX]) {.simd.} = c.b = ((c.b.uint32 * c.a + 127) div 255).uint8 data[i] = c -proc newImageSse2*(mask: Mask): Image {.simd.} = - result = newImage(mask.width, mask.height) - - var i: int - for _ in 0 ..< mask.data.len div 16: - var alphas = mm_loadu_si128(mask.data[i].addr) - for j in 0 ..< 4: - var unpacked = unpackAlphaValues(alphas) - unpacked = mm_or_si128(unpacked, mm_srli_epi32(unpacked, 8)) - unpacked = mm_or_si128(unpacked, mm_srli_epi32(unpacked, 16)) - mm_storeu_si128(result.data[i + j * 4].addr, unpacked) - alphas = mm_srli_si128(alphas, 4) - i += 16 - - for i in i ..< mask.data.len: - let v = mask.data[i] - result.data[i] = rgbx(v, v, v, v) - -proc newMaskSse2*(image: Image): Mask {.simd.} = - result = newMask(image.width, image.height) - - var i: int - for _ in 0 ..< image.data.len div 16: - let - a = mm_loadu_si128(image.data[i + 0].addr) - b = mm_loadu_si128(image.data[i + 4].addr) - c = mm_loadu_si128(image.data[i + 8].addr) - d = mm_loadu_si128(image.data[i + 12].addr) - mm_storeu_si128( - result.data[i].addr, - pack4xAlphaValues(a, b, c, d) - ) - i += 16 - - for i in i ..< image.data.len: - result.data[i] = image.data[i].a - proc invertSse2*(image: Image) {.simd.} = var i: int @@ -285,56 +248,6 @@ proc invertSse2*(image: Image) {.simd.} = toPremultipliedAlphaSse2(image.data) -proc invertSse2*(mask: Mask) {.simd.} = - var - i: int - p = cast[uint](mask.data[0].addr) - # Align to 16 bytes - while i < mask.data.len and (p and 15) != 0: - mask.data[i] = 255 - mask.data[i] - inc i - inc p - - let - vec255 = mm_set1_epi8(255) - iterations = mask.data.len div 64 - for _ in 0 ..< iterations: - let - a = mm_load_si128(cast[pointer](p)) - b = mm_load_si128(cast[pointer](p + 16)) - c = mm_load_si128(cast[pointer](p + 32)) - d = mm_load_si128(cast[pointer](p + 48)) - mm_store_si128(cast[pointer](p), mm_sub_epi8(vec255, a)) - mm_store_si128(cast[pointer](p + 16), mm_sub_epi8(vec255, b)) - mm_store_si128(cast[pointer](p + 32), mm_sub_epi8(vec255, c)) - mm_store_si128(cast[pointer](p + 48), mm_sub_epi8(vec255, d)) - p += 64 - i += 64 * iterations - - for i in i ..< mask.data.len: - mask.data[i] = 255 - mask.data[i] - -proc ceilSse2*(mask: Mask) {.simd.} = - var - i: int - p = cast[uint](mask.data[0].addr) - - let - zeroVec = mm_setzero_si128() - vec255 = mm_set1_epi8(255) - iterations = mask.data.len div 16 - for _ in 0 ..< iterations: - var values = mm_loadu_si128(cast[pointer](p)) - values = mm_cmpeq_epi8(values, zeroVec) - values = mm_andnot_si128(values, vec255) - mm_storeu_si128(cast[pointer](p), values) - p += 16 - i += 16 * iterations - - for i in i ..< mask.data.len: - if mask.data[i] != 0: - mask.data[i] = 255 - proc applyOpacitySse2*(image: Image, opacity: float32) {.simd.} = let opacity = round(255 * opacity).uint16 if opacity == 255: @@ -379,45 +292,9 @@ proc applyOpacitySse2*(image: Image, opacity: float32) {.simd.} = rgbx.a = ((rgbx.a * opacity) div 255).uint8 image.data[i] = rgbx -proc applyOpacitySse2*(mask: Mask, opacity: float32) {.simd.} = - let opacity = round(255 * opacity).uint16 - if opacity == 255: - return - - if opacity == 0: - nimSetMem(mask.data[0].addr, 0.cint, mask.data.len) - - var - i: int - p = cast[uint](mask.data[0].addr) - - let - oddMask = mm_set1_epi16(0xff00) - div255 = mm_set1_epi16(0x8081) - zeroVec = mm_setzero_si128() - opacityVec = mm_slli_epi16(mm_set1_epi16(opacity), 8) - iterations = mask.data.len div 16 - for _ in 0 ..< iterations: - let values = mm_loadu_si128(cast[pointer](p)) - if mm_movemask_epi8(mm_cmpeq_epi16(values, zeroVec)) != 0xffff: - var - valuesEven = mm_slli_epi16(values, 8) - valuesOdd = mm_and_si128(values, oddMask) - valuesEven = mm_mulhi_epu16(valuesEven, opacityVec) - valuesOdd = mm_mulhi_epu16(valuesOdd, opacityVec) - valuesEven = mm_srli_epi16(mm_mulhi_epu16(valuesEven, div255), 7) - valuesOdd = mm_srli_epi16(mm_mulhi_epu16(valuesOdd, div255), 7) - mm_storeu_si128( - cast[pointer](p), - mm_or_si128(valuesEven, mm_slli_epi16(valuesOdd, 8)) - ) - p += 16 - i += 16 * iterations - - for i in i ..< mask.data.len: - mask.data[i] = ((mask.data[i] * opacity) div 255).uint8 - -proc blitLineNormalSse2*(a, b: ptr UncheckedArray[ColorRGBX], len: int) {.simd.} = +proc blitLineNormalSse2*( + a, b: ptr UncheckedArray[ColorRGBX], len: int +) {.simd.} = # TODO align to 16 diff --git a/tests/all.nim b/tests/all.nim index 53f7b84..a553833 100644 --- a/tests/all.nim +++ b/tests/all.nim @@ -6,7 +6,6 @@ import test_images, test_images_draw, test_jpeg, - test_masks, test_paints, test_paths, test_png, diff --git a/tests/bench_fonts.nim b/tests/bench_fonts.nim index 6d7df49..32bbc01 100644 --- a/tests/bench_fonts.nim +++ b/tests/bench_fonts.nim @@ -7,7 +7,6 @@ font.size = 16 let image = newImage(500, 300) - # mask = newMask(500, 300) timeIt "typeset": discard font.typeset(text, bounds = vec2(image.width.float32, 0)) @@ -15,5 +14,3 @@ timeIt "typeset": timeIt "fill text": image.fill(rgba(255, 255, 255, 255)) image.fillText(font, text, bounds = vec2(image.width.float32, 0)) - # mask.fill(0) - # mask.fillText(font, text, bounds = mask.wh) diff --git a/tests/bench_images.nim b/tests/bench_images.nim index b99c3eb..28ab7aa 100644 --- a/tests/bench_images.nim +++ b/tests/bench_images.nim @@ -89,33 +89,6 @@ timeIt "toStraightAlpha": reset() -block: - let path = newPath() - path.ellipse(image.width / 2, image.height / 2, 300, 300) - - let mask = newMask(image.width, image.height) - mask.fillPath(path) - - timeIt "mask": - image.draw(mask) - -reset() - -timeIt "newMask(image)": - let mask = image.newMask() - doAssert mask[0, 0] == image[0, 0].a - -reset() - -block: - let mask = image.newMask() - - timeIt "newImage(mask)": - let image = newImage(mask) - doAssert mask[0, 0] == image[0, 0].a - - reset() - block: let image = newImage(200, 200) image.fill(rgbx(255, 0, 0, 255)) diff --git a/tests/bench_images_draw.nim b/tests/bench_images_draw.nim index a560100..ed42281 100644 --- a/tests/bench_images_draw.nim +++ b/tests/bench_images_draw.nim @@ -77,17 +77,6 @@ block: a.draw(b, translate(vec2(0, 500)) * rotate(toRadians(45)), NormalBlend) keep(b) -block: - let - a = newImage(1000, 1000) - b = newMask(500, 500) - a.fill(rgba(255, 0, 0, 255)) - b.fill(rand(255).uint8) - - timeIt "mask smooth rotate 45 deg": - a.draw(b, translate(vec2(0, 500)) * rotate(toRadians(45)), NormalBlend) - keep(b) - block: let a = newImage(100, 100) diff --git a/tests/bench_images_draw_correct.nim b/tests/bench_images_draw_correct.nim index bed3c6f..93a27a0 100644 --- a/tests/bench_images_draw_correct.nim +++ b/tests/bench_images_draw_correct.nim @@ -1,5 +1,4 @@ -import pixie, strformat, xrays -import pixie/images {.all.} +import benchy, pixie, pixie/images {.all.}, strformat, xrays block: let @@ -11,8 +10,6 @@ block: a.drawCorrect(b, translate(vec2(250, 250)), blendMode = OverwriteBlend) a.writeFile("tests/images/rotate0.png") -import benchy - block: let a = newImage(1000, 1000) @@ -24,7 +21,6 @@ block: a.drawCorrect(b, translate(vec2(250, 250)), blendMode = OverwriteBlend) - block: let a = newImage(1000, 1000) diff --git a/tests/bench_jpeg.nim b/tests/bench_jpeg.nim index 6c79c6d..2885216 100644 --- a/tests/bench_jpeg.nim +++ b/tests/bench_jpeg.nim @@ -1,4 +1,4 @@ -import benchy, pixie/fileformats/jpeg, os +import benchy, os, pixie/fileformats/jpeg const jpegFiles* = [ diff --git a/tests/bench_masks.nim b/tests/bench_masks.nim deleted file mode 100644 index c3f21c3..0000000 --- a/tests/bench_masks.nim +++ /dev/null @@ -1,71 +0,0 @@ -import benchy, pixie - -block: - let mask = newMask(2560, 1440) - - proc reset() = - mask.fill(63) - - reset() - - timeIt "minifyBy2": - let minified = mask.minifyBy2() - doAssert minified[0, 0] == 63 - - reset() - - timeIt "magnifyBy2": - let magnified = mask.magnifyBy2() - doAssert magnified[0, 0] == 63 - - reset() - - timeIt "invert": - mask.invert() - - reset() - - timeIt "applyOpacity": - reset() - mask.applyOpacity(0.5) - - reset() - - timeIt "ceil": - mask.ceil() - -block: - let mask = newMask(400, 400) - mask.fill(63) - - timeIt "blur": - mask.blur(12) - - block spread_1: - let p = newPath() - p.rect(100, 100, 200, 200) - - timeIt "spread_1": - mask.fill(0) - mask.fillPath(p) - mask.spread(5) - - block spread_2: - let p = newPath() - p.rect(100, 100, 200, 200) - - timeIt "spread_2": - mask.fill(0) - mask.fillPath(p) - mask.spread(10) - - block spread_3: - timeIt "spread_3": - mask.fill(255) - mask.spread(10) - - block spread_4: - timeIt "spread_4": - mask.fill(0) - mask.unsafe[200, 200] = 255 - mask.spread(5) diff --git a/tests/bench_paths.nim b/tests/bench_paths.nim index f890b48..c4eb793 100644 --- a/tests/bench_paths.nim +++ b/tests/bench_paths.nim @@ -31,90 +31,50 @@ let roundedRect = newPath() roundedRect.roundedRect(10.5, 10.5, 479, 279, radius, radius, radius, radius) # roundedRect.roundedRect(10, 10, 480, 280, radius, radius, radius, radius) -block: - let image = newImage(width, height) +let image = newImage(width, height) - timeIt "rect Image OverwriteBlend": - paint.blendMode = OverwriteBlend - image.fillPath(rect, paint) +timeIt "rectOverwriteBlend": + paint.blendMode = OverwriteBlend + image.fillPath(rect, paint) - timeIt "rect Image NormalBlend": - paint.blendMode = NormalBlend - image.fillPath(rect, paint) +timeIt "rect NormalBlend": + paint.blendMode = NormalBlend + image.fillPath(rect, paint) - timeIt "rect Image MaskBlend": - paint.blendMode = MaskBlend - image.fill(rgbx(255, 255, 255, 255)) - image.fillPath(rect, paint) +timeIt "rect MaskBlend": + paint.blendMode = MaskBlend + image.fill(rgbx(255, 255, 255, 255)) + image.fillPath(rect, paint) - timeIt "rect Image SubtractMaskBlend": - paint.blendMode = SubtractMaskBlend - image.fill(rgbx(255, 255, 255, 255)) - image.fillPath(rect, paint) +timeIt "rect SubtractMaskBlend": + paint.blendMode = SubtractMaskBlend + image.fill(rgbx(255, 255, 255, 255)) + image.fillPath(rect, paint) - timeIt "rect Image ExcludeMaskBlend": - paint.blendMode = ExcludeMaskBlend - image.fill(rgbx(255, 255, 255, 255)) - image.fillPath(rect, paint) +timeIt "rect ExcludeMaskBlend": + paint.blendMode = ExcludeMaskBlend + image.fill(rgbx(255, 255, 255, 255)) + image.fillPath(rect, paint) - timeIt "roundedRect Image OverwriteBlend": - paint.blendMode = OverwriteBlend - image.fillPath(roundedRect, paint) +timeIt "roundedRect OverwriteBlend": + paint.blendMode = OverwriteBlend + image.fillPath(roundedRect, paint) - timeIt "roundedRect Image NormalBlend": - paint.blendMode = NormalBlend - image.fillPath(roundedRect, paint) +timeIt "roundedRect NormalBlend": + paint.blendMode = NormalBlend + image.fillPath(roundedRect, paint) - timeIt "roundedRect Image MaskBlend": - paint.blendMode = MaskBlend - image.fill(rgbx(255, 255, 255, 255)) - image.fillPath(roundedRect, paint) +timeIt "roundedRect MaskBlend": + paint.blendMode = MaskBlend + image.fill(rgbx(255, 255, 255, 255)) + image.fillPath(roundedRect, paint) - timeIt "roundedRect Image SubtractMaskBlend": - paint.blendMode = SubtractMaskBlend - image.fill(rgbx(255, 255, 255, 255)) - image.fillPath(roundedRect, paint) +timeIt "roundedRect SubtractMaskBlend": + paint.blendMode = SubtractMaskBlend + image.fill(rgbx(255, 255, 255, 255)) + image.fillPath(roundedRect, paint) - timeIt "roundedRect Image ExcludeMaskBlend": - paint.blendMode = ExcludeMaskBlend - image.fill(rgbx(255, 255, 255, 255)) - image.fillPath(roundedRect, paint) - -block: - let mask = newMask(width, height) - - timeIt "rect Mask OverwriteBlend": - mask.fillPath(rect, blendMode = OverwriteBlend) - - timeIt "rect Mask NormalBlend": - mask.fillPath(rect, blendMode = NormalBlend) - - timeIt "rect Mask MaskBlend": - mask.fill(255) - mask.fillPath(rect, blendMode = MaskBlend) - - timeIt "rect Mask SubtractMaskBlend": - mask.fill(255) - mask.fillPath(rect, blendMode = SubtractMaskBlend) - - timeIt "rect Mask ExcludeMaskBlend": - mask.fill(255) - mask.fillPath(rect, blendMode = ExcludeMaskBlend) - - timeIt "roundedRect Mask OverwriteBlend": - mask.fillPath(roundedRect, blendMode = OverwriteBlend) - - timeIt "roundedRect Mask NormalBlend": - mask.fillPath(roundedRect, blendMode = NormalBlend) - - timeIt "roundedRect Mask MaskBlend": - mask.fill(255) - mask.fillPath(roundedRect, blendMode = MaskBlend) - - timeIt "roundedRect Mask SubtractMaskBlend": - mask.fill(255) - mask.fillPath(roundedRect, blendMode = SubtractMaskBlend) - - timeIt "roundedRect Mask ExcludeMaskBlend": - mask.fill(255) - mask.fillPath(roundedRect, blendMode = ExcludeMaskBlend) +timeIt "roundedRect ExcludeMaskBlend": + paint.blendMode = ExcludeMaskBlend + image.fill(rgbx(255, 255, 255, 255)) + image.fillPath(roundedRect, paint) diff --git a/tests/fonts/masters/mask_fill.png b/tests/fonts/masters/mask_fill.png deleted file mode 100644 index 670bf7e102dca6900552b46e9feae7b9b94f71b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 662 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGGgAGU?ZmZ`8Qk(@Ik;M!Q+`=Ht$S`Y;1W=H% zILO_JVcj{Imp~3nx}&cn1H;CC?mvmF3=B-#o-U3d6^w6hUo5=rAi(y(^su$2qw138 z8?p|p6TCQpHbMwtP&riFCO)lM5nl-m{`qo)z)A$*et27r*E!}_fz0$vhbKc)QaKF<2)34e4 zx|zB3kMo^5A2eA%e$%kM8ua8?_p1$=MZ*LnER#&N)vbY~p9 z&y^JoN6r_R6wY{Wd%P@sf!gchwkJ9XP2ci1-r8G#IT!Wii{N(V$Fn8USQ96m(hd6OXLBE`PM5;lN4(0Syig5xLo4)~2s5`)c;`t#OFq8{cml_u1CHu1-mv z`&gV&cuTGL>dud=Hm?5`bDhOTa9czGP}iSZNn7t{$9$iYU%&d|_4Y5ly=!+qh^*l8 z_M(|0G=RnC7ecmCsaM)dbP0l+XkK%qs^c diff --git a/tests/fonts/masters/mask_stroke.png b/tests/fonts/masters/mask_stroke.png deleted file mode 100644 index 16b78f5534123852acb1f688f48a3600436e4774..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3262 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 CKpG1G diff --git a/tests/fonts/svg_changa.png b/tests/fonts/svg_changa.png index 3b938f9afab59d837db220bede4aadd3bac17615..30889ca8765110d84056d5b50882ef0ad2ae0bd0 100644 GIT binary patch literal 2880 zcmchZ`!^Gg|Hrp!BbTLy!qB>)gv>DJU2254JGm{_N`zsNxrLSJol6%=h`mQ{wasmW zxr{OG<1&}bDxq?hOS#|j@dtc={GQJbujlKW*LnT$Jm+mBAKHo9et_d274qLi_%>=)Sj4MqWZGLPs;dQr0&!yHdnujxV|vL^lctZw+vrg z$kPv<>sF*7!K$>La7eC6c5BTLkDJrPWDnJdcGXbpTCKGcXo0 zJFM()SFGTU?%AiwfcKC*KFVKyJ%^+z9d}VF;(Unv*iRwn-}#g4ngI#Js)&^P2$Gx324YEf%plZ_ ztH}Dpk`0B+xBjPB=mCvpuKk~g^o}IjH$zr?&E(Y|1!|H>j={nj4e=J6w`~;n z<~FG}Gk-rR4}&Yj9NIV=Qd&sHCxn52yLgR)-8+8$wP^`sp@0wDe@Tu7uqNWw0G>dN zs@k7J59mgUO{~t(KP5YJ3ZEHS45`V_W%8?vb@`QI-F8ki0-E8@O=W; z&0qE>bXYv%da?LRZe=&7;cMBA%W*18l<#m}5cOG)`l!h3g4)`9*(zK{D5ky~dI*x| zFz(JLFDgk4i=v5yv_3o0@ocMLq=XgI2A~KTE{$B>wa78wJ!l1478!SA?dFX9%(RNd z`+Nzp)ICA-X$E;fM10+nWn9844Z}j2wcvN0t_1+VtIYam}(oLxZv5}TPAr06sZsMdba-2 z$Ac?l#nsFl=w-^$Y+=?LyUz|}25G0h0TQ7W;Ijx6;RWrhp3Qm;r6Nu^k;I{77iFPpt%tjb)GbV$q}(rDM?CinBK!}x9H}xE1#H* zxJ5!jE{%4@V~47`m$o%7SZ$}s2WKHo`=1o1zqhQmp6e7+=+2+(?ddwqQB?(hcd6oB z4Dbxn9+E@Hkx%2b(WMG<&6;9l$!H>S$oXz+kMHT80XihzoC#ak&GqkOuzJLP@j+jQcT4Svf-`yh=1_I)?wF`8Q}Wz@`} z4im=W$wGUxF~!d)G;Asqzq>ixU~$7t0*n#Gk85vo{GYb!;tu2NXyiR1x^@vSQlyGK$)O~ql9_gg<*94#}+DSt{BwnG5>5bfL z(6pRYhQ(HE=wtHJ$%)IX zs=5NWeTM#wsy|6<^)Z8QFlsuT{Duhk!pQe+h`t}*Czh06cy@99E?>iu1ShGWY|ttq zP#EH85RVF&&H;|`c+now{)8)?@AlDZlo;FILx^>#E zWOanoS2$pyRl}{Qu{KT;f7f%yLiOKJ?I{@@aSJUt7m;z-NB{HIvLiW#%sd~Y?gzd; zK~=+rGJ4Ss{VkDCZjty5kDwQuU*Qj{V1bK7rE0^n;Rtpdzsm&bKO2I=7DnDy3&ioX zoL08v>*JOyJXnAZXp9G&^5oVm0zR@v09Z~YMzM(oI1=>-%($u=w(F>6bnZxZUmX2r z1e1f~b4+e~8|43v?rY_@*GG2UR@;ehUU%J~@}!iNeG22{2m zU&hD{8@isc!`vx&z|X4~OYim0m~>9UCay8lZiy5;PUQ~{&uh`o!jB|Wz8XD`_>Df7zc$ldr{*7Z}rz-JuW#=DDsc7cCTWBk!hvkS)NzWZRb8Fra<;0 z)qRlE;Z=>acO5BeBHOj-*Aub92{?t>yP9*n_3Q+92m748)W`ct$H-{S1i1Q;j=h>1 zD7Umm&XYP)yqB<~6uJ`O#6plZE-Quh*0tn~vLx7f|5NLP`(3&w|2OG_w{3M9uQgn( z4bohtwX&j05Ghp|7V(`@8b!#-C~ zLc^TkxLAT08>%AD&&DtfeY-FlWviysBPg0TmP>oEWm|&n*r?OOV*TER3H;c^ZL%q9B(xKMN9zS9 z&2O2gPW*(Z{rEB7l-E~8X?%+!*EG*W54H{@r4}!)PxxLrLHyNJ>li2@PtC&ODvMK z%>EstQ;8WM DNhnYm literal 2291 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 X3Lr~vm(KrZ$@8FWU68Fdf!Y57oLQ89 literal 2384 zcmb_e`9IT-1AfoVTyx}VGND++T;)S!$dQ6? zkE0wbxpItr5+Oy7Pv8IH`@{1*ujhy7`RV!LA)_5_#6%QD000oPv$eYLM|=JtSm+M{ z+!YlL00_(3Sy{NogH}qCTxB>=cIOH3@pOX9s4%}+x`dE3-x0T?v6ii#_I z4X)TO4`Oa`7-wFRFZy#OQYMnheW7v@HzzA}KSuhbr;B3LvC%<60RE#?afdahx$+^S4VJ zw`J?IDEEP}uqWeB6f?IbD5V4Q1Kv(y_}pY;;;3RK*Ub?U&@_A+i*RZC+*B6gBJpsC z4s7DF7T5C4Zj9!Nz+|9KN4^O8&l?+m@1u&t%%}FzHY}}~%A(FlSbV9Tr5JO9sR4Pv zMd`72Hbpij_20B>MY5x02aBs&-&dWo77}oz=*_`s)oV=pc*H>K8Z-L&%nPkTUE+|KZ(sUf}@4Blywg-iV- zWN|%TB=VDYJu(2hBbjL0ecAr;$-1j#m5aDzN46r)DOxAqmh*w!eM4vSDF4P68bl;O znRO4&e+R@FsALV^K_zY4NT(p-p~shEpdxRjN6!AyU*ox{gE_p3>Qb->2enD_Se&4i zkJ)|)PEzxkTwTih=4+K~cesB$gXm=|#8d&Q*j;@@4R4UGgkKY?HP&zIQ>^)-QB7Be z7fRU{}F__I6`X0`29XPr&sepI2bhqbWM;5VSB7^Jj>LB%!2nH&2_)iFijwX{>1 z6SDW%eV~zRhaTn5OSFk@`_O^x?1AgN@FL5=ORDo@!m+XVxl@u$C7v*4&4sD@SVDo$ z5+I->z}OVf^wLpvYt&+KElubgM_IRu`$c8A|Oa4j<84dyml_ zit#Q$^GYfKGS*``6$?a_US)JdwZ}ySU%bh3S|q4LQvt517>+ z%ASf6EWZ%5B3%O_Q8fbJlDfuuNlD_=e)sU1x#-{|&v z1h4r=aYTkNslZeAF4DOMs?|>RMBBC^dE=RBqF?l(=E(I8#Wh}Zd&#DvQ*7rPxXn(H zg>EdUWuW2TZ6!-pZ;5IITEK3SvnMLyZZpA%NX*|Dsc|)kLS*&bA+K`Frh!*-S>|?^ zQ1pTpSAz%?zONm1=P#2+HPCMR zsuN6kOr#sBIaQOOUF|Z_xA)|ESVDq}9lDkvavS2YT~WCO4fPz!Waac=tX{g#(&pg%nIoGz;iI5 zs(vr>Kto8_)|Hne^^K0r_-iP!^^`A09yS>d^od>+^@?B^{z=&_PF8tNQw$-%29)sd zs|NmF$Xpup<^rldD23U*l?;x2uHK)dAP@6x2I?z6fl`X!>7FEdlIxCFT2^#f0S*fU zQ?A~cXU+ANoR>AY^Vb63U=S*VvW-zzgbUI1fl)?Ix;#*`x|AJd=CI!QqR3CkeYWG) zk)wJLAZ6dYh;o}|wte2H#Nvlbw zgBwa?Y_ETNr8zz0_o)#yF{%7zxH>}(T?zG|9BIlvbp7^2LgTIVzYAgx z@7&2(rtdPH%>GO%9u=kv)QukqFeo2JU-kwp<#)C{tQ-H>iGyX$FNkr{%bjXXbU!1s zm*R`hya5s7B0t=pMb22>{@HSS>VrCJePxPg#xUA>x1#p-*Ob%NS11(oCaKgj(vWSF z7Biqz7y?G!iQ(Z+hO)e6G^ZOVQ3Q=iQ3>&_cr5{mmSA2QKct?e}!f3D>Pk>xI1lnZX<1TAFA*;aad~o z$1;PI(-!e_aC>v~D%HTx_UYLTPX3MIgSi%!emPZX85q`*OqxKesv75$dc@RK|KIi( ZGFu>AVf>$g-v3=CJ8MU)M=1Z){{W^LZP)++ diff --git a/tests/fonts/svg_ibm.png b/tests/fonts/svg_ibm.png index 436340115914bbd04b35bdeaa3aaf927bcde7964..de11b853b45077145b9fa2991b459da155bf99e2 100644 GIT binary patch literal 1707 zcmc&#`&ZHj9ED`4IWRMYEGL#s%UO8j{!4xJZbLeg-!@_ z1h%CwNI%AK?tYnYHx+l`)Aze78u%A{7ud`{!#`&12zp`c7{%Pw>$OV#*Qq07kvmo0 zT1OwfR+~Gbq|Z=EGr9G(_d-E4fqn%LFnA*dl^)h5>1$&|uSCF}8nDNmv@VUJPo89* zVafDzOmfP&&l~z*HLf!O;r#_I+qBbAsqD$iUZCiG54SKgO-LqXv0gxt}xSmJtH5m%&}G(CKVo zFG8By&s)jDs0_@6A@`)XYTDWP5^te}lK@L{#N$vcS2HoFq%egT*<%%0h8Xu=rBYbn zo*pBp2u4d@PCLboW> zxI#;fbSYeJnKI*!7TC)|C|Oq*QyWFbAX8kr-;GIhB9d2rU&OpL8v-EMr}B&61PG$+ z<8(pkK7Sh22>Y*GP(GVD(BUMz>_tW8d=bZYaZ>O_YBk(ivPW20y2a2Ktv^RTIv6IY zYgS})$xUgBZE5XT;uuuFb7EHS>2`rq)5<_;MS1+YLGxZ3X;a-~KRWfG0IuDeF5o3l#0Zjqh@nVt`9~-H@*RUEn z!V`2oT&`qBAD@Z&xlQL}zgZ@_k{8?Efk1mlm;JPCi$&o&t=|xV$KiRm0kFw6*ZHQ3 z^cp|{^{49MGCokhB@UGzfILDtEZV_EiQjkzuQrN%9JTfPp6w?&1BzJr l(2@-@ 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 G;Qs}+g#lLp literal 2527 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 literal 1830 zcmb`I=Ofz*1IK?6BNZ!R&q%E(=N`na8VOOQqCvGq&Z9MAwu*|?lp`FMc+40vi$ke# zMw=S7dZkw}Vsl2-rlqPzpFaP?^Wyvcy!gKPy!%oe9c%>oW%vOA5VXZ%oPKcdN4z0F z3iz;%-~a&cwk^hj5DD7Ojd3J6gZmX<3BX)1cDKM~W3B?%+)t%y$6)q-SiI*z!8MQf z<0U%*lT5R68urSSU-$y+#*VnK677T5#i7hvmU6BK^@xzFE(a?e))T z58mJ;@{&*;JRWLqd$;4&m+EtJTNnX$^R*n|`KwpOlKfd7p1Brpk8BV_S&+SwA61O9{(VohER1O~vfb@CPt?i6&b6qEqZ>BtcmleK#VYzmK8z zCQk}wP==KJl!E=Vg!2i^gv937{=T5C91}y#xJ+Dr@jU(X_zW)H*q^JpH6zU;*Xk0_ zq6Gp~QW7>xu~jy=sY9Nc?tdI#fEPaAIUZQ2?U=N<DD8MsxaOU040(itkq8&M!muU%>yiMw^p z2vo6fQ$y$3m5_gH`HdSR(|19JUoM@2;mf~*lTVW-@}EsTDdPI86KSGl>wStSE*Hmc zOPs!^NaiHiD1UH-uu^%&md@UDPc@rbU4z8OpQMTfDe*ad+-myh zUZXlI(T4MRnMZro71-Fo%SZ`36ERn11uzkz3Z_?u%1q;NM9*R``RznvJA`rvaOU<4 zP_^U{s}tL_7u_#{F1C6O&ZmUPBHo@}ur7fNZhO^FF@KJR5LuK=buAI;4}yl&zYX%t zygRnfJZkk}dBzG|{Gn#_rjQRl`{w4=xH(FC*K;v;Pr{K@@p9#ofyJXYUL#|aO>SVE zj3eb$yaobr;x%bl!h#9c!{E7cGMLFjAZ_}&{m|(EwNuLzsYN$HHQ$+8n_9RP%Ur>q zi9Xa>o<-?EzOi?7vod{&V_&&=OwW26&qxmz6V#^M4sa$DRdpG(q3|)D>T7{Cl%55Bl<|tm6&i^8MQ*<;7q4;NT}Z9cU#AX4;Mwm^kA=D(#FBe$ z(w8tD+`!(nm2PW(fz{J{tQu|NnRQX*b_=e2i+_FM9$~UqX@i#dR+Ua)3LM2+RZcAa zV|7`NVPuz0O73QY&?|iAf$PdZkOjz!DXkaovPZ~zG(11_fSad89yk&a-i@7Zs47nI zVmn8Ls1?7C1ADG>Ty+hID5Lyrdo4uSU%wxC@9vbzp9ZKo^&*cm?Wk=p7i-4-V`hzM zEa~(6x4J^>V^>Bg`S(i0oBRJ0IjE?}fVaC{KOgbXy=B541y!NwY@6LexP%< z?bn@9K?N!&#t-jj%t+QTicmSAS&jOwu{<&LyE8rk`f(gC$DF+vFOtMj_=GupSOw(+ zb_4#7HJPYy?#$+}-L(y-t1AtaAZx2C;PrdsfYXx_STeb& zLUImpVN)m3mwJ|zg^P98KYOy%d?JDjg51u}eP)Ez4}B3_i}x8LQa*YLtZN!+ZEgjq zEws#yM2fWuCg?7-+LnSS=)65ccFIO6L*w#xz9ADS4JR~2!A}wkH^sdiR$xh~4ZPPA z(2>a6Zul>PMG(>+=H?T%9vM^E#3J?oGMVaAPoc}Rmk!Y7a*h8xKwGQ>=9wjt@?TC; BTnzvK diff --git a/tests/images/mask2image.png b/tests/images/mask2image.png deleted file mode 100644 index 1f97303a0538fda035af6972569166fcf4b26055..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 868 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 WV_xfqG-U5+K<+M{_zK*)YySiN=n*mi diff --git a/tests/masks/circleMaskSharpened.png b/tests/masks/circleMaskSharpened.png deleted file mode 100644 index 8ca3c80dcb98bca0b2fbdc0acb86431383e53478..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 555 zcmeAS@N?(olHy`uVBq!ia0vp^DImv-;VifO)meseOG+<> zo22!!UyL&Gc-&hZUiBh;sF$SOIO%)#e+mnIvz ze)c!_mM?uLz`5u#50fzWq+ciRD}v4GWb@pY8SZ&rhIi5Xqs>e1?mK|&OEn1EBW}Gaa<$!rkSa|Z{M#zV|+aH{B9|;6KT`7-~3m8?c3kNZ@V*pD4b7Q xxW1x}?QTEUCuyXZm}d9L?y-8-Nn&Fr{*T#-ljVAoZvztngQu&X%Q~loCIE4?;<5k$ diff --git a/tests/masks/drawEllipse.png b/tests/masks/drawEllipse.png deleted file mode 100644 index 1437bd5c7b2cd5a5242e7a87e612ce5ffbd47280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 859 zcmeAS@N?(olHy`uVBq!ia0vp^DIm;UaSW+oe0%exUr4mX(T`hq z6tMGE@Lgf-JS#F=BPr>fkIZVpq%XWPr0zQ`%IFEcGLvslM$V%PYKaTlt`{gU&puzX zLt8{pOC{i|?&Dvo$3y%!e_!|6oOO;=lV_oTA)nGQ$0HUU66}JH6_R9JdYU_^E_g;> zP(|sR%aMs4Gdeqdc0_b_Y|s5I`1(_6di}h~&!3qJTejWUdw)vKgpM21g2jR#MGmAh z=ri77Dv&(j$-w?GJNdfx>FaavjL7p*& zxq#__{qBP6MLjaw$Nz{3p1&QlGrrAd!XFQ&4Lk{g2QD(+S(u!=?y1@KmQM3IBM#nzzVr>1T+!vtgCgbOxKeY^`7^mIJm7lYct7tb3aG zH0l)4%1nlI?fZYk&bc1BB6j@OIvtLNnSb1`hkS^1nK8rTvG*ZyQEGq zpS{NY=yI>8{b?IH}I?E`0AtIWfS$%1?)n&hMl*%qebqlCv)LK=J=&HXiIJ z|C~#bIbhOI^XFc^rMsP`g!<22_b2C0_nF}G$@(O_NSE?$K56yOjZQ_4Pedmz_mIoFZE(GJOKoLN*ORMdzHz&6*)CgU vuXN)65i*jMZQ_GAHoL`NpOBIi>zGXL`GCeNJrZtm|t=YG!nweQunx8>*l{Vm~bV%m4_4E7Q~^3CtIJoE2{VriSLGm7KaB>uj{_E}%WSK#*Z z8+DRDM0VsX3_h!N?Z=sK-W$K=*k|T{QP}3c?JvUz-U9F6%JPrH5{`cRyK#E*I=-AM z3fsz=7fpmcMat3VVOg zk~HafyE(_6y@oU9=9`f2-CREoecQb8`O)RG?{Ax+36sN`{=c z!WXk?9SR@iCjGd5>&j8dM>@Wy{7Nrl6RZpPKX_lhyhX6OZ*TtlbC*IsD>z;X^gLhk zU%f`|hx)O})?7#Kzc)L2?=g?_oALn5O1 z8qkvGll0j0*y>&!zaDsIr~0*yt=9_gl}^+H%4i=Ddl2~Gd|eHrq5B@5w>6&YfoUf= zvzf(nzjqbK4u%TbV}1d9#n4v)rte^r+PI{NZbGLOu?qZjnhvHDWoxfVu>_;B*RSaG|N$YP2AJ8 zF9^u9xVhoYPCxoy@XJ+R25(^WTLHNm+~2LeuWmo8``QtV#OTjw;a51Tq&By_Zj${f z;OFRs5rrTx*5oSLG&hXCwi9o_Z51nZ`-s}(fUrR6 zMqSEOR_o(4Dt%85Oh;k#9U*{lX&5EW4iGmfmxx+6QJVn>^Of=ZCS$OFgM;l|pN2K) z&=M%?nSjl#9v{l+p1*pqb7q0*BNSXQXd--8eyiN+@AN!Q5OzUOxep@dXEP0LGW)KL z2Pg-+vo4nH3?2D}t>Vsf8To}aR+Bkl=H^mBdyL)+IPrT`TsMQ}J-RrD7LO$jQpXlr zU=7v_3OHu}?ht|u**puQaL=Y#uVoucD{Zaa{{=Ih zVwSO;G?%)!W2oh>h~=H7E_pdtmkqnRAWQvR zJrf8krOBcps$1s_zH3I53}dlpseua~jGfw?WLHmQDb{t9dCw4BO4z+aJt@m$g_TcK zO;$A)jI&i3xDEeQVPoZG9f3x@6%7TUbQjACAU9%>JO%z7-lgkLgFz_#PO(L)Bd6)F z_Cr1NyGfz|>WQYqL&cw}A^_DRtU)t;?9CsuajQ?Qo(`P{s5IzjqBf7kDVm4~OdOm= zOI@Aip0mbzqeBhCu4e8k{Z$%tjb4!;iloY$4+m)LN$htLlp+aiMk%^3;slvamK13v z@UBqdI3CEvjSu;YCyVauJb(g}VgYpXQ#?HSZkqU4*bsO^vq8P^S1e;1i_@*99lcDi zD1n~PD~^a8=9gD%)x{EwJ`Hp}S}HQNl1z<%C(@(oc}H@nC2d}uj^*L0j&ZzG%wh<; z**pDBRps?GdF1>;ppT{R!VJQ0xha8Xj=MXR+=qVV`WnK3rAcecb6q Z{JO}XUS{~mh30<=0mP;fdSVXM{t4la`@R4G diff --git a/tests/masks/drawRect.png b/tests/masks/drawRect.png deleted file mode 100644 index 5daff86d09c6e9a787a1f52e9416b769afc226b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^DIm@ zTW9tYo%4Cqq%2;3i(A4Wr0mh7VAym7iLqJs$xqKW>mP4xHgKLG;h4nIDX8K`79-92 z#Mj9;;*aODC$^zkf@v+8A}5xczLSf8GMPB@^+UrdPMRN@^avP444$rjF6*2UngDlb BW%~dC diff --git a/tests/masks/drawRoundedRect.png b/tests/masks/drawRoundedRect.png deleted file mode 100644 index 59742ff6ea3c31bafa53cabea17d0647c14d5151..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 732 zcmeAS@N?(olHy`uVBq!ia0vp^DIm`da>MJbjJ(952EK8*~KY_)ymcd$EyIQn$LB2whn@H2QkN(0THH_SWA6Sc?wB1y5 zow57o%<2>K{5R&XrPY~#-+lQmYs*v?!^sM1LPva>W_Su1b0(=do>A$T$zr(qy~3n* zUR7F|!I$K}Zr6P|dCBofezV_t8wayb+@kbSyWu)R9#aHU!IDSziVd3?@|bT-`r>%$ zY1eQ5B`cdecJVzBZ7?>zGxamWwcY9G*S=D?+qRa`djE$=?fkP*=E-`YtP@K(C3KD* zQ8_jBWNT%RD9eGpjrV%)dQD;9t$(iho}#HzL8V5*gUe~-rLNuBihcbEcZ#} z*{du&ZzOD0mpYTPO6|l)Hf`IR32DKmj(p}3FE_Fo&tAnTr0jw06PWi_a(>!<@Ya9R z88<_GC(P#!`?dPunPpi`e=;^)>ILijwCSLiJV^Szg35h{A4ZR|%suMl3+J`obF})- zxZ=0n5~IftCoso^vc9}GNt)SR(=g0)U-{iFilMBU9(L>-tOBOI{gg9F|J0hw5ZNU! z%+}1A{VU?%yop6RrAw>7-I=B3;rL1RWRcDanJINl4~#c_=6?TLzrmN`JcG{U7?qv( zzCUZudZi$&vVYnoJh7a#-DBTeoBVrktv$|!p~Vr*XDAUz1;G@5iMxkh j2q*g^k^^B=pV=RqKkKCWyxWbyRLkJ$>gTe~DWM4fxRNr< diff --git a/tests/masks/drawSegment.png b/tests/masks/drawSegment.png deleted file mode 100644 index 2fd9d1584438817ef4f94fc3fa6460de92773867..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 693 zcmV;m0!safP)*A(%kCD4 z(zz^<1ja3*bnF!51mhM_I&}z=iE)c49ZG_1zqb25<1C^ymIM)zA0dS2iuH-oP!a@* z$Rknab_jxqGPhF@M3i}DfgqyHDH{Y4Wqd^-h$v$#20=s_R}}~%%9yG_5K;Qq1cHdt zw`LGTlzw#qK}6|OHxNXW_PT-~qO{c=1QDgaAs~n-bqxbSL@9452qH>Z!$A;H@|yyJ zh?3Vd5JZ&orh*`%95)>V5hdLvAc!b$cNqvG%Ihu#K}7k#%RvxP{-y#15#>*6KoC)a zE)e7$Mb#H_%QK2f5abm_EeP_6q8bEwLs1WcJfSQBg1n$C1A;uDECqtBqbvu4ETb$5 zf~=w}3xX`7EDeIJp)3!AETNbHK~_-AfFKJfra;i@DCR)W$|xp5(5fhALC}gQra{nZ zDCR-XN+>Qs&?+cyK+p;(u0W7>6n7vKpLLtaOSD+B&q}eD0IV`*+B99@2=a+-B9%777C70Zlob0(- zCoujU`B9g(x3HCw~m@r{2KT{J+p{(H|0Y!nkD;_Y5$agpF@chDm z!bwqKm*Jv3my0q#ecw%RnX_!y^4E8QAOBpi@KWgadH2_@U%l&BSXP)uP@vN!svtv6 z#drIT-u=GoclNt~yLQhn{l5P0-=ylypFYvcbGN*mmh!ts?PcqZ-)80ZPu|UE5N{}N zSl+1K7<*uDL*dJ%Pj}z4%3YkRzasZ_^6fKwCpK(xy7QN>yk6LXe-D!lL(Jv_cEQqH zL*<`eUH&U>!F+*BoQ2G zuy(CoeQf)?e-AoJpQ*J9l$)2=^Zj7hQTZ-V=bY{V_f>0oy304)?BXsguZ{9&)OVb2 zbBldd?W)w5U582z-(AnXk3sIW*dwD;A9n7JFaNo=Vi#xT@($qxwjU42O|NE*Z7sE~ zEfr?6nf>I%4|A)aDQmf7TXy_DeBh#HJ zNQ0ZxO?&B;?^kmOCZ+9XTE2djjjrEz!ydnm32p!GzYF0!EvNaU_Q88jslc>Uenp>- znJ=}Trkq$Y?exiMwk-yVz2Xh`Z+{XA2utNt4(XU#%P+$%efOB@J{Ys}G;nr8h%d=KY%Suz4JHgZ>H8G97 z;q3uOhx&Oh*Khq=yud7LwcWPW{$Fj~e+OLRigY$!n^tz`%oq2hFAC2VA1Hjl8?kro zFWv>8_s2zDTN}2vTJ#2YPU!7x?P+s@C&!(bnxS?0%stc1&1v7J%)FbMw);%Z(!E>O zeBbhJ!pyzP&BDJ;oa@Q?(>?$tSEo5yXg?I~o;hVg3aRK1bLvu!8+!hgqQC-*!PC{x JWt~$(69DvcL}LH| diff --git a/tests/masks/maskMagnified.png b/tests/masks/maskMagnified.png deleted file mode 100644 index 4c0daabc6516afb86631190ee2a29ba2d6e347cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 590 zcmeAS@N?(olHy`uVBq!ia0vp^DIm3vygZ&G zj3cQ{Aq|5_E1qy>Pt-Tt&EL#7m*wRdXU7|5PoG)2bL;143KqR(6VB9FtG&FvNqgnD zh*fiEvj@GM8e;8X)g#?o+JBL+>GCW-qdM{9Dz!0ULA=MW?Y=VC==0MXAC=2z^EK6$ zH0_y~^;){&_uBF*{j1ALniAOODx6;`RW;9ZtL9vV8;33eyRMIg>%C3C$Sk=v#ZTbP0^ujkA>J$7fS&uM1M%Et zN2Nz;K9_c<0{xu)I`);H;K%GYKPK+>Wj|^=ebor=xx-c zuRAVAe3y8uV6pZrP{s32*9Et_3vMm`tg^^#pJ?*y`nPJcn;)29#2PRr|1tBhrrapl SCoBX^Ck&phelF{r5}E*s1=v#n diff --git a/tests/masks/maskMinified.png b/tests/masks/maskMinified.png deleted file mode 100644 index c9a386a9fe2e1bad7a9a4122db29349a6ec7eb19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2o;fFluA^9dMaxgz`C8w0#pPUE`x%SgZ&zIS79Ccb<6@nq6z$%%W1{Pw z6H0k0g65k#q$7{?>O6821KEit95vB@`$Fbh2jBCWPV7I+X+J9?$Tx-4;UcSWu$irk zw3FbZYzA)QnMxZKe*Vjz$aJ!r;W@*+h9A5CsPALk!?fd#S!;`HmB+q`d(yjU;(h|u7Aq-OVz z(edDdydG}WzzZ@zRZS&KdA^@3nQtX~o_)IJuKdusm*d0zOD~s-YXk*4O`-}i)Kq-8 z@7Ue#JANC#`?qFy{j+!TcmJOFE%0Z;?d9)Z?9QGf`#IH9|H$3zJAd<)*YjKO>|wjZ zeTO%PMUS;7S$?X1_U|vUwcj_q+Gci5x7tK#LYRl}N2LOe3a%Y&7OAYqeM&>Zb7hLY zKfn5o>lUZt+zDlox0q{K@0{CcT(4m=>0QX}cl+FHd9Qv5SR(Z3-F4>s4E#*#JX4== z2Hbx2IJ~GJAWGw*iB!$TcF(j?%jAsIq4stOtg3P zye<9idekU;>BbjYOJp1P8`mbQTCkfl%kTJ|S$suu&N`k3&-%(#r0>P+Ri% z{0Rf2e`l|WMT_s^DExl*z&kz3^T*zqJ?2)A@tFO4KhMY7^NoF{>&oq``>dK5^ew*l zr7X8(xweDht2osu0g7)Y9{syea$Vo=JAeONH8qr9=+xluzK>acmT~l%#1_uX^jq6D zoN0T!O{|(D(WyZ?{KuAU=2cNO&LIL9otAa^Efa8R+4A!7vI#xM5-0DTZ|ZmXzlsY- zfo{PnE@9X6+ov3U;ljBy<%`d;=Z`+_?${l@PeEzsM9!V^ol=U=duui*MaWdJs(rlRN94%tW{Mc@4FolHg)=9_2P=Q$G(H>VOyoLXkwJb&Q$;&fv<`I$HMADjL+S9Frf-?l$kMdzD`V%5Z7=Q(c$ zoXK}TDyw$n%s%#S?y6=A`de=}a|mCmkod86>hgx9S{0)Uz`*dSHZnRG`pKo+vL`^1 zcP;b9M`z#s;ds-_X9NsPrq_ShC|^8zt}*HMwIp8Em=1%@%ma|hE%QsQBWJ$!ywGy!wyWOE5py@`m0P&t zp)+;Ho1-7R*d=&wtJ*60*CIvk5?7=X`}s59X3nfrapN}3XZpr? zo{_y#|G^85OCCXyx3|2{OyJ%SRvIl`^=QtlFHU{#(gTe~DWM4fkkLPO diff --git a/tests/masks/minifiedBlur.png b/tests/masks/minifiedBlur.png deleted file mode 100644 index 935a34faa195662af9bfd3d0e8c4fa8b825594ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2397 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 diff --git a/tests/masks/negativeSpread.png b/tests/masks/negativeSpread.png deleted file mode 100644 index b695928fbd135c23b05708adeda1244df0a016e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^DImPgzfi$p~K+m>gTe~DWM4f_^)ly diff --git a/tests/masks/strokeEllipse.png b/tests/masks/strokeEllipse.png deleted file mode 100644 index 668f36d53ce769a1e7893134771c501730ab0a59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1498 zcmchX|3A}t0LS0E>3qqz)Ur}1`b54g=ahVlNHQyT3KeZUZk2Bh8;@m=hao9n(qXUmNPv zZS9SFQmt!B67ls;x~Wskl9QB*mH#-NBzCk{yhEt@*&8Cb+{@2GWDFui)AXFDX7Njl zd2~+Ex_n_gB~S8d-Y+UFk8ZYf?6gMG9*yMxA?XeYtQ)l8)a87ZCUo%Vkj|#oe5v@o z2;Xn*REf9CN_BuxX*E}Se?Z%TRSg~vq`>NT@?199Sc{vUBbV6?6@2ao5#bKFmjzSM`aF8kN$*&12MH zWyQj3N~qx#>Qqeaz=~IS=<}kFBU2s1?ohZjU2Gn2!a=sped#ix2+n~f;Hi&CKa8R?dnT4+^ z>?#P;LzrTMzpG@)Ez>Pf@nBeDZAz1*b2BFjq1)*;S88We6`_=DYH%3yTqjZ@eg8Om zKJo;C1e(^hfdoD7+_ zX*E6M1Mec!R|E;Ql)33{tOqVB(C4Xvkh35_N25?1y&{y z3Y9WIHEL8tPWrd7IZh%kV*c9eBd%ik1_4H&NeSziu8WQ`j=DngIr_!m6B(TgJvSZ- zcqa!ja8iztIxNC(v@C>Dy5@7UjRDjKAU-XBPFrkk=0va@Obr_kB2P2A^60 z4({Yv)+6>Q5zT<8^10jEvXz`Rf_+fUsaJp3-OxhwKR?FBA!#A-2mw=T^|aKJFSl{{ zHTyUveZpGEz`l{)sn=TNue2sxE4VGNLom#?Wy3hu*VyaJc?IWtF&^G3*rdP*bCbn^ zOWNLL1}9`rL(Nmkq*I()n|q9mQTb;^dTrz(BTzm&`_j#?7dEX-Yg#ifj$wmWpN-!P z6H!6vk&pW&wvk)Px~$lVb>Imi08jRA3l@(#@*SlZ*U@WnhmupRpcGnU z;)D}z3zIns`m>9K(cxo5ZXwKfd<3_LFfuH{r16g(rnn}4sSeB7Do`+BDR!KJHsL}+ z=U!TACz(iL;P~q$WZ4Qbg&`;%YPK+l+sJm-Y5v#QZ9i{3bqfDe+J6wA9V|SvZ6LkZ RvTWPg0DacgvE0Eo_8*kny>|cr diff --git a/tests/masks/strokePolygon.png b/tests/masks/strokePolygon.png deleted file mode 100644 index f4acf83b540e6ea1267bcab6443718a163a5f57a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1929 zcma)7`8V5%7EkPZ8EUJUObpWoY1O_prq+CICEAkKzSaoQs9mTfZHIV6teu36X_T7Q z-q?zaT82`c^eK{-Jj;-gpy7l{F?oN$TYk9rp3k}Wp8GlH-p{!|`1-gjE9feKKp4Fl+sDGQBjMyhFS6&5yWPJgb%U9FE{MxK0__Z&`9haP|{&=|oj=r3VO|gUof4r90 zfQmxC`Au1m`-(a8qv$({Cwao3tOH_b<<@NmL_MlCX zYJ_N%0cWIgCW^_&x1M_5B_}`z8Mo)6e4+IHj-zN!7GrmA3U`c=9>j`p>>0{QQoQ*C zRrZhVN8ub5&cXAylO{U_crsK4QdUz)}*b%!=Uxo;yo2OH zK7SJf`KRFcrT{6^NXS8}Ne`P*L09xWR`W;iKPZ^@mhOwu>RbzlQRK<{sfm{Se$ zZ6!5iF~yD}1gDV!oG~;5p8~C~?is*_qBr$njjfbP=2?8dK$EjI1xw!4#lZj69}&ir zPw{r|j<;AIXavdgzTuhxx#X@;p*MAp;74q6P;pD{d-O1Jd(UV@m_r|u0GilLv0%0-V&8)Z#Fm88{am&XC&1lZ)1f0_Qf~-nz>RwV7kYorN;$} zcHDH?{C{V&&*2&Njda{H=aa0 zG=8*A`vnVK@ha!}a6mvKaJZZP^WcOwNkELw<&gbHs4+hN=2&QXY4J#;!2pUGTz+Sx zoCt%>1cg*${qSRT1Sny(`|Grz{pyO?uL|^GGa&--Q6lHKo}}Y}+-gJIWJ;3+y?#;? zuBf_Ej11zE3#ve_tjn7TxmUAeU|OAs@l*=e!DmVRwS>sz zkmoTeXsB3%(>r}TwJ?x{3fa#Z#IcRZ?!1D28MJq+lfj4c+=lO}T-VRG8N;G7O8CYJ zv1^-N^NUd;BTm2Rjp28d*@{^uwCd>B!3EDA2SDMZK?$BBEr}7z5~}EtQ?}_d?Uz3G z?epSAL7Z{MrX6vK)cZnf{t7dIJ%)H#T>3SaNvm~k)1{a0UmESOs@9jrp5sD58 z*&?MNSv>=80x8GZ`Q%AWf2k&54P-(~1ztmmYbse3YT7aiB%qvS>`dJZ5t5mqICE-*eLZhl*Zg zZ}DKSUBD)3vAq3IWwCNu+|+jyRp&=DopN)HJC;1NxcbU5$My#ESM~lc8!d{&(_k}3 zC?{A$1*$EE@;+hO0cFMg*Ot|ZyjxnS{~`D0O6}ZzLTAU0TI_es0@8U2D=<6n{&fNx z-1XNi34dP3%JVQPqU(%DOvCExSlJya&Ht`sUi^4>>#}axue3DUOtWwqZ6w}!Dq#18 zjmm*5Tjjl^o-y|v(A^Ne5a=P!v`Ey+QsgOMo^hOeKVAp@J@hhDlJvUrPRL?o!b5Z> r^aOhqO7J6SxSd96UqgofXYg5T2WhcBzaNPezgQ69>f_Sl6qf%teNVER diff --git a/tests/masks/strokeRect.png b/tests/masks/strokeRect.png deleted file mode 100644 index 395467ba586b85fc2ed18a6a92bb9908cfbfd82a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^DImI>p>r8mb~D5;+joIIE0ivdK3&#EBxPaqiyjtM+^4}5{^kMoq{TEFh-j8 ziTsG1*~;6R4E$kYa7i4DZB0J*Cy#HlOw#7~jA9sA{WQn6`L~WAHIv!ObI20z25K-) otbSem{keFhD#%j=4Lrkqe$R)KnJ$wK14E6$)78&qol`;+0FVH4RsaA1 diff --git a/tests/masks/strokeRoundedRect.png b/tests/masks/strokeRoundedRect.png deleted file mode 100644 index c4a3f0cd708861b9878423e3b6e3adae78e85bee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1267 zcmeAS@N?(olHy`uVBq!ia0vp^DImny(sVOPsinIcdv%VKEEDXyn1&UZ=<$ThcO(b zi8&SZKH-~meu9n9CvLy~r~)mA=tZ*GISI$xW5_%pYVM4l{gXyutWjmt@oi z*#o=`@7N1^o(N8|R;_N^v?^g$+vGdE58N5_nRlcx3hod+u$!Syt@1q6sdE2(MHP9r z4^|D_?0KTbPgnMZd%im>vwBvX)1)3|O(C|FW(#et^+z_ZR!dzpp|3}1=k6MfFt1Y) ziYo6}|Gk&YEeYSQ`r?1LOVF3Up|-AyD(6`~{Fw1D^P`^+t2T9xjQq zoVQF4p8TlUaGNnE&z7-3uECa}?>QICrt4*r4b~+a!ZtYtEof=$^4!DxK+O2}g){r+ zPuY3!Or5#0uYu{|>nR&rs=SJ2z1Hieu4$Y!Av^eSiMqDJf3bac`WbiJKJ(A>=W?~V z)#45QTFbWNp6dR1Thqm-30yB?mKc5euH$lk|0>sm=Pq&tz8CPl z^)#UTxQvYMoYlKbLpYb-{<1L4%jujiZ(g7IOV1fM*Q>vs(LbMS`RaGe%C&5lPgu`& zB|?10%&J4D9=myLaO5a-Lq*48oIJ7?iSc-No|td@`o=Be`z{`F28Nf}>T^^|gM>ci zo`3f0;?ICLZz3<~+kVdV@^ZRXy)7-i>bsrz${u#^))y1Ir23FF(rbR4Fn+Xg7n5>dy8jKbQK%dgLju zyuMMMd2ie5XHs!*riBV~mG$v6{Fz|6;NB$X^6gAtqwlkRVA#j_!LDI;5$iJZDW|SK zQ#Ss+YVTsRO-^Tg*5}O6G7VGOlKNSn<0}VerdeUY|0`#9FzjC#`r@Tus9o-9w^FYj zv%Lp``d3MrT6E9+%llyCwepiMpLJd-UcF4i1sFD+b!{7TOmv>z$WB}Tl<&&12*pEZ z<}s^zU9_-g+4*{6&+~ST8siDv2Qa{KI?+G*dePk9=0_=?l588-`!s}G#XGuf N!PC{xWt~$(695EwA>IH0 diff --git a/tests/paths/maskRectExcludeMask.png b/tests/paths/maskRectExcludeMask.png deleted file mode 100644 index 87be8ec81f23c7a8bc963a19e258015bb5f91b6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^DImaSW+oe0%F4FO#7F%faS9 z#cd3HiuPe;&8vhqZ29}eMn8z9Q&7cif`nrd5+joD(=XwTzwhg?C-S36U@C=+Sc*L< zJn_XOVb}AG3N>mTJqm_RM>vF($zp7lNvT?6x7R6Nboc+WMFQUhFkA??7KJe**>Tzb x7ydKfRqC9`-?6PauYTfsByXXpMfGtdv#ijB8~aX_1Or2l!PC{xWt~$(698xJaxnk^ diff --git a/tests/paths/maskRectExcludeMaskAA.png b/tests/paths/maskRectExcludeMaskAA.png deleted file mode 100644 index 821e4b8fc2caebba2df6eeb9e6df8f7c89e54aef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^DImpq>%n{7 zjNN}OA5>%3DY~(FqCiygmd|{lsuzwK|F&-vaZF@ zTW7{?96x!}q%2;3i(A4Wr0mh7VAynoT!yjO6G@@p^~Pc?#*RrWoq{TE6C}uD%-E=K xeZr0Zvo|Wt;UvLPHBtL_*T+AZOq?I|r=6)dIeV{x12BXbJYD@<);T3K0RSnTV?qD` diff --git a/tests/paths/maskRectMaskAA.png b/tests/paths/maskRectMaskAA.png deleted file mode 100644 index 8f98469f2360ab16016cef63827fb65eb06ce78a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^DIm%aGuzd3mFhQK;WN)3z5 zuD#Y1Pr6}utmM8|?Kz?AoW#> z48~~V`XqTMtwK~(Wx2vEGcJ!&$lR|>W$3Jv}3sX4F8k=4mTp*8N-3$!{F)a=d#Wzp$PzcrEQ)7 diff --git a/tests/paths/pathStroke1BigMask.png b/tests/paths/pathStroke1BigMask.png deleted file mode 100644 index a5a5ea8d0ea7a59bac90133debd7262cb81a2fcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 627 zcmeAS@N?(olHy`uVBq!ia0vp^DImt=&^!;Yv2=6 zYweBYYp#^4&HQ*|8q1>DZ1?^y=9<+XTpPK4x9Zbdsn55+-oe)3HD0pQx7YFB3zpFqOJYUV_6i-$ovK?0lzw{$X!`qXCMT!LSYx2z`&mGh^RoGzoPI`g0QupGK<%1h9B2E4 zvYhwLmQ+>YINK#8){^GJ$?LRvVGH}hnE|^P7Dfi_Vq7R0u#0Ko#lT(63nvEdVp$j% zxQlh6VBjvcg%<;Mu`iq$(8jPZFrbZbp&897RCiEV_YZ~u#9Qp3ysT-0Vz{79W}I0ZBY;rOwAJLYBRFsaCH(qF@Mnl zjwkb#fW-c&#T-vubpu&GEeq3Ny19b2%c1O(o8XDGmlrqb$ZIbB{dmIl(%9?K=O%lf zdph&8lc0y2oCed$Gg7V!tdWa2mKbP@G|oA})x>soe*HsrmkEK})IhG`u2CxL} z+^oT5_=2a)p-0PAup?0w$kP*dRp5KNfaA!@#Trb7Z#Yh=>y^Is;CQ)r7BDd}c)I$z JtaD0e0ssNX@^AnE diff --git a/tests/paths/polygon3.png b/tests/paths/polygon3.png index efb46c95acc137534a36c2658c2d80c0a78b7780..81ef1e224092b97750cc5017bbf044c6d5e6aea2 100644 GIT binary patch literal 930 zcmeAS@N?(olHy`uVBq!ia0vp^DIm@Jma9yVHBXDrL-tQ%JARO@;e*sI!3eMF)EVS>C}e_xsEQ9OXE3qMGtz=Cm;C>6S>LXmY1gr2dt?3I ztJi{O+i?^yTU_3^XWp$Vjw-cGHWe!mG=JNh=_|`p!87N>qK~)k&%U;1*QLMlN z{s-Rr|JvgpU-wI0r7+2k`Q4j`E$_E{_eox*a3KBwd)%8z@vnirSqhW(F|T|3IA#6T z?|zA03X^P}b0=)=5B^#mwI;#BTh>3jgWZjl* z_bwi#%$N6XyxU^?$c2ruj(y+PB*lH(zIOx#Fcs(KtB1b*D;Zmr~h zFRH55u_V9YwXFY(s@ukHAp-W%tUoMQ$L*Q^y+=^k<&x@yM-7vA-uTuh01RX6xB164 z>Rw$m<`EZU*}*yITav*0w~}qraxRyaANc!Fo$>o^9cNztOY`h(-W^Stm-r*N-?`bt ziam#q@8hPkW|s{PH+g)jU;B&maH8>^w)BthciP+*kV}{n-yrXnyRR+%Q;star_xK? z2RA2J-mZ|7cHw~L+eAKSg}N^{b` ztcfkM$X8QB}N`AMYf6DI%k$(+$+_o&e&GCcR;{DMSo6YI( z7kLYK$}{=zx^vNJ-j?c!nCS`!Y#%HUpZw{~zV@TKK>u7nu=eQtl*;Y5_UdGPRCxRH z@Zvb1bKf@rebmh!xi)Nicz)k$@Ba&qx<`P=g)Ur|`QOjcnUS{^iyA$78PuogJ e9hyP^8UAxzIN99X`2d*r7(8A5T-G@yGywqYA+JLK literal 980 zcmeAS@N?(olHy`uVBq!ia0vp^DImC!Iu(+XI%W{f{MV_V^8S|Zn_Jt0Y6T{>Gyd5$ zyMJ|9tpLM$#+Z+@dsl~*3QYRX9C0%^q4mj2+xqo>R~;E@SPM?EojbPLZe7q;M~^t> z4F(TZ=}*{W_28dYi1d+pM;K)`Im++OU;chyR)}QF6P|{Zis6-APns3~>#g3UpwiEH zBd5T1yT`xl3D%ldSs6EQJeb7GmvDQJWrDP2D63+n+=1VM>mIRBN_W4pZ^x=8h97JX zT6m>4<<^_r33D=a^ti`laR1S&vy=DSd{pQfBG{6`f5434cX7zK8M5=8<3t@9Y?ume zv+3SUeja6Kru|bv@|MhbvCv5)FfV~OLnWPW;{4`cG4UlgM4+B<_TN;bGBPq9zM9O zR=!B3nW2L1!7g5*jXUS7%&OKYa`d>hy)OQk)#|jc+W4R+K)3Te=;0OGTwCL_r+=a+ zt77JA_qd)KvA26a)t;Kb#q`E*qWnfjwQcL?&-`|^!$)A!WrlaAR?_4P4$gqd4;3iw^jpFO4oqpe2ULi0^YkisB&y6CXHXIG_8T@W7 zFsS~YtgYCsCDpQIZ*pDC7p^zouk^2+vBvnkTi>6&n)Wwh^C`I_ z`={CFF&A#Tm1_IlFpbw~)2y$7dFT2qXXiN9Jbmy!C;eLQo7HlgSwEKUG|vf;j26F> z=3A&8+4Q69;Ht2N-y=U4d+2!!Fvv56e6{Yid;Ujek~heLu7{&g^O!5NRu=d^d zI%b)##hzM~6XMpJU;bTwV}1Q(FFBPSVw3oZfD?I2zvT`G2)g*N2nstMaS<>if_X;X Y>+FS-XV1;p1I(=qp00i_>zopr0F4Q&?f?J) diff --git a/tests/paths/polygon4.png b/tests/paths/polygon4.png index eed18f135ace59950f093eacb3790249a322f41f..de72a4357c16f0386947a554f75094dc26ed998b 100644 GIT binary patch literal 653 zcmeAS@N?(olHy`uVBq!ia0vp^DImLqe&TgY?M`C<#N2aA=qT3{afzw2UA!lRC8mmY zv7X?Tn99o~_k^kE6ca0Nk)m6x`@trYgpdpo6%S>%R@Z}#JP9ElA|fXg+*+LvHs~aT zXo#?!P;zT^jAUm_2;rC#Dj?vtwQmy}(~%Wnfng2@B(6%GvglxR+uCHrmDCd0ySS%O zA}M6ChO)vjiK`M`)+ZPxu5x&3pKz22wf2%e(I^qB?ZtiKphT$jsizA68Qrcn6L$o`rIF`yf zZ*5+|9N=bfg`>mBP4aL+vcf5WR1xRiCJp5&g*>Kwi+BRU46bl>FfCq_xWZI`)g|(1 zz-k4qmQ8&NuQ`e^ur@9fP{FL{#~PxD bU)(QRwQj^Oet!>`%osdf{an^LB{Ts5?#u6S literal 657 zcmeAS@N?(olHy`uVBq!ia0vp^DImr^Ypf_XbMUBGD804V1D)yeF_rOw{d?J)v%( zV3SIMONNMwhmu>1>%m5m z1Q!nx5f4ST7UzQvCJ8PYA}k(2WsaHbj0r9rQ^EuU+^+OpVq-ee5fvEaa6lqZ+RL(o z(d|l85LZ%*;MB!a8YPlkmTIUf9Fqu?^s+j^C=tl%rFFtlBGAf9>O`YNpq3ZciGvb> zQm4u${AW=1a=giBwD(%sgx9<3)^Dxbw{4p1{q?VZ?XJH3R^gSsgXh5jO@&tpQ%rcK zvMu6s@jM!^QsI@tloFn)e2e%TG!F)-Dx8v7%Huq>QNwvk5Kk!AqMm?Lh9Q<6Mh=+= z19TO*dM>psyyYMwuvFA}YmrtpffOSf$kYoPpsh-8gyfvHfpl4-%_u2LtoCN9GKJ?JYD@<);T3K0RTuc=q&&M diff --git a/tests/paths/polygon5.png b/tests/paths/polygon5.png index d4392d739d4f4e3b73681727ee8fd6a3efc63f82..4d6d5e3640539213cfd248b17b62b4438cea8e42 100644 GIT binary patch delta 1086 zcmZqU{KqjtrQX%k#WAFU@$Kx>T`{2|ZU3(($Yhi(s+if?mHe@Z+1<^hhDp$+hFMVM z2a{6M4>m=PM;@%jnYUax6va8ptRz`vRGKV`6qFWeXzl-#!mE@!Yt^a9?DfHs@*(Ag zzvk@yzjfa&*SD))@tQ2nP&|r>>M?~dMP}?3nDpDT?#=eUM}O@$*(~PtNs>XFanHN$ z-E}$J&IECsJg0l!V9rCJTbUjhHHfp9ITy!&({YwmYk4wP#h$4^ zYKJTEKB2c4g?gHY2(EptRKZ+>WQ7f=-_-8LS!NV(lIkOsPDc&7mIB z5qE!bjrf5~hW?gt;r31Q!*o|^=1CplRQzesAk1*j`(CumLfh^v%ZFQA1(Iez`Mhs? zg`&#Wh>*$ObXFA>Iko(dZucIKQ%hxt%1@}%CRyuO#A5%ff zr}{0W7LQE*{5k}l8~@+i*K$=%^NBXY{&fp^uP(Xe#37uNR?lD|HmOSI_?~S7hgvKW zy{i=#n!0jd6u(s`e`C+eK%kp?0uPp_fzXo7lot=rp~;=;78Bj*IF|^=jsN zOjj2~IdO_7rR`_1kc@KWQ{Ou+;83f@LvP#0DfLpDT532Syl+|Ny70{^#W^BCql6oR zA6`9DcnTN>t{sy%J!$qhJx}uqH^YAxQyrnyux}!lT4vnrXE?Vk#8fxkwwf!`Y0j3V z_KGWKZf?zZS$rtXb@7^0bKF)582@HG(7NSS-dyf^mc1d0ey@TL=uVoqwe`)}U)+Y9 z-~Y*8di7@g$2BW^A{3SWPTbDqY_x5{?Bd@XhMV&lV|G^Rw-p~XUS^!t+HwBtVvWO_ zdPR($XeK(grAn(EIrC-y_Hgl>0JU)2+X8Kzg>AM%-xD&HiEWyFJL-fv!@m1>Cnsuj z8}TN;;4(DcJG+YEz-8AwcALuvZCrwBWoOT9>%Oy2^Rh=9w`Ar&Z*EOD1iC4_Wb;J3 l?{BP delta 1095 zcmeyz(Z)GJrQX-m#WAFU@$GEy)pJ}0+U9df969Z0vLmEWw<2<Wg-E>2n0DzX>{s>dY(5l{Z;q!O$8a>EkwzdLUHcsI+Hdt!<92g?r%A1286 z9~V2F)ap^iW5If7OXioqKdw~dP1N!0Sdy(O%go34d%Hww{hJB%A3x9gSd%HH>T+rC zf$0ZottCS3pL2VDfAipuk&aVG{gS_vYTWiP$87JuXw4uq{mYu|8@sRjF5V;HDgB%2 zLG`g!Ht&9)%~)-+wAJI&YW4kHpH{Cd{b=?_>&$H(Z%@TIe~&6o3!a!$w+`L@H0x-7 zT})q*lgeGbIgD}~GP?6s?V@Y0O<6QWz|)^ep2=LTXVQCLdCw}Ph3jR5ojR5PYkef2+jSj9pbt4Katp(+yzn`aJ#Dk{ac{p4 zfd^a^P6Bv>HWH{<4g!Hq2(l6$P) zeOF4{=~~ZKDgL99|JH{&HroXbwamCV|G>owE1nmXJP~u6F~RZ1m3bZ+eixnoEdF|5 zjql#lXV*WLI!Y{bI`iiH3zkWiW<^}eAtxS8E!;285xZ^suWS?cF29XV6i)XOh3{Z!{f zXA4ayHqBtWjx9HgTlet&5jIJfSaBxbrEJ4Y6UDS|e}ClFX4WL6*{871RZH1$M9DCB zXVIqCADdL)S1A7B-ZM=ydlk^DVit2}KA1JfZ1ekTImzKmxFnb8F=kKNcVydyx1K;( zmMEr`CH}dw%WD3No96X59hY%S>LlKrCG=QF@n!aBu0Qp_P_TUPhO2qX(MaRpR;xFk zJu^$u?^oMS?qz5A(w9xh^nBlt>HP}mpl9CG^kc7Dq^HH7<;t2h;oz3?M`k{~ncF6G z{XTJJX$iI>b%00f?{elF{r5}E+? C{RDFW diff --git a/tests/paths/polygon6.png b/tests/paths/polygon6.png index b4e02462817f43108de085d93c712829f613973a..907fb0e15882943ff16cf92a8fda945877121113 100644 GIT binary patch literal 1111 zcmeAS@N?(olHy`uVBq!ia0vp^DImk<=us}!ZVEO<-D46loRovlg{8XG-bm^f!h z#BpsDPW7!}reYE1($|2BkDaMu-N9i~B)fdcR`F18)Aftby@=pC zdFI5K;|-+`R1IigmPfqJXR~4Vgfn-h&WvYJZ`hr7`|nka)10Zn$5!X}pI-uW z>a{aAY;#!O$=6qVFV0Dy8ai|Ox=k#Tfp)K*Sy@rxXT$vEgFbI+NSJLrUpBw@ocD)% z^i+)HSxvB@qn-B89Xl1gf6l zbi(;SdD`zdwzrO88(oe(KYU$$9&?>+srlmtXHM;_zHxd*kDiOmk$Az6Vhhfz@8ylT zw!`w&iZ$7%*4g?@EEiJj?f9XpG>`QgL;SWv=P9}Uo3uVp`Kcy)siPxb`4Qs-fe*FP z<_?j3nzN10O-vU9DVMmxxrgJ=y<_PPd#5HopO9&mCaR?L=zNETl}-FT=6~0IxU867 z^~$m^BvS3w@BL@=mIw;kyB?W*!0y3oGdrbM8~tssRv)qBPE-a;+-LaRc)U^m_7AQ= z->diRzic|>*U{0@)4|{H_Q2``TK}f3Xv@kC&;1&pZ?4m7qV%Z0qeAiqW6hOg(;c$Q zS4_*&+gN9`1|-qmQ6XYsP$QbO`31KS`<5_Mv)vhfy99vVSl_Vsz~uwybN|?1uswUz zddURVzL|^dx8Ip5#JbqH-H@#QtYs36r_;|C@dsu)tvO MboFyt=akR{09T*$XaE2J literal 1128 zcmeAS@N?(olHy`uVBq!ia0vp^DImXL`GCeNJrZtm|t=YG!nweQunx8>*l{Vm~bV%m4_4E7Q~^3CtIJoE2{VriSLGm7KaB>uj{_E}%WSK#*Z z8+DRDM0VsX3_h!N?Z=sK-W$K=*k|T{QP}3c?JvUz-U9F6%JPrH5{`cRyK#E*I=-AM z3fsz=7fpmcMat3VVOg zk~HafyE(_6y@oU9=9`f2-CREoecQb8`O)RG?{Ax+36sN`{=c z!WXk?9SR@iCjGd5>&j8dM>@Wy{7Nrl6RZpPKX_lhyhX6OZ*TtlbC*IsD>z;X^gLhk zU%f`|hx)O})?7#Kzc)L2?=g?_oALn5O1 z8qkvGll0j0*y>&!zaDsIr~0*yt=9_gl}^+H%4i=Ddl2~Gd|eHrq5B@5w>6&YfoUf= zvzf(nzjqbK4u%TbV}1d9>d;V$WAm?T zXk-XA3UF`=@#QF}WL&%v$*SdaSC%>Ed{Z3^WGxErY)KRe3{jrz!Rh4^U+)ed)({VYv(s#zxDgxX7*N5)gwJZNp75mi(6&{I-Su_ zOq(KL?A0MjKsfoMlZTx8&&=Oed1m{iH+v|mG(X8!+0XXDuwnY`>&Jh^{f^ABk!I8J z;yCHo`U(7SH6GQJliVl`JLwy(PD}%Pm)#cGZaW4;ALpPHX~4WadQ6a zn6Dd;Szg{K=Jcs>QaZyO#sbj;jk;+*&tKfJe&t=8ck#G^PV0o4Nl$h&ykpwIk`Ui6 z87Tki^}1izBxHZR>6hI@6;-}Zit!a{ z_|DKXL#21&MwMqxSvRW0tc^lBPS&b~PZwm^<#KjMPliwLTJM{xSFaS-nWuFLOk(#~ zClgs~1EkEKzd!^5(vA1z4R(3qe(&low9dUf^imagATYC2c&dNTk%x&XT z{Atz@%}|oOy=AuP)fG|s6Kk^HO4fR`aWa1B`WLCOzHe1^$AoV`9=%u*z$ud}c}Y@< z<-q3yS>~HVwg?BemAG+M8rpi=IU7xx@KsYW?M<7&r1K0n^38VM-mpK_GxdmS_KE*% z9G9ePD$WK*TEw;q-)`?boHqHFflS`aODFcF$TEiUzb<37tq56WvZ-~+{-f#>X02?= zIcL=RqW>m?%x#8TxzcGUiZ#PDxI3TlgIZjU$TRpc{n%K2^mE{{$w143S~@y@NFLy1*#G)#-vS+Vpo=eogf`Xw zOAfcVY_xQumW#`gc7}B;_7<$$qO)=dcjg}E2i@1=lvc%pf>cGRS>8nd-?^o>pv45r#&;|SlvL^lyUhf;A z8+9b~w#YJ0LBWrb4aHfr3)WpV>0RmM;!?x#VArk5JMU%9JXNCDYtC46`Ihm88>ib#+u8yIovrQPqQ4T+{#|KuQ#)K zs(_%Nc(RPR=`!Imr+@FE`SnR-f<<*(e}v5hQnT~1`*)Wb+_*35mk%s^7(8A5T-G@y GGywp;=N6j) literal 1252 zcmeAS@N?(olHy`uVBq!ia0vp^DIm%e z6#440qESMDtykje>LWdponpfMoyQOOJDZy3Udj{}_6pScC{ccHjhtZ55@FFLLj6DZ z4St;ZerxWP^>6oXuU@CBV?!T<(-tHo#rrNS(V$GZ<+ZpFG&@0^2k&9Y0~hXp@!qZHOr`w*ELIWJ?vaRHCb+x^vhCIF`rl?cYvSa z9%I30A>C!U_gFtDpER8$t{>$y_QW<9d4YE~U6FH%|%=l0rZ8$HRnct~(!k*SA>Vz4o)uI{Au+S|)_} zTkt*LWC*s148Co{`Jlr33!mduw~q-Su6#BR0-o(^;ZR&z^)AZ1DRaZ#rw{t1w3z<# z#mfaw6b@(DEOVz*sAzk&+P{`30;*5s{(mb{S83N!RIHwEtZ2Cd7!A4&it3SbFP?le z?Of_V_HsoBpK$&|d#Af_6#6R(e2?)uk+g&V%{r%BS9j)iKb$-sOZ7zOsis(}X{Ly>e+l04^w}k6k5}`SuU)<<-f`QcE3T{G?ciWco1VS*)VYSD zV#}tGgK|4cU%Kq*QI2zpY4UCJ?z`K%<+;H-k82fjcWxHF^(t3n$YUv3DHbMUd#=Fw zz07WI!_C46-dOg8K3_2N<+K~?O2jW!a2`m{trYz!(jcets;^tX__y?d!whvVv9B8Lt+Bf!wxeWiV+}Ca@x_Pmv_@Hlxfw8Uoy50A}TTP9B-!hgAS3Gp)%a=E^ zqvlz(pLx?!&iBqqN}uV+B3=K9=NaGhaoD(Y%=~+m?dN^vNw3c2AIK31=X=)zG+0g2 znxRGI8t2hnn~%yl%@9aTi)X5EJT06U-fh_v05tSo*7}nt&LtXOo_uIw3wP#=zpAfv zBLj1s`L4Hfc-o!FUUPZJ!jH;x6rEaT{^fcQ$S^DIWRprpl#6?qvxJ(Y$D7iC&#?~elZ6BSa&NKd4rrYoEIXGKc%Wm#NTcDn_z^{+I z&I-6MwlZyAEzvgF3FzC{^bWZvr49=nV@j7R^a9;^oZ-#YB7y2NKH>i_P4Mb4*c`6Q zxA(lE=*yNr_cawyYJgBW>%$z5^&2g;RaGQOMgJKJ6AW%JoegsZmR<~=u6{1-oD!M< D-kv1k diff --git a/tests/paths/polygon8.png b/tests/paths/polygon8.png index 23f284955f071e2e41acf3d8401bac5619ef8f3a..1f8956cb6dd3396a703e0929d14b9d6890f4438f 100644 GIT binary patch literal 1374 zcmeAS@N?(olHy`uVBq!ia0vp^DImWaSW+od^^YYL};i;+x(>x z95)wuwmfrSV%O}=n&QT+nW3QQ;mN1ts4W#bd69gx)Kwp^iA4!toIM0tS|?9&GY#fy zDOliSni=32aHT8!8@v3E^LMl7mfC-37U#cL{4MT%-M;GcJJa7+PdC&!DiGA8xJ1I) z!?0~a5|83h38yZ@7LjBQ&0~Zmo<()+USIM(_T9hO>Wu2tjfVU5o&|O6zW?%FKI8Mo z?~T>BoNqt>I_KNYbrUrX-Qg(w{`B3xt9SP^`7xho+#Z)C^R>R}-Ii~;$947}sZ-U| zKXNy}_`7(c@qyn^ z36Ia5T-Wz2AbuCejrCIN>O5>Fa~6IVeYfxK-TjPyjOQ7)A93Hu@pa`s|CQ6iE_Zc* z^HPfSsE)3ZwP3Gdy2Bq4bWeMsR7iK0)$@11Ltani>rja0_`vkRDBx$8`_{devV2uT zJMJxOxVw@wJ-K|fWp9Y$0p$a4Z_N-6S)Jvl9DU+)=E+|Zql#xuD2v>=^S;H>jXST- zbDAaaV5L%c@b&I>`$DR@G@b7JO-o4kS|m}njpyMK4o128FP!7`zdQ_-JakfMQdJU< zlB)9#f%5(OFYkqzNJmc#IMnKJE^$NQV!wxkn;Rz&&rE6 zT}G{fYA(eO4$RwdYI(B%X)&i60uLTaE{|Qk=w(7Gw_=dT56%LoLz`MT3d`4a-ZFaF z;JSHf>KnfffrR&_dRJ$Lo8+CkA!~X^RQEkgS!wPTHO13mySW+V_MYiFw6rbELn}L6 zsb$ICReBEJ*9bbX84D=7bf3=?*_GZa@X7GQZQcYI$*Ehl@3zjk8Gqp6y3lJ+3Qpge z`p!v;z2X0@Z$U0Mr);!VbUO1!{XxX{tk(r=KsHY}X8rd5Qjdsj9*XhX^l$5!eqmJt zy40s*=3j0Zo|RQmeA{vqTR1cKu>ZNcZ93DbMLvlwT!x$D8y6>DeO|l;fl0LO1A z&~eN%Uf$-`?NMhlmvCjinEv3)WvN|jgQmte)D|qf7IF#b6#2AoS_SMIWH0oef8mvu z71Ep)=$n1^jp@}{u_3!Auzm?kNSiN3)hKY60rbym5wa#?8A2)E+E8_gQn+`GDE8 zueiVVE*Cr%;B_LYB>n1{vMu_5_n15`*|043YTG$p>nqMxnT4ilWnDtW?RNjceeQ?nd4704pXd2}o*$lbVZWBW8JdR*$woKS2u@c_Eeb>!h_)VP z^!2lBR3>aw_PpENo26+;wsI=->d}WlNG6 zv6$P8?^jYWS+~}APa9P_cY!mevp7zo(3Gr#hj;+h)eprsVHqpAGzYeoY6co4yFMZ( zVy2Q9cSJ+bDf=sC_pTJ%RSJ{TB6M3}o)Saf zZu;ucN;cD=Hj@Uq84P`;iGY=rc`SMx4k(pxkP_bVI?bD!8|18FlFr%-bOV+@L3!9OPU$^v8!`oA+k%QmY&^pIeF=Cn~7m25rx$hV;SV zXB*f^ZpqsoYFDBct~CgJ6ynb<2|8QwTZ+$Qn%D$irQf;a^^BXX&r*2R5Aq0Kj9$D< zyKXQ+J@HO3$TQ0xP|p17Q=Fb$MPJ~8FD@IXmV6jV71;!# zu#hQKtl9M7k$b5F>JW1{&#^rlq?Z~ckElfljOdG3YPFU*@A!Uq&5vN=Jiqs-gpZM< zq(cR`frUE?ZQy6zOEJAZkOJrbt?N$dOHQ|Qa*3+GT_X9BgF84^@t4>3c%8Qih_Tyb z3xvV}I1M`4XI*bg!AL#q3f0$=s)XLYV>u~O-{(AtN|6Eh#kA-~gM1*S7PJQ+3jLO{ z@`NaUoazNr--VWlM{if;0LSt&l49BCA2}`kKECip+Au~hgN@b@;E5dJHPmrIvvD-U zXX?X-*<+8nh;4u$?wyN&=p(6$3pWNlaZIY>~gbk+9 z+*Ocsy%G0p7hETM`Z6*%y78JZK~7hSb>n>0TQ0`?OF>hZMve*ogemF)lk diff --git a/tests/test_fonts.nim b/tests/test_fonts.nim index 632b94b..c4f608d 100644 --- a/tests/test_fonts.nim +++ b/tests/test_fonts.nim @@ -1,4 +1,4 @@ -import os, pixie, pixie/fileformats/png, strformat, unicode, xrays +import os, pixie, strformat, unicode, xrays proc wh(image: Image): Vec2 = ## Return with and height as a size vector. @@ -36,58 +36,42 @@ block: image.xray("tests/fonts/masters/image_stroke.png") -block: - var font = readFont("tests/fonts/Roboto-Regular_1.ttf") - font.size = 64 - let mask = newMask(200, 100) - mask.fillText(font, "fill") - - mask.xray("tests/fonts/masters/mask_fill.png") - -block: - var font = readFont("tests/fonts/Roboto-Regular_1.ttf") - font.size = 64 - let mask = newMask(200, 100) - mask.strokeText(font, "stroke") - - mask.xray("tests/fonts/masters/mask_stroke.png") - block: # SVG Fonts have no masters block: var font = readFont("tests/fonts/Changa-Bold.svg") font.size = 48 - let mask = newMask(200, 100) - mask.fillText(font, "Changa") - mask.xray("tests/fonts/svg_changa.png") + let image = newImage(200, 100) + image.fillText(font, "Changa") + image.xray("tests/fonts/svg_changa.png") block: var font = readFont("tests/fonts/DejaVuSans.svg") font.size = 48 - let mask = newMask(200, 100) - mask.fillText(font, "Deja vu ") - mask.xray("tests/fonts/svg_dejavu.png") + let image = newImage(200, 100) + image.fillText(font, "Deja vu ") + image.xray("tests/fonts/svg_dejavu.png") block: var font = readFont("tests/fonts/IBMPlexSans-Regular.svg") font.size = 48 - let mask = newMask(200, 100) - mask.fillText(font, "IBM ") - mask.xray("tests/fonts/svg_ibm.png") + let image = newImage(200, 100) + image.fillText(font, "IBM ") + image.xray("tests/fonts/svg_ibm.png") block: var font = readFont("tests/fonts/Moon-Bold.svg") font.size = 48 - let mask = newMask(200, 100) - mask.fillText(font, "Moon ") - mask.xray("tests/fonts/svg_moon.png") + let image = newImage(200, 100) + image.fillText(font, "Moon ") + image.xray("tests/fonts/svg_moon.png") block: var font = readFont("tests/fonts/Ubuntu.svg") font.size = 48 - let mask = newMask(200, 100) - mask.fillText(font, "Ubuntu ") - mask.xray("tests/fonts/svg_ubuntu.png") + let image = newImage(200, 100) + image.fillText(font, "Ubuntu ") + image.xray("tests/fonts/svg_ubuntu.png") block: var font = readFont("tests/fonts/Roboto-Regular_1.ttf") diff --git a/tests/test_images.nim b/tests/test_images.nim index 90ee301..70756cd 100644 --- a/tests/test_images.nim +++ b/tests/test_images.nim @@ -139,32 +139,6 @@ block: ctx.image.blur(20, rgba(0, 0, 0, 255)) ctx.image.xray("tests/images/imageblur20oob.png") -block: # Test conversion between image and mask - let - originalImage = newImage(100, 100) - originalMask = newMask(100, 100) - - let p = newPath() - p.circle(50, 50, 25) - - originalImage.fillPath(p, rgba(255, 0, 0, 255)) - originalMask.fillPath(p) - - # # Converting an image to a mask == a mask of the same fill - # doAssert newMask(originalImage).data == originalMask.data - - # # Converting a mask to an image == converting an image to a mask as an image - # doAssert newImage(newMask(originalImage)).data == newImage(originalMask).data - -block: - let p = newPath() - p.roundedRect(10, 10, 80, 80, 10, 10, 10, 10) - - let image = newImage(100, 100) - image.fillPath(p, rgba(255, 0, 0, 255)) - - newImage(newMask(image)).xray("tests/images/mask2image.png") - block: let image = newImage(100, 100) doAssert image.isOneColor() diff --git a/tests/test_masks.nim b/tests/test_masks.nim deleted file mode 100644 index a48c02b..0000000 --- a/tests/test_masks.nim +++ /dev/null @@ -1,217 +0,0 @@ -import pixie, xrays - -block: - let mask = newMask(100, 100) - mask.fill(200) - mask.applyOpacity(0.5) - doAssert mask[0, 0] == 100 - doAssert mask[88, 88] == 100 - -block: - let mask = newMask(100, 100) - mask.fill(200) - mask.invert() - doAssert mask[0, 0] == 55 - -block: - let - mask = newMask(100, 100) - r = 10.0 - x = 10.0 - y = 10.0 - h = 80.0 - w = 80.0 - let path = newPath() - path.moveTo(x + r, y) -# path.arcTo(x + w, y, x + w, y + h, r) -# path.arcTo(x + w, y + h, x, y + h, r) -# path.arcTo(x, y + h, x, y, r) -# path.arcTo(x, y, x + w, y, r) - path.roundedRect(x, y, w, h, r, r, r, r) - mask.fillPath(path) - - let minified = mask.minifyBy2() - - doAssert minified.width == 50 and minified.height == 50 - - minified.xray("tests/masks/maskMinified.png") - -block: - let - a = readImage("tests/masks/maskMinified.png") - b = a.magnifyBy2() - b.xray("tests/masks/maskMagnified.png") - -block: - let image = newImage(100, 100) - image.fill(rgba(255, 100, 100, 255)) - - let path = newPath() - path.ellipse(image.width / 2, image.height / 2, 25, 25) - - let mask = newMask(image.width, image.height) - mask.fillPath(path) - - image.draw(mask) - image.xray("tests/masks/circleMask.png") - -block: - let a = newMask(100, 100) - a.fill(255) - - let path = newPath() - path.ellipse(a.width / 2, a.height / 2, 25, 25) - - let b = newMask(a.width, a.height) - b.fillPath(path) - - a.draw(b) - a.xray("tests/masks/maskedMask.png") - -block: - let a = newMask(100, 100) - a.fill(255) - - let path = newPath() - path.ellipse(a.width / 2, a.height / 2, 25, 25) - - let b = newImage(a.width, a.height) - b.fillPath(path, rgba(0, 0, 0, 255)) - - a.draw(b) - a.xray("tests/masks/imageMaskedMask.png") - -block: - let path = newPath() - path.rect(40, 40, 20, 20) - - let a = newMask(100, 100) - a.fillPath(path) - - a.spread(10) - - a.xray("tests/masks/spread.png") - -block: - let path = newPath() - path.rect(40, 40, 20, 20) - - let a = newMask(100, 100) - a.fillPath(path) - - a.spread(-5) - - a.xray("tests/masks/negativeSpread.png") - -block: - let mask = newMask(100, 100) - - let path = newPath() - path.ellipse(mask.width / 2, mask.height / 2, 25, 25) - - mask.fillPath(path) - mask.ceil() - - mask.xray("tests/masks/circleMaskSharpened.png") - -block: - let path = newPath() - path.rect(rect(vec2(10, 10), vec2(30, 30))) - - let mask = newMask(100, 100) - mask.fillPath(path) - mask.xray("tests/masks/drawRect.png") - -block: - let path = newPath() - path.rect(rect(vec2(10, 10), vec2(30, 30))) - - let mask = newMask(100, 100) - mask.strokePath(path, strokeWidth = 10) - mask.xray("tests/masks/strokeRect.png") - -block: - let path = newPath() - path.roundedRect(rect(vec2(10, 10), vec2(30, 30)), 10, 10, 10, 10) - - let mask = newMask(100, 100) - mask.fillPath(path) - mask.xray("tests/masks/drawRoundedRect.png") - -block: - let path = newPath() - path.roundedRect(rect(vec2(10, 10), vec2(30, 30)), 10, 10, 10, 10) - let mask = newMask(100, 100) - mask.strokePath(path, strokeWidth = 10) - mask.xray("tests/masks/strokeRoundedRect.png") - -block: - let path = newPath() - path.moveTo(vec2(10, 10)) - path.lineTo(vec2(90, 90)) - - let mask = newMask(100, 100) - mask.strokePath(path, strokeWidth = 10) - mask.xray("tests/masks/drawSegment.png") - -block: - let path = newPath() - path.ellipse(vec2(50, 50), 20, 10) - - let mask = newMask(100, 100) - mask.fillPath(path) - mask.xray("tests/masks/drawEllipse.png") - -block: - let path = newPath() - path.ellipse(vec2(50, 50), 20, 10) - - let mask = newMask(100, 100) - mask.strokePath(path, strokeWidth = 10) - mask.xray("tests/masks/strokeEllipse.png") - -block: - let path = newPath() - path.polygon(vec2(50, 50), 30, 6) - - let mask = newMask(100, 100) - mask.fillPath(path) - mask.xray("tests/masks/drawPolygon.png") - -block: - let path = newPath() - path.polygon(vec2(50, 50), 30, 6) - - let mask = newMask(100, 100) - mask.strokepath(path, strokeWidth = 10) - mask.xray("tests/masks/strokePolygon.png") - -block: - let path = newPath() - path.rect(rect(25, 25, 50, 50)) - - let mask = newMask(100, 100) - mask.fillpath(path) - mask.blur(20) - mask.xray("tests/images/maskblur20.png") - -block: - let path = newPath() - path.rect(rect(25, 25, 150, 150)) - - let mask = newMask(200, 200) - mask.fillPath(path) - mask.blur(25) - - let minified = mask.minifyBy2() - minified.xray("tests/masks/minifiedBlur.png") - -block: - let path = newPath() - path.polygon(vec2(50, 50), 30, 6) - - let mask = newMask(100, 100) - mask.fillPath(path) - - let magnified = mask.magnifyBy2() - magnified.xray("tests/masks/drawPolygonMagnified.png") diff --git a/tests/test_paths.nim b/tests/test_paths.nim index d452846..376ccfb 100644 --- a/tests/test_paths.nim +++ b/tests/test_paths.nim @@ -172,30 +172,6 @@ block: # image.fillPath(path, rgba(255, 0, 0, 255)) # image.xray("tests/paths/pathRoundRect.png") -block: - let - mask = newMask(100, 100) - pathStr = "M 10 10 H 90 V 90 H 10 L 10 10" - mask.fillPath(pathStr) - mask.xray("tests/paths/pathRectangleMask.png") - -# block: -# let -# mask = newMask(100, 100) -# r = 10.0 -# x = 10.0 -# y = 10.0 -# h = 80.0 -# w = 80.0 -# let path = newPath() -# path.moveTo(x + r, y) -# path.arcTo(x + w, y, x + w, y + h, r) -# path.arcTo(x + w, y + h, x, y + h, r) -# path.arcTo(x, y + h, x, y, r) -# path.arcTo(x, y, x + w, y, r) -# mask.fillPath(path) -# writeFile("tests/paths/pathRoundRectMask.png", mask.encodePng()) - block: let image = newImage(200, 200) image.fill(rgba(255, 255, 255, 255)) @@ -469,43 +445,6 @@ block: ) image.xray("tests/paths/rectMaskStroke.png") -block: - let mask = newMask(100, 100) - mask.fillPath("M 10 10 H 60 V 60 H 10 z") - mask.fillPath("M 30 30 H 80 V 80 H 30 z", blendMode = ExcludeMaskBlend) - mask.xray("tests/paths/maskRectExcludeMask.png") - -block: - let mask = newMask(100, 100) - mask.fillPath("M 10.1 10.1 H 60.1 V 60.1 H 10.1 z") - mask.fillPath( - "M 30.1 30.1 H 80.1 V 80.1 H 30.1 z", - blendMode = ExcludeMaskBlend - ) - mask.xray("tests/paths/maskRectExcludeMaskAA.png") - -block: - let mask = newMask(100, 100) - mask.fillPath("M 10 10 H 60 V 60 H 10 z") - mask.fillPath("M 30 30 H 80 V 80 H 30 z", blendMode = MaskBlend) - mask.xray("tests/paths/maskRectMask.png") - -block: - let mask = newMask(100, 100) - mask.fillPath("M 10.1 10.1 H 60.1 V 60.1 H 10.1 z") - mask.fillPath("M 30.1 30.1 H 80.1 V 80.1 H 30.1 z", blendMode = MaskBlend) - mask.xray("tests/paths/maskRectMaskAA.png") - -block: - let mask = newMask(100, 100) - mask.fillPath("M 10 10 H 60 V 60 H 10 z") - mask.strokePath( - "M 30 30 H 50 V 50 H 30 z", - strokeWidth = 10, - blendMode = MaskBlend - ) - mask.xray("tests/paths/maskStrokeRectMask.png") - block: var surface = newImage(256, 256) @@ -674,13 +613,6 @@ block: image.strokePath(pathStr, color, strokeWidth = 10) image.xray("tests/paths/pathStroke1Big.png") -block: - let - image = newMask(100, 100) - pathStr = "M0 0 L200 200" - image.strokePath(pathStr, strokeWidth = 10) - image.xray("tests/paths/pathStroke1BigMask.png") - block: let image = newImage(100, 100) @@ -715,21 +647,14 @@ block: color = rgba(255, 0, 0, 255) image.fillPath(pathStr, color) -block: - # Test zero width mask fill. - let - mask = newMask(100, 100) - pathStr = "M0 0 L0 1 L0 0 Z" - mask.fillPath(pathStr) - block: # Test different polygons. for i in 3 .. 8: let path = newPath() path.polygon(vec2(50, 50), 30, i) - let mask = newMask(100, 100) - mask.fillPath(path) - mask.xray(&"tests/paths/polygon{i}.png") + let image = newImage(100, 100) + image.fillPath(path, color(1, 1, 1, 1)) + image.xray(&"tests/paths/polygon{i}.png") block: let image = newImage(200, 200) diff --git a/tests/xrays.nim b/tests/xrays.nim index e47a523..4bde00f 100644 --- a/tests/xrays.nim +++ b/tests/xrays.nim @@ -1,4 +1,4 @@ -import pixie, strformat, os, strutils +import os, pixie, strformat, strutils proc xray*(image: Image, masterPath: string) = let @@ -12,6 +12,3 @@ proc xray*(image: Image, masterPath: string) = (score, xRay) = diff(image, master) xRay.writeFile(xrayPath) echo &"xray {masterPath} -> {score:0.6f}" - -proc xray*(mask: Mask, masterPath: string) = - mask.newImage.xray(masterPath) From b4cc7cdefcaad883d0cfbd4af57c8f8fca874a28 Mon Sep 17 00:00:00 2001 From: Ryan Oldenburg Date: Tue, 26 Jul 2022 01:24:50 -0500 Subject: [PATCH 2/3] fix trapezoid + MaskBlend aa --- src/pixie/paths.nim | 37 ++++++++++++++++++++++++------------- tests/bench_paths.nim | 2 +- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/pixie/paths.nim b/src/pixie/paths.nim index c6b86e6..d296bbb 100644 --- a/src/pixie/paths.nim +++ b/src/pixie/paths.nim @@ -1622,7 +1622,8 @@ proc fillHits( hits: seq[(Fixed32, int16)], numHits: int, windingRule: WindingRule, - blendMode: BlendMode + blendMode: BlendMode, + maskClears = true ) = template simdBlob(image: Image, x: var int, len: int, blendProc: untyped) = when allowSimd: @@ -1660,7 +1661,7 @@ proc fillHits( var filledTo = startX for (start, len) in hits.walkInteger(numHits, windingRule, y, image.width): - block: # Clear any gap between this fill and the previous fill + if maskClears: # Clear any gap between this fill and the previous fill let gapBetween = start - filledTo if gapBetween > 0: fillUnsafe( @@ -1669,7 +1670,6 @@ proc fillHits( image.dataIndex(filledTo, y), gapBetween ) - filledTo = start + len block: # Handle this fill if rgbx.a != 255: var x = start @@ -1678,9 +1678,11 @@ proc fillHits( for _ in x ..< start + len: let backdrop = image.data[dataIndex] image.data[dataIndex] = blendMask(backdrop, rgbx) + filledTo = start + len - image.clearUnsafe(0, y, startX, y) - image.clearUnsafe(filledTo, y, image.width, y) + if maskClears: + image.clearUnsafe(0, y, startX, y) + image.clearUnsafe(filledTo, y, image.width, y) of SubtractMaskBlend: for (start, len) in hits.walkInteger(numHits, windingRule, y, image.width): @@ -1864,9 +1866,7 @@ proc fillShapes( i += 2 if onlySimpleFillPairs: - numHits = 0 - - var i: int + var i, filledTo: int while i < numEntryIndices: let left = partition.entries[entryIndices[i]] @@ -1971,13 +1971,24 @@ proc fillShapes( let fillBegin = leftCoverEnd.clamp(0, image.width) fillEnd = rightCoverBegin.clamp(0, image.width) - hits[numHits] = (fixed32(fillBegin.float32), 1.int16) - hits[numHits + 1] = (fixed32(fillEnd.float32), -1.int16) - numHits += 2 + hits[0] = (fixed32(fillBegin.float32), 1.int16) + hits[1] = (fixed32(fillEnd.float32), -1.int16) + image.fillHits(rgbx, 0, y, hits, 2, NonZero, blendMode, false) + + if blendMode == MaskBlend: + let clearTo = min(trapLeft.at.x, trapLeft.to.x).int + image.clearUnsafe( + min(filledTo, image.width), + y, + min(clearTo, image.width), + y + ) + + filledTo = max(trapRight.at.x, trapRight.to.x).ceil.int i += 2 - if numHits > 0: - image.fillHits(rgbx, 0, y, hits, numHits, NonZero, blendMode) + if blendMode == MaskBlend: + image.clearUnsafe(min(filledTo, image.width), y, image.width, y) inc y continue diff --git a/tests/bench_paths.nim b/tests/bench_paths.nim index c4eb793..7f5a66f 100644 --- a/tests/bench_paths.nim +++ b/tests/bench_paths.nim @@ -33,7 +33,7 @@ roundedRect.roundedRect(10.5, 10.5, 479, 279, radius, radius, radius, radius) let image = newImage(width, height) -timeIt "rectOverwriteBlend": +timeIt "rect OverwriteBlend": paint.blendMode = OverwriteBlend image.fillPath(rect, paint) From c50cc6babf53322873f63b26d7a60c4c58e0b538 Mon Sep 17 00:00:00 2001 From: Ryan Oldenburg Date: Tue, 26 Jul 2022 20:28:32 -0500 Subject: [PATCH 3/3] fix context masking --- src/pixie/contexts.nim | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/pixie/contexts.nim b/src/pixie/contexts.nim index 244ba21..8323fbe 100644 --- a/src/pixie/contexts.nim +++ b/src/pixie/contexts.nim @@ -131,7 +131,7 @@ proc restore*(ctx: Context) {.raises: [PixieError].} = if poppedLayer != nil: # If there is a layer being popped if poppedMask != nil: # If there is a mask, apply it - poppedLayer.draw(poppedMask) + poppedLayer.draw(poppedMask, blendMode = MaskBlend) if ctx.layer != nil: # If we popped to another layer, draw to it ctx.layer.draw(poppedLayer) else: # Otherwise draw to the root image @@ -390,7 +390,10 @@ proc clip*( ## the new clipping region. if ctx.mask == nil: ctx.mask = newImage(ctx.image.width, ctx.image.height) - ctx.mask.fillPath(path, color(1, 1, 1, 1), windingRule = windingRule) + let maskPaint = newPaint(SolidPaint) + maskPaint.color = color(1, 1, 1, 1) + maskPaint.blendMode = OverwriteBlend + ctx.mask.fillPath(path, maskPaint, windingRule = windingRule) else: let maskPaint = newPaint(SolidPaint) maskPaint.color = color(1, 1, 1, 1)