From 7faacd91b0d7f59b71d8c3ecfb3a0c9936c4999d Mon Sep 17 00:00:00 2001 From: Kleis Auke Wolthuizen Date: Sat, 5 Feb 2022 18:30:54 +0100 Subject: [PATCH] Avoid `fastShrinkOnLoad` workaround --- src/pipeline.cc | 35 +++++++----------- .../expected/fast-shrink-on-load-true.png | Bin 265 -> 277 bytes test/fixtures/expected/icc-cmyk.jpg | Bin 966090 -> 966070 bytes .../expected/overlay-gravity-center.jpg | Bin 2063 -> 2046 bytes .../expected/overlay-gravity-centre.jpg | Bin 2063 -> 2046 bytes .../expected/overlay-gravity-east.jpg | Bin 2171 -> 2160 bytes .../expected/overlay-gravity-north.jpg | Bin 2155 -> 2146 bytes .../expected/overlay-gravity-northeast.jpg | Bin 2237 -> 2219 bytes .../expected/overlay-gravity-northwest.jpg | Bin 2112 -> 2109 bytes .../expected/overlay-gravity-south.jpg | Bin 2075 -> 2056 bytes .../expected/overlay-gravity-southeast.jpg | Bin 2161 -> 2146 bytes .../expected/overlay-gravity-southwest.jpg | Bin 2146 -> 2133 bytes .../expected/overlay-gravity-west.jpg | Bin 2127 -> 2110 bytes 13 files changed, 14 insertions(+), 21 deletions(-) diff --git a/src/pipeline.cc b/src/pipeline.cc index 4c35876d..a591f8c4 100644 --- a/src/pipeline.cc +++ b/src/pipeline.cc @@ -194,7 +194,7 @@ class PipelineWorker : public Napi::AsyncWorker { jpegShrinkOnLoad = 2; } // Skip shrink-on-load for known libjpeg rounding errors - if (jpegShrinkOnLoad > 1 && shrink == jpegShrinkOnLoad) { + if (jpegShrinkOnLoad > 1 && static_cast(shrink) == jpegShrinkOnLoad) { jpegShrinkOnLoad /= 2; } } else if (inputImageType == sharp::ImageType::WEBP || @@ -274,35 +274,28 @@ class PipelineWorker : public Napi::AsyncWorker { } // Any pre-shrinking may already have been done - int thumbWidth = image.width(); - int thumbHeight = image.height(); + inputWidth = image.width(); + inputHeight = image.height(); // After pre-shrink, but before the main shrink stage // Reuse the initial pageHeight if we didn't pre-shrink - int preshrunkPageHeight = shouldPreShrink ? sharp::GetPageHeight(image) : pageHeight; - - if (baton->fastShrinkOnLoad && jpegShrinkOnLoad > 1) { - // JPEG shrink-on-load rounds the output dimensions down, which - // may cause incorrect dimensions when fastShrinkOnLoad is enabled - // Just recalculate vshrink / hshrink on the main image instead of - // the pre-shrunk image when this is the case - hshrink = static_cast(thumbWidth) / (static_cast(inputWidth) / hshrink); - vshrink = static_cast(preshrunkPageHeight) / (static_cast(pageHeight) / vshrink); - } else { - // Shrink to preshrunkPageHeight, so we work for multi-page images - std::tie(hshrink, vshrink) = sharp::ResolveShrink( - thumbWidth, preshrunkPageHeight, targetResizeWidth, targetResizeHeight, - baton->canvas, swap, baton->withoutEnlargement); + if (shouldPreShrink) { + pageHeight = sharp::GetPageHeight(image); } - int targetHeight = static_cast(std::rint(static_cast(preshrunkPageHeight) / vshrink)); + // Shrink to pageHeight, so we work for multi-page images + std::tie(hshrink, vshrink) = sharp::ResolveShrink( + inputWidth, pageHeight, targetResizeWidth, targetResizeHeight, + baton->canvas, swap, baton->withoutEnlargement); + + int targetHeight = static_cast(std::rint(static_cast(pageHeight) / vshrink)); int targetPageHeight = targetHeight; // In toilet-roll mode, we must adjust vshrink so that we exactly hit - // preshrunkPageHeight or we'll have pixels straddling pixel boundaries - if (thumbHeight > preshrunkPageHeight) { + // pageHeight or we'll have pixels straddling pixel boundaries + if (inputHeight > pageHeight) { targetHeight *= nPages; - vshrink = static_cast(thumbHeight) / targetHeight; + vshrink = static_cast(inputHeight) / targetHeight; } // Ensure we're using a device-independent colour space diff --git a/test/fixtures/expected/fast-shrink-on-load-true.png b/test/fixtures/expected/fast-shrink-on-load-true.png index 5033da3a5b9ddbf0fc3a9dcfe391d731af81dad1..feeb8e8b8d90595bd860edbc3d7e640ba0563b23 100644 GIT binary patch delta 242 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 delta 3900 zcmV-C55w@b`#Q?|I)H=$gaU*Egam{Iga(8Mgb0KQgbIWUgbaiYv<|_pJplm!!~i)E z00IF60|EmD2LcBG0{{R30RjUA1rY!tF$NM7K~V=3B4KedLV=N?vC$*J6(lo5Qeu)N z;qaIKt_~J|(gfRQSI#43RPIF_ZE6VYFtZ!y`#c8FQBt7udDN=F38)ML8R3m>M5)gboN6+V} zFE!=i@L?Ftob z48o?L6FDTDkbnL8XNV<*Xx55exahiTl_q`Rp-PAk)Mp3t#)sEdd%wVn zS^ofSYCSV${{R+=D<+XeGXTg5!EEX8qwGn1jylQZNa-0vpe=&q(_Uk`Tz%A-VqfZw zn348QgVawWDQ7Z#&PLjMrK6>$j3hBYhz1FNQIq-WNujk-)52DgDqup8J4Q)3_0s&( z$uDzA?8N$=Mupi%*;B?`jO(QB0QL|AZ^lU5Qd<$Dw$q;A7)GFki#RykYACOCqd!=RD{iP~YI8r;;R<%}?D`0}4;BmU`2vp|{h^3QZ%{6~Io>h0mGiMl5!J z8q2K8V}Qu%~NuSX9f;rb7 z?p3>kWPyxhOq3l#Rd$91OEo}(RxHx1K-ZV^K)R#~K{lrV0`3|Hhq z1Izc&&Z72XbF!GHimr~nUe4F1gr5}&JLDftj;4%|J6mJrrB1N7OHV(%EHW&AZ<67c z7;N+OKfaYNmfMxIH7#`|L@_BX8J03W9QyI+r_W@)ODzQv>CT~Mr7NFv@yBR&JfJ6S zv$xkmZ%7hklOJqjKQXNr*tO8sSSF!k-6bRJzx8d$>JR6wQ`il_)!HkqQjlf0$=rk1 zIXC?XKl;{3?M}>XJz-dZaU9Km;;-Y*gVnJ2X?=T7?X3`o?IaH0gyU_F+ScKNw1pW1 z(@H(N5vlEQw6qYiDI>!KoP4x0dblaPAvB>HOchdh;AkDfvI;4TH8KQeY$}{?GtM>D zH8j%3#yHuPc_3^w$wtAc(2q@Ly+uy(TsZ%V(n(KztVdFR335hHuH#x~ zL{y=*D&XWP;~e0Pd6(Irw4ScK^~I`|=~)s`%{fP>js-x#slg{18{^MbscR~3RV6Ml z!0~oCD$uFV!bm%VzHzPB+P#X~coX*FjG5Lnu+)2nTQb50TOZ*0y@tBdC<3 z%p2`SfeHGN&b==buE(^0VB>xN0Bs7b>AP%IF;}ev9{Bw7Zj}_qcv5i$bdmtRBc00tPYbq2o_Z&$dbue5(uSzi(!-zVOv(!{nya0`+iY>Z zzO6xG*jxoT-_J+t>ZYYg1St?>5ObaTepvGI^wS4a^{vLuJv>%_`g%3YDMB}_D}_2_U_Wmg zkF=-AjXZlkzEOKYveZ!Ct>})pNdkk|bFg$gsRzqit(7Ugs`Mn)b=IY!xW$}F5|EOS z_m?~!kMcp#X$@q5u+_&@ip>n2(Yme!A^zZPs&@Nzv!wdEfKo~!70A@nQ}~3C!v$N^ z0&()+Z$PC(YoO?_YV`C7YNA?%G?N(*XmZCW%10wA2bVhYUsFkWYWj<9@#LOcdtoMI z11Nak%wq&-Ye6KcO9c@#09&^>9=d*dn9-UL%4Y2>s9QOI8rNQ;8h`Tfxq5{{Rx~JS5Ub!MobTv#SFSCw)!1q7!WT(Y2;}&=+he6poT-wA>m??Cr?~^Teme3` zvAa~!^~JVl9|Ur%GX>ivum**6{UH*_zrIk`Nr}1Q23Xr{<5~S`n{CL#wAW#5C`FuNSg~l6H zlQ^J(;&CA|$yHUCBhVoI^PMjBg~z51Yr|@?O&syg{xsJrys_shBN_GNob99D(K?T$ zBZ(=0dUvL7u-8K_^4BkhssTR$Pt$xIwc5Kf5)^~womr;4Tq)xb!%a$QOYQE^;4jm2 zqx~z^H>jx_+${8KMC^MWij}(~BghUhr_PD?lhxNQovUkqNy^cPr1x2Asa>I2K-qgo z-OrHKb@3I^W(0zy7E!T3+f=%qo~r9XC4D@93YF_J$bxKlMx#3`a7ozkIL51WWx{)e zH5UuqW;>%ulfxsxVjv;hCUb$3r=Khw>mcfw@99@ay282PTp!RwUraq%?i{bj`t1Pjt+PIHBRBwH54}=e5+=bS&2S> zA`li&TzY*qJylZJ(w5&m>j|QM2fJoR3 z19DE={dC9EHwLeYtL>DL|ut_N=Xae=KO>u;yJ*yN*A3e(7#QonZ_ zf;50;mI{$B-XK1@^Y^i8X{YLn2wOfBGx&^8C4w>E*MX#a5;8?MciB{I4@^UJRWs+vD!zOJ`?4G&cj%L-EBm( zwNR(+Wd{JAh#+zftx(iU6C||mW0f1dT}}#+atQhA^iCznVS+smIu}_{O0h>JWigqu zQ@S<*_VpYeu7%w1c1o%^DteB`C2d#wW_me9ayCEYxf$c1FP62QnYmj!`mN%>SlVl} zaR+*uI*$j(0OKsYXN-~hYETG&7zBPgs}<51*A(>a8jcoL40H7ZjR=dZqPTSp&i7MDF7w;k7>NOC;bra&K|RHZK3-aXIoBN}7gzW- z7rN0SQNbWc>661(BxmBuCzbNXs9hyK>d7B)eU3rLo{02KiaJiBmU)C;3zzMUx9uIf z3=!&d%~eK^dyLj9_D2~=(aN6CK?7`kHrJTC-scz#Ll}`-B#a|uagSbgVu^psL>!hS zK_r~yof)d4rl_r`bc!f{{5E0Qsuzwp{B!~u#%k)vicbi}=e1N|3>|<};njzlNLTynYDw-9LJR}CB^k$-nCLq8{{TTorA$-8yeq~C z{KgOKtCf8%W}OSLo+%px;C%1&BTGFU?CQtT?2=KnRZT)?wpxjQMnEGRC{f3#&V*A% z98h-0JZl-x#L^6r>FN4sPkljlsOky{DXQL*8Yvhv1$-941OjvF2N>1sPeb&{X#8r^ zR!GTdXH;LpHQ)1XIVvLTst4h(zT+H@OGqR|PrS?sBR^B8I$oaX zs$uSsQ&L5RRx><*O2g9to%6PQ`PWz(&z`uJ%}pW%X<95C?8AT0P}TH(x}{NOk>M(G z3P__rfzcXU9kz<#YwdNB#W|0{X=82_ka2=OTK$phs`J>Xl?Yn+mG<3;Bl6Jd&V;rs zEU{eUS$PcX7=A-nP5tQO?f(E7qGt!}$`|<8%w>Ve#yIkS(0QSbmHS0aG_n#2C0k$t z^!3lDkkXviI%{=WvfOE>oF9owwg4IP2j)DyhJ#Cfs%zyv);q*498~f{B_wV{GIwVT z%brF?K7&y-Do$`S>PB^C?h|($+#?|U#0O+57yOD)zD;*v~Z89>jF+d9iG z)&!EH#`oHPSCRM2A;#WW<5DQwVm}Rjqn@E$h^Hewg8u;6=v5W1=8&kBJNP6v8}jqf z8zrO1-YVDuKm! zO(}|&t}2nAyYTPF1nQi!6l^F1OEy{*tc$*BBs+0`wm)r8M^4o?#i*#MnpP{r_L2K* zEvu}O8QCHVfFB}%oqSneBYj?)-2^d7+28PtkBc9+tW&_A5FonX4V8!=rn{uO*2gk- zPQ!8MoldSuInZ_<8IJ^z+=k!JRHtW%4%r-r&O;oJ*GAUuTIhSKALl1u>-2|HwQ@B*DKba{7XJXz)oMBAnszNLfr69V z80S(}Pb~~_$x9)Ph&dzq=UfIS$Y`MM5n#JA4K;G(u7&(czK!9)Btk00II60R#X82><{9000000RjL61Q8(x5-~v&GJzB# zLXo1e!O`&l+5ij#0RRFK0}%i}0BEzWG?++Ts!|@v-L$M^4}~c4UFn-clHYjc#Qy+I z2pxZ!{8HzrINHnh=Mq8coa}#}3RU80mnjkgoNG%7+$9Pm4>Eh26@PgsdG|Fh#j$wS z#1k>sFIOeYoStFwBOxQmQNKjj6~nA@G^3d(<519mje@lP#$21rw-|u->$YHzw~^ zv_1w3hLxwuRg~Z3Dt|rA=9Qfw+~&Tpkf)Fo29id0tqR)G z5f2TZ01|o%jn;M!C26m`^A)CDRbh0w7U0CjGl1G09KrM%27iy*c%B8r!*Cphq-qL1 z6%RW z1B`YgQ#T37GJkk>*8)^TGMN16swC%|<1XZ58h!4ZZ|vv30T05*Lt~u*KJ^ZyD5%|c z$~?*{m15z!>-8&?n~Z#(WN7HZRkq4Ys@xp)1sw-pAeT37d`EVT>he`lISNy0 zNh3}c+Ei40{0Yb5^%e_zDly_V#~w&4$86VGvKo;D>UBjxWDL*?GrXy8BrQQWDo*{y7^!6E)K0><*SMNcatYPYsOFDA zkYhB!((*k)V~;azvhmyqJSh@v z?h=uAQjpk7t^|Z7!~zH^)N(rZ+~$J2#Ova#bJHVP4Y9~l%G^r~>18QeQOg+z+9jtm zkUL{L;a7$DoZ5NN=f)DPa(&|p#zFr8WYbl;-NR*UT`d!?v1Adgp~}`b>{6tVq>+$8 zB!3W2aw{(6Ql($Ph|0zpw6!PPziN`FxPhgt=K;bGz=5~ZIQmv!=>}rtab)cZNcCMy zPOh2MG5H^A*sZqY&z!k&BCZqRWi7&1;nb*SC^kGO)c)T~8 zi6FBX)CD%#$?-Und`cT(2W+1fa8O;)vVZF7i0x_EI{=PPI{n7S)@AhWmwgqQ7<00I zo{USf8J4aRgz}pvQ;t0`-AeH(wde>1ILdv3uzQCA$8t{9cYf`|_ZV_5{FWCbm$~I# zRsx2QF`k(@_*ZTvZL3R?TXpADTzuG7^ZEkjC%H9p`6>@sPh)9B!*N~O$jfq+A3 z&^mV2T-oDk4CyYzWUO^j8jt3!tAEl8A89SW9HbQjN>z;D{p;3P?f)o?Z zQq$9#tbPR;u)vdOwxTMTFN7&XEi2m@+hbIs`anvMG-<*A034e3t~*Kg7*3@P&t3ks zcTVx9mqzS6Siof=qyp;?C-mTvLoR$lCOo@;sK)0-aorLWutzOBc!oclP=AN`<@|(| zAqTiyCt>sHRn^2&9s@4Nbp!o;{h02o-#PkM9k#S2dmq(xF%(%h|pE%ZMh&ec@il;8@K$UbULO-PC2 zqGxwMd~1_k6;h=*coGNZFuWgjKUG^E$oYQtDpcBbvfCfqJ6)oCrF^PXptqA2z98rQ n@_v847LV^o)}>0dzND*zCjS6(e^9Rp_I~v$S6_y3erf;NQN?Ig delta 1893 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 delta 1893 zcmV-r2b%c)504O#zkfOq00IF60|EjE1qBHJ000000RjUA1rY!eAqFu)aT63GGBZ(u z2P0vTu{1(*p}`dvBvN96!r}1$!~huq0RaI40RaF200000000001Oo*E00IBR04osy z0RsaA0t5#E000000000100IL95it@WK?M^OA~J!IqOrlz;eYV)|Jncy0|5X65d#qb zKLB8|+%1*Vs%`a=tlzy8w%^DdDs^@G8%x#9SUjWd(NyRE0CW0i52&Qa)7z#{NaS}7 z<~toMbtR_bJmKV2F|TA%!15Xlbxq0Gty!rg8x6t>EVA8hFI8AKx#uKsK0s)v*{#K` zH~3}@qMoKh6Mqcjf_UT48s$fCoP|hfD-YrqPfF)6~LHOfYpHotrd$h^> zq?S>m(w{kFldIYcVpbuQ6*AN@F3pbs1_p;s`(z~N9Dn%ptKmNlR;o-?Ms=tKmKir* z&JTh5xBY6>vfV9g>Z+c`d2V&`FNnGAk)3E(prVmgFb31ce+@=y3kJ&2#vXS{757MO zGPOmj;652z>r+)qh13Qa z0FW|#0Dt+NdZv~!YX#jUbfcBAbmFDNiLH#RnHZ5rx_o}VdL;cZVz@=?we!Hr>cmu# zyB}+9ZLQgeY>Wa=2jq2_-7J&CPbc1keWpS9cT zX_7Hd>1kPuZuGv{lOut*;_b&i?tE|tdr&aF#(%&rx`$HiMrNDRGyW;UpN~hkTVF_XT?o$AH&ri(gXQX;un`wa)Cr{Bko!sz}-c#;jQU{e|uM zJf(u)3mSSz;NIgtjfb?u%=gmIQOjtsDVlm!dWhTEPm>PXOf<4oO3?@e-;eLYV{51k zE`Md*eh2U6`I61Yrmoib4D~cjY1I}-ng$a`7%jAKbjVYlFi1R(IT{%ax@y)Y7~PUR zyW9>JCj&ZbvRtcrn#FdgN^r1=BBYU9CuZVg1y3CP&N3>YXQIT6 zcWuZ7kaWLmkz%+osHpgZ0on zoxY57o=MS)S#Yt0IUyJN>6HfvbmJ>)>8`!0wsdthVsy+GEvT_PwGSR6kpUV10Dm?) zJP&&m)heiJi%4nVRfSR2Js8O6c4C(~9wP+vgx;CzYMUKQit#M; zRRa@Kzh)T5N8|eG*3TbKOeyZR>Km;kNgJan$Q}nFiB?iF2qOd%2-Z~WX=!WD#UiSd zR>EOCt5&L(o2VjpIlz#E_z*byXMZ0}W&Z$ZHIGr%mD?Fds_u2&+dGCoQTc0Rw_3$* zS*)dl)T(zCN)X$_hU64H;PH)wliLK7wL@F}&uL`3O?bVbYk@y=O6shUoS$w*KJyMR zgkwJTa8SFURm0OGd!;u9;1Qke^%oxNFQ;_5>Dl4jH@QCC6q99&u7ji~=6?Z&bIUbb z?ruzO5Gu0w9^rBG5&}MCm5T3hxLL0>wY0EDM=*tqnZuV74WI&f7~D@D1D~C~td1K* z)j^tOGE5AP$9ZNWC7V6T@1$#aN}J?`8!;Cxf;)lXjZS&IOWifCeg6PUYTb|-&Jp{) zIobDQg~tG{mfw0lL!6KFoqs>2B{Z-uV+C=@`D&$COIv0P*p@aYjieF!YnD_r3pq{k z7aO%MP;>>+z-s9!sFaL*Z@JHq9sdA5HCq18Ad73&)XwUl1Arq3_0Y(=+Pa$?XoPh%=*UPX4UF;+VXr<%zk9CP8zbQ!9SulB1%g6HW`B^geuNEQvRbNa z)IO^WNiqj!&h4j@;xKd`m+b+WK}-z(=m#3=diFz&v7jtDImbRd^#`+1vz6NIChbiI zX(5amX&C&%IV67}p;wF5d`(9sww!u1C|ZF!;}Q6g?RU^Q`r5C6UPbZvVSpZETz|Y( zGcH9^NWLR!8abzkZhx*OknFs5?rwEbtu!*cM5`7H+<~P_Z3074xhba&-*7r%mitod z%Cg3Mp9i+8y~eDZ7CW*=K@IiNT5R1Y&Tgk_MCgrKP^(WQtDkunk>)f;T7a-@WZ2;6 zo*T;tLD#6UOwkZMW3syYJpAx{d+NBm%E}Dtk`EocolJ$|&|b5vm&IQ#bC2DV%zs@? zO+SE)eMJBqai5}HdlVo!mxX2$(RC=!U4Wdf9<~fmnO%Qkg05kk*x#|)| z=6iICLGHQW{{Wv&ReG9|T2Srh%q~f91eA)P~4-vTGDVZSZ#Ir zHnN-jGgI8=iLTc~8Ms8m%ue9m?I0*09b0kn~xHKAK#M5DxL01A5z z25B@6kztQn-BqhDtzneOOK^g+4B$qR4-kF^LDTzBQ_x&Jn}F~gM&QS@YbybKHeBSL zS$clk>wi@+4`&;9_T>El^E&yHi5RLy#Oe}`cUv8TnQCN7ZK5{^1tdY0{{ZfYZi}(q zYl=@ai?j1X6q>=+T5dFSd+KRP zj7A;gg@mYpouD%zAx?aW2a)p{AE@QDSQO1YD!oK)?5D|xZ3ke#RNd^?O7?_D3cPe| z8z*Bn=>b#6KcYuIMCj)Ze#d%2?)WL`=Em-Ui*@Gq{h#$_MGiqbyB0aq>I#ER6n`?L zjFKdILY>2Td5nGZgt6P<_h#gsI;WQ#0^s2n`{r7(x<46&eLv7G?>~WrA?tm2>r-BpFMf$ey28{8jil0 zRa)wPBn^y%{{Usxh*)|~<4m5_qV?C6eK$HK zCBar`38tDAP0Gi!46w%;=j*Bk;@Q;}x(HVJOI;;1%KreVHaEMl2PA@d zLvM--D`kq7S}2uciR!8hau5f010ZRSRYP#-%I;b zV>Eb79CG&9yHqPQYMmPc+v2FrJ!F$i<#>;Hj3SZ=cO&1a}95IP=l{BX_so?rdqwQe4EZ98^fH;m)jb z3`}xC7z1M*l19>VwRzaR$$yzUexm&sm+BoToW^A^?_$TI&%GelJx5koY-Jv+xz~4W z?il_@?XGBMqv`u(QzqKU9$LqCY_`cZs;OLMc#OC?k;ExjP5@ho%Gl?8z%TN%Oq^&&|g^xSbWG+F3a2w=W5I`;8fAHdU# z4Fyf2+LWycoFg#~uYblf#|J@D`ao7evu+Rka&_&x?N7M^?qSLA&*w|Mn#DOCj?itY zz-p2t23RIv>A@pQE`32$PgigC8gCkwNp@5-f;=_j+8F-;IMRvw=6r=Lh01P&Q2!+L=XLmo0b;>Ty zsi~)j0Ra5PH%p=TWBRmM_eb0N>S}0iTWT&3_R{OMC&F*Grlyg1B{tp?>HaeP{{X(5 kQ~Xi+)YQ?X@P!&#TmIz#08rP3_kVp&O>6k9ADMsu*{=+*!2kdN delta 2013 zcmV<32O{|J5c?32w0{K$00agD0tf;B!~i)E00IF60|EgF1_cEH000000RjUA1rY!e zAqFu)6CyG*QDJd`kp~nOBSNtiG;*QAB~pUI;qd>&02%=R0{{a7000000000000003 z1O)&A0tWxY04xyz0Rsa91Ox{G000000000100IL95it@W1%DGFL1A&B!4xu4k+IR? z@&DQY3Qy%S$kuPw6Sm)=I?8o*`Ws8t%ve05^3hc1{{XrD zvv4Lj z!M)EpBZ2G#MSnicZY^oQ!!TtO^)eWkXB-p99~^6y9lmlEA*Yd#up!CSIw;;KnICj> zhc2PGJ@vO)z>A?XRBjHo6KAh&X4u8-M|v4 z*&z4hOFpKhH1}zf^paUdm!&;rj!###7{shYDk^2DVt-wm9smpt4x9PNNzOU(=U2je zwOXk$Q5n@hETNNi?BMtxn}6o5TP@Po&Z?>AXO`z*k$T0?Y>erJY6>Y8Qvhu|XWgL9 zAz;}W7{ku%AzyTc(<@Y3t}9a>eL)9z$%h|Z9kTU>El~+|RYQ!c=RErkmY^s`Q=Fa& zI?{CQy?<(IsZhFr!ypm{Pk{QibK+2*J8{lO&p@qq z3&nNGDCwY*Nu2FPOq`!!01YS@)(({9lfFaM{C`beqUdVgoXu^K*vF4PA4y~%KF#~- zWz;u%E5TW*+Z7Qu$q<4u^&PXXr1}QUT}{!@(p@DJ#^?k`mf6Q_{6_=7eSGuwiPFt) z>gg)z-xPCi+={-8n8_bP56J7b2D`7gTs`k-<>VDc-_v(%g*d2&iPo8sq)DbCDC7#; zPJh>Y1|ac(N#OCp*Lm#rN*TY@Zc0Eq^6L+a#5a4Sa0Kqa$bLMyy!#$=JQU{Ag({ zH!3PH)l`gQ5v#nh6_pSZv~FZ1DbIl*@;#$oI*waKflSlVtJFr`YI_)V)f*lDqU~n6 zS3ChA630a9+4C8% z*y?0giD#my7@D2?Fvc=H{{X(Vw14*Ql)F(SR94%p4Kn3I9^CgCBx6%tLpOF67J~d` z6Y0Ol6@5JWe5=#cKzxZ>h{Gu(gXa29a6TNC(gRNLc*lF>(Lj)FA_8rBzS0LOAwvHi4Ts3N%a4Gc8b38^BDTu9AKr+*}Yj19z$ zbEUp1v7ZFVr!Q{Ty1-dge+NSJ6!R>UwXY>Zft5n*9>KVHpCtbPQQt=GRV_DAMDBBe zAqU(*)uv=;Ko(v?osEhI%H18`8_<$2tvf(YP)!5k5*eJ6Of->!ty6{ETNMvf{K zR@pdiL5+zxBN*7nB$2eSJAYRVFEVCM->AQm^4vp(6IjZo9qukXzt2>@`$4RFj;yZO z%0BD4*LQ6082!i7T$D>o)7HpmMq0@pTE>u^w#hcCDO_cEjJW5KAUMY-bNFuC1?r;d zcZAg46^E0ga11dvPn{_JOgQ|!V<*ne3L4iQoT06jT8ZAH%gV)?LVw$fG31sc5>9pL zt9Z0eg^)C00rvfpNmOHj#Ohg^4uHBi4P7NQ5|NKR_c{0h-|MYauk7Low!K|U?y3Md z0x*Al42!L+sjE8jywy z1cZ*wA!hxE8oy+8~fvlyr zfgz~el+%XqxE*L^zSO%itg)Yi;P%y5xYd(_$971_A-;NLrp?lpb9FmXCq!z>g<5$f zT>417kBHG3Y68KrlVgLPcyERdgRfCynW7+ly!&u`d+NBm%E}Dtk`EocoeYJA zp)RgowSF4sA6BC$#DASlO+VNrkIYd^Z>k>?qL6y%{{W=wYG_VIVzp1|=l-2kr}X~- v;i;*m21;b$FLxhOG(wa9$M@9K*G|A%8A9%#%@3BVpF>kqL>LG!$zT83;~TrO diff --git a/test/fixtures/expected/overlay-gravity-north.jpg b/test/fixtures/expected/overlay-gravity-north.jpg index b61fc8375239abd59a30f44548e6317359b16307..fa5a9639bb02228520a16470dce1fd8c04fa4daa 100644 GIT binary patch delta 1959 zcmV;Y2Uz&)5aJM!z+5&E009F70s{mH1qA^B000000RjUA00j{eAqEpMB0*7c2NW_h zVS$mc6(e%N@FX-sQsJTh!~huq0RaI40RaF200000000001Oo*E00IBR04fmx0Rsd9 z0|S#E0Tq7}GI10_VS%Bs!SVmv01N{G00I#M5dc2`XtS;~m`Gi!QXa_Nw5((gg(&e| z>6=56-+1N3{#p<^{{S=grO!}twU_PAB!ksC*#7`N6syG1E>a`~IM$XExJndA9whgg z6m={)?zJbSk+`+O6EW8>S0&4wo?-AKAtS(3pQ3+TeCt8{UP7bCv`l5ip=xv}x)8FQ z1Scv7Azsh}0PoW(v11T`lpw1coFtlk;5qKd;j3I}NkSvXb@+$@KG@aG?PojX;x@+E z^R6eAk;doCptI_$1q5cL!wvrc7cM8hSms2SPGKVR-Bp@r2|OzzVwPpNh)3=ry%@(`M-_dOGI@#30UWFB>ChHe>MOQ(E;Kv z9J@q{bRtxTx;wE$UW~oeK$4j!J)Xq!GVfxJq!JUT;xWG@a?SyR`d<3|!<) zS{QZ74MS5W8FjwXiYZCl1gWO-M@>KkQUsy;}$O;2VBRf`wZD|OHhR^^BJp~$RI1DR8A2XD#GU}@frO3AiCNY1U z2GHQ<50J<-e$&M8E*+bIWMQk|Qn9_fpTj#(WW4Mt(tnjYiiL{%0PPZ+!g|wzll_g_v zK}g8QT=m+9=o!GY=&q}Qu8q*iqv2{6chtM{OHs~4iU-UL{{ZPVmhtq${{R97eSxDZLnc$$AIxN`8P zn}*Ammzye0!<(o?Ae~8VIKgmb7;`6>CAQV4aer!AIKIzD-wsMNl4E? z`6PUHO0KfyzRwEPC^nf*IP8bgbIfhU=}B#S;~^~|z)?D*j3sZmg6d!#!*+R%YGJ?AKYc8j%F*bwxmA4A2WRys2&^EkQUcPW|GDT3pQb zNw{mpyQI>CkWQ|JM>Ki_gBhk>LyAL)Zzw4072V!3=Riu1o?lffa%g|lcX6O62MAB^ zOQ`IHPBym7FCD;x!jUG<;VBn&DGh|W;7CGTKp=vxM)apVxWnNnm z)8|>vvocnQyY!A)FI<0lFNWVjB3u%em?ksKr5ci>(L*X2+dKSe0`Y9(i(Cd%e2Y2A z%XNR4_BE|)0OXKP`*-+Omulh;A-A-|D`ko+u$oF+X>z0%+#n9B10YczDrVutv13P+ zh|tp0oWi6ixK7x>2Od3W{{U3j&5n`{IeTs|b&3K~GhdSvI}UhnavSi`Y`)RxP-Nm5FNao278sY=q~-@Ce$ zIl*Z2kTyvN4-)wnHsiu z6@nBK&QjCUnyh_=7_h*TXtts%nJZ!T$gpn)a?cN%j~{ zr47$r{&aV~~N<*T?5ZG|`N!iQaIi`aoJ|%y|*Riffn_R+OFg zrJGDfqsf0NLSzN^sPDJhnccq0R-~Y$jrT&vN6M)xlBrm3=ARnovgJ$tYb8hZP zj5puV5~f^G2iihO`idm zRGgZT3&o*lcRzeG+PFUD|Jh@>nsWdE delta 1985 zcmV;y2R``X5bF?-z<)Uq00IF60|EmD1qTEJ000000RjUA1rY!eAqFuML2)87Gf{yD z6p^8^6&52jLSb@JVuHcK;qd>&02u)Q0|5a60000000000000031O);B0sq7RDG>kx z0|WsC0Rsg900000000310s{mQAu$pKK~Z576e4jlfsvuH|9{#536pbE0=OHMPT)Z~$ZU4{fTgXsRo6omT`gU;W`A>;DZr^k+(y+@W>y&Fa_mnZ zT_5gLLZN9Xu?&n01Pkn+pQe-gw(m_~EU{9>C1`D^HjjJt(-f4Csd$c@gMT01Z{v5; zqB^Avta0E;^T-_gumFC^f2ew9=}Ai^W7N`BQpFm{BS9|T4|8qXvG%hZmG?m$j(g!Q zZ|5N=IDhBQoj1jHuefx@&Z4o>31p~>jiETqvHManRXmNY6nP`I;6JMcTB$Kn8PiXX z<8g0=E0-*DzkL)l#8#0fs;%44)uAXI)cE7`1}kC3K^@*t&62;zZWQR!odYquoA#UtN6a6Gv5T zh8s<7C0$)S^35=YbY~>09uypqz7u4O<2>U?mrEq@)5-faE)YvptYk@9cJ0rZLU`@R zIe#Br1+rPMlU`}zwCAQV4ad6@KhP|HDkTq0l98VQ@<{x4N-{w$zRyEyszh3tq?V#}Dtt)flWLgU_Tgef zj^MKc$RJmS-8E|y3~tFD-R=hqlYyOIw9rXj$6&}E@uoXzskQX4Q6f{T#?4K-UVqGl zNx&Yu-9h z+mHz$>3-KD#c*NBMg)PMJZWAf%{NEn8sTK4;qnOw&5m?(f?*60wqJ6_akY5|>!5i% zd@;^>Cq^k{!p0EfgkSs9l?O>WaeuY7^w(b0+d4X$u{vf8meg3DT8EDj$bgLh0IM9H z2pz}IS>I9h*HB(B!sN8^TjvTC3Po7Lft+?D=ik1(bk9>%*y?0giD#my7@D2?Fvc=J zzw4&jdv{7*sFJEHZPo^va-k1ydyJAXsjeZJc9j-_{cRKJzu$_!o_)S6(|^=Jd=j-0 zhEhid+9VIa=_>Wo-A`b)C+!$zmW}2liE0tqnU}d>a(f+U7R#?x+vA3k(MM^Hf;9;m z))#32$8uG%`Dn*bMRDpH7-_B(QbiiLk(!xKNdp)gi5TZgeN$sTlO~+KxV_dvNgGp8 zeeT_u2bE*5LeEp03j(aa%ZCUE7%gJ=MrMmH13kmu)Psi~=~ zK0GlA7Be6OfxEcwbdzr>Q+$x4W+LUVM{qo`rpMmiNogIxf!!aw)19BgBrZ4wbhi7^ z@*L!UwCVjRDW!pP7%PrP%T+46TH7#Y#IdnFZ6J@+TV+E)vydMVaeuo~p=0pIb{Rj=&g2)4alOzx@xI07(#T?~t@tEsWRI(@^>jGxa|PudgB5RRsu z83_d8v7SNfHP4an&DPl)BkYe3hNK~a!675FNLjx^2CvyIRW@oLy2BDof!VXWY2^8g z9S5cRKxR-=13%IM#(%n=y^!NyHi1$NMiI>4sbFOMkN}%Ng{19@?t+8nSR$ z?#UShH`h$G*}PKDZzpm@=#5!Wt4}1WpLrLN>NG}LfUs<2*x=`$8`B3t*Ql{f(GWiI z*=MWI6jIyphpEv> zJ~V&gbu~06BRVl!r}%UK0FJ6t`~Lv&)YQ_0WioUZyN|&dAxZxLk^OZwHK%AV2GF~w T^F!&X=iJoP(FTGG_E-PezV)&F diff --git a/test/fixtures/expected/overlay-gravity-northeast.jpg b/test/fixtures/expected/overlay-gravity-northeast.jpg index 9523792beb8cb2a128bce8d94badd519ee7e3419..1be5a194469ee6db9e048042b55deee2105205ce 100644 GIT binary patch delta 2057 zcmV+k2=@2A5vvi9xqku!2>-+YHV^;-0|EpC1qKBL0RR91000330|W&T00t5v6EQ&| zQDJd`2NW_hk+CB}a>4KA00000009C30|XH<5+OkaG7}VGae*U3QGb!4|Jncy0|5X65d#qb zKLBW>t~8iPT`E!@xZSj@Tn`K==DO1~hb6x8yNUcXAanj-?S;>9akZD}&Lo4)H`xCG zJTR-7qEw_v3URG0CvcP~kUPoha4Pap_wzL`#j$&9VhNb*m8z2E&QB2c5pa>*FmKs4 zMO3Qt0kDlVMSrW`VsF|10MA?vix`9ip#@gl*(Bn_|hQMo2^pN_!cS}R-WZ!DX+#h)L+)E$u$6c?IXtbeW7Z^Y8Ff;6BhK-?>J06Qms zSL57hFr=4bwK}-tDpv1*PRfu|U=)Osph3B~U5>)s?%R?o4oS<@xYAPEW5;pWh|-^! zHF0}azV~>It+l+%C%Hlr6B0FN{oah zZmpN>QFUq4rC};j+1xacvPE88Zfuww2d{)VI3H3TnUTobhIuwYd zvIX2py3|q*<4T)F$mOUGxN*h4tbdPZ2am6gKYxw+jmWni>ww2nqt5%l6Dq2px?GD; zVq+JuZ4M3~^cM#Q={cSSL$gpE1*B>UJe7>B1n|_G+?+Dy`ft5SV0LY%UoFpo9Zn6C ziCEUBVtR$6p7Ud%MogCw?KC#9Y*69_)BgZ*VOcJRRh&@#$bSBNJTy3vpnQU_{;`|P zg?}~#CsRe0QAn1B6|m!KV@h>ze&B6xgp4oKX|*TkC5X}1UcY1_!+$}7iq!_hU6~JQ z(@jFPl;*OH%bKmm+%iUmrE+T(IpMH$Gx10)GR^Qqqt&O0T+oHawxNHVhGphrt#_>z|-9x`~2g`qnozGNqWNh09zh2B(7*731F zOfu!BS4*JBrbHXCaY%6u-31)Nx^))wz!IaUhs{ddoEnbpv;^4M3H|U)j}p9b z%-blr?gSjE5^U_HBCe$&u$Np32up|r5LKw$bLqLhGup?r8l;@WYIK@%D1XjdNNy@L zgo_dNAntnOoUfV9Cyfq#VJep=<}j;VAM#EZg$F6rV)P!)#ytX5kt}~lS z+|3cU;vA$_v*f(C`VkVKl)S+)o@FT1l^#kLP`20K#|RaQW@x3rWi`mNoQ$_u_>Ws! z)}Rf^1n;+A>}hnY!I)|7F@Fk~LW=Arl9t+BsRg$P1Db%i7$cgQsAgEPqsl~RX=%!j&b(zkgSCD0OB(5U)<6 z0RxuaxL3G!L%Vd4A$r3LA1y-NJ0u)0sctsrq^MkY96uN_-)TCvDJ3KGa=__XP9oA& z+=rVa>$x`F;Z{2M>W|I-9@=B1I z0ew_=+wF#TYqC|TC@CX-(6Mppib|Ts}hy)ewXZm32Z@8}6rE+_-> zAte1q2|Xbm?tcIlSiR3v;cN>|VMvOkwWYaR09)jIe*0pnt0}-0DUf^Ao19cc;-Y7D zKb&#o*Ck?NVZ(taKI03)`D68B*!V}6?}>?u+D&D)Kel%s(LPeVu`w_fK2 nK7YOoNBN`I6B8F(;#FK3H~W+NhB!~d^~A))ziff`PXhnhk=nS! delta 2075 zcmV+$2;}#x5xo(Rxqkx!2>-+YIS>E>0Rsa90|f>I1_J;9000330|W&T01_bvF%v;? zA~G{kfd>>LVUe*F7DAyUG*V)6!Ggl@|HJ?q0RaF50RaI3000000000000aU91pomC z|HJ?(5dZ=K1Ofp91qA>A00000009C30|XH<5+Ok%VFeQuaesj_QIX;C|Jncy0|5X6 z5d#qbKLB8|+%1*Vs%`a=tl!lWw%^blDs^@G8%x#9SUjWf(NyRE0J;6N2kt2`@$J(n zByu~3^&O6uI+D|Io^bLi7}v5W;Cc-Pozm>|X02;VgQ3`gWtLm5#p+9wnhOOTL6)8x>*K)8b2s>SSqk6=MJ0g;Cn8K920P`uqHYpY^!2WqrDIxpc_pMx ztMLZ!7uwEw%*1hyG3r@921ZSgBLuGFp+ zmRxn51Am|7nUcjxYOc7$9ZWU$w3t>^&E)@R&iYB3{ zrbJmKcxE7`TW;O16^Z0$Xd?%|d@%KG-kQK!Vx@{o(A!XL9{2C6-4$`Jx!Ug4mBnF~ zdQuq90g+DUZJ_ctv}uw%ZUfIwHnr(n{Q8vh}dvN>9Ao})i-&vPX-RQ3cW~XdaMB5}n z2*>I>XJ1M54Vt=}qoJg_N+*rb2#+nZj(^$p91i{U^UvBROEtf%q^qNRQO&<{D*Liy zBz}Y+q14bTdi;q8cTw{83?b5!y;n{>3=zgBq^f$5d|~299T$Z|f~oPL1L_8UxjN2lRMj(7$2}a9MJy~GWQ~flFgXMf$RLjT(fWF&E0(IV?0-_4 zx(QVcNK}dk61E2Q7!i=z83S$(NL{SP6|EKPt#v(uGxnb~bMT{5+a7W2uo|C7z0)VrqBn!x+f?{{Ve9)7!dI?L?JP zTW+v4%asUwbKGQ+jb^b4+iGa2FRj9TH~jHe)6ciXdU}Wtf>xq1%1Ge*M1lGpC0@E) zsq7ZS{v!;s(Y(ZwEkZjpGJp3h4o_pP0@-!yn|yH6S}5%?&_m~n+9cbTUbC5yQbyF&AA7fEIYxX)i3DV0 z&(FSzSg!XAg_`qATT29Va|l?;oH=nI+5jh!jl}WfIr-S?YHDi_kADn8MU2P+Aa3qE zog~}JRNo{h*@(Gp5!??fX=B#Bp{h3m2bg~EPIi77A#uPfrMKRXkmn=)r%&lgO)LwT z!CZ1aTB%ji*4cwLC5?&WX#{@Snp`LtX+zR1aQV_vlkdfJ>EZ?yMSL~Lmn>7#JVTmR{?AhJ4@_fb)gVOz=Gbky6pXmVO zT~A)fakexChbK7a&%UU18%WX3y&>GZR;YTOI`=m^saBd9 zULsYC1@1u7rM7_~sN9s(hVQr?Fw1?Zc4b*(K97UjRbJy(P758`BOr$Q=_+u%VVQY1 zC{Bpgl?t@-N`JZck$E1YL}jQ82F6W}4te3dFmxSyixkZf1MeM`*V*UigXiB>#oks> zXH<}R?d0mRClwPqxqMah*Es#zJxBfOYH9uiG5tmqw)`RLbW#tEAN)?HrmAUjOH}^= z4uAOSr9Z#_0EVWfh&EzQg!ggyBSa}b_CLO+rli^v!4$YI>HcVaHC+3enwqd^N?&Gw F|Jm5M=9>Tj diff --git a/test/fixtures/expected/overlay-gravity-northwest.jpg b/test/fixtures/expected/overlay-gravity-northwest.jpg index 030e0b1243e9b894b743858a7fb26bf2fe4ad339..acf269989d1ab8085084dfa1a9330933d1097ee2 100644 GIT binary patch delta 1964 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 BeXali diff --git a/test/fixtures/expected/overlay-gravity-south.jpg b/test/fixtures/expected/overlay-gravity-south.jpg index 96cd451d87ab705f4aad85b3a8f45afcbef21a9f..bd8856413216d1cce0f64425e3dc4913efa32da5 100644 GIT binary patch delta 1891 zcmV-p2b}nu5Qq?vx_E>0RsX91qB5M1poj5000330|W&T01^fvF%u#| zQDGD_ae4LYbD`1U|HJ?p0RRI50RaF2000000000000RUC0ssO3 z!~iN000II51OWmB2LJ#7000000RjL65dr6C<(FLVr<#k)fjS|Jncy0|5X6 z5d#qbKLBX6y){h|J*ufD$mbfk$R3(e;=9x~i7Mxq=0*FoLD&4x>7~zLk~cHkq*4!6 z&m;bNX;+D#r)q>F3|%qlS;d6VLFm3ovr_bOkdv3ABp6Im>mtCQ8&FKB#-$Wi1p zZ|s`l)~oUZfqzX}#w_QNIqv@e*Uv*~X^23mg|W=xN!5E`F~A)NS)!A)Uop=kT;tTF zK~%=K4K**c3rL(TY##Lvc8?L`q&k|osp1Sy;zuFRT15@YJJqcx0|kcHUnbU5f2L}C zoY6LRgOwhKOX*Hnp^te50Y$0YrBhop>`8K~D=esWB1>%%xHu^y46pv`!*E@W>s(TL%0F*C z-pwRX!2APe{xzG{QC84VO14_7ii)&i@JSm%wRdyRkT}PIBTM$%ZOVG(f|{Mo+3tkE z=kgjA2Rd<|18!vWOr7|F?zWVprdEt)vAaC_=(U=uC8tmiJa}ha zYic5>p*y8wz+?>Q1)5&Uu0;;Pa9MfyjR2`+->AkyxW{ocp~xq9LdQBiK~QO;hE$P~ zM2{#_sBaGukB)$rJ9|E?+{w|Zd2z5V4u27UzMIr_64Q=m*=6Ip3LX@st*+rJi@P#L z7Fhy>Sr8CGZO0?8hclfjPk!RN#q0LnhQut9G)1Fy3r`a$I~!xU3hm5-0VLq^8Z9lQh%lF z*a&@Itu(Zo>^K9Tq^08#cehi(?*Narm?JE! z7$*QbA!SlehC${$_3f(fJ==%wG<6pK#s{f}Zrrz50fx{qo|!rH)k{|qOLMSYYv+k# zrV_*#ul+-8~X@{tj zm5Y=d3woSysD>&vVU5$s0s0J`G+KVn3hipT$p{z(Mw0D*_8aNYiTphqLK462?cwp&kEBK00 z_%M3SDr%`}PT8I9RV_CVMDBBeAqUWb%jKMWwU_;%);&iSS8Qb-%YV7ocTDaW{YTSU zZI-&%bGk;#?A+&{ENx?wNZMGPp>BIkrjGejak@k+F6iJT8{oqW zWaP>}Gp{eZ#xi@ykwZto-kvoa+rDxE?|gkmN9!Z_{{S6sp0h)9llydH>@<_F2GG+~ z!ziepc`KewlG_*sMSm;d_zQx1i2?OIZ8VWn)Rsl458}t4FVjsGH~P7xl$YMj#Ip$j zVoy`+sx5MNHAfg!XU% z!;IwkpG;_4@d}DoShmMi$O9ik>-zH5Q+8qSXHMeDyUn dYkGpN46XiT{{T?e;eQX;Q&U>}GY8#2|Jk(_d%^$! delta 1910 zcmV-+2Z{KI5StK?x_<%)0sq7RI}iW@0Rsa90SN{I3jhEB000330|W&T01_bvF+md| zGBZ(Oae=W16eB{B!8CFe79>()f}z6E;qd>&02u)Q0|5a60000000000000020|W&C z0sq7RDG>ky0s;a70|NvD000000003300RUOAu&M(5+V~av42s4k@^4`3Q8 z_G@u#P5v2!D1WD^ki^3{;GQ`6<6Nli^N^_xJdAyT4o<1jM)5?*`=gvWbq&GquUkwA z+){h1VA|?yJ$q|P*naUBuS2+d^_D-YrqPfF)6~LGQ-1KBlEK z_i2;zl37Nl#XmBQF3(VF7Ni+bQ!PUh?AY)CU}$vT#(zRianFxBz7yT5)k%to&b0v4 z!zXju!SFve{{XF8wp*pGomErJ&n?csBK3=&*%{V_Y6>Y8Qvhu|XWgXTVL`-oHHSRK z3j3rsnOdUNaax%3>Igf&OgQ~?cFWcjwL~S=RSq(*ob&8D%|K9$r#UBUQl6I&TsGBF~LMELyvI_zzoC3CIWS#+S1 zv5vytQ3%d^WE^Kc{b#pJB=FP8{Ti1DC8}03B&@r3=ft5rcH^9no`G8I7mDkWQPV*r zlR4UonK?ed02+`Yp!mxyz3e|P^)+6i=xW}a&3|o?*vF4PA4y~%KF#&kWz;u%E5TW* z+Z7Qu$q<4u`i|Mx(tQJFuBPbdX)cn9<8%Te%WUJeej|b3zP@?;MCoR?^>meVZ;Cm$ z?nPflOk|JHgYr5w3g15>1G}jDeS;Rj&wtoN(v{XpfO1n$%ia=vwxf% z_Ve-b)@_cIse2CsKQApYX*XDO2Y-kvF0Pi(K~Y6reVXEYV z;Wm@*)ssU(1=@OeCYj_Zc2-~mU@m5fS)BLDDx;3voM_2lx5CDrk~lZG&y!*2F!-MO zS?W1$76mg;O0Q8Hd8zDS+f-4HZGX-ZkO?QD{{Vkd@t5iCTYbcik00M3 zf2OBo+aHyfMIy|IGl98~kO@8q2a)X>mMgu&;by$j*3!Wp9KsedXAWFQHh>A_V{trq z4t=#PeMdFRr|#DopeatWMMU7KV1>z$746U9k-R=Ox_j+@)@W~5~0bMP=^n8aoAK^NGN=j*9T*eCHk?hq7Y!715E|$EOxPSgP<;s16N5+M5JTSea?OWcl~tLYx_8YEw5KoJF0*V0E{25hDFxZ z)Y#u0KH=lWPx|V~`$Bo55r5Rvqah%iHZ#aQhPmu_=Wx=ruf#k$8jywy1cZ*wA!hmz zHQH-L){d5?ik>-G($&i&%&F#p`w9c>Cu5F%-StA3?E#rVObq@|4mI6+{#9jUiad}( z+&t6m1RR17Y#t7$vcIUMAEOtUjG1(`CymSYs+OCmB6m5!kb~|Zaewm8K3dEE&}$x} zt1GrLkGk%4-P=2cKBM&3mtwBBU2bu`H})%&u|%N?#yNL#Jd@<$@r{gfNgGQOv@O)y ztu%MatBukjS9pzpN;v>9!r3`8kId`G;o|_GJJBd~eFpUO)N^k;*ay!#{Ed&^WBPxm zTaQ_xyV?Fc7!s0#tAF~JMNd&nGfz=8mCpUxqis}Dz8-;ad_;iz&0B2(Ls7XYrw!k5 zI%BE7)z2)1&ayKS%zUSuPl?qxxYd(_$971_A-;M>MnS&Du<^eWc`671{UJIdR#Ym} z$tvg4MdW-&h|5qG4UC%{9P`6`FmxSyixkZf1MeM`*UjhKgKy*CRmI*`P-j$-cS}8L00K;Y;|g1SQ23n`gV#s=r&Ci(Xylfu{apV5%c_+A wpZPU4H6ZNDPeOaR`jMg(pYA_hO-&PYCxf^y>HJXnYPs|^H8jD{iGIxg*)cVa@&Et; diff --git a/test/fixtures/expected/overlay-gravity-southeast.jpg b/test/fixtures/expected/overlay-gravity-southeast.jpg index 852292d86aa15a4a285d35e4675c8478ff7a9b4c..d46da3a0d9f5b62548e533f3878fc5396d7b6f07 100644 GIT binary patch delta 1981 zcmV;u2SWJq5aJM!yMF-)|HJ?`5C8!K0|EmD1_cBI00000009C61ONpQ5+Mc?F(N@x zVQ~i(GBbgZBXY69@FX-sQlZh||HJ?q0RRI500RI3000000000000RUC0ssL9|HJ?- z5dZ=L0Rsa72nPTF00000009C30}%uvF$EGq6BII0VR3=MB7Y-7p|R2M|Jncy0|5X6 z5d#qbKLBX6t~8iPU8+(Z$lbK8WDhD);=9u}hb6x8%ZdCnAa(v{^rg>makZE2&Lo4? zIoSUIJgHZSqFkg%3URG0CvcP~kUUB6G?jXkJNcC_(%8FWA_BroBU-* zxxCV|q#UGq8ed9s#SD9>C<-l4GL)IGKB7v>Q{Vxiu74Bn&FU(~lf7LC@~YAiiAXr^ zs(@leB$K@AeO7%)6=K~5$+8lJr0MTDudE~~^m- z2jMmPQ-rP87dSn**U}z$N8v3?)UKTg@9@ojYvW!RcFo1ln2JDv@>H~>4brUcpQgvq z*6USo%o`Cf_BdZf$Un3V**)X$Ut5Iax0A|AAP^L+c1CC&Q0UDTvD z66=8>32^{|3bh=Lz1y7DdwBMPbd$tJ=V`Yh%;q$P;-g4N!5?xC=f1q~zZ08JIvn`I zRjyCWVOYpN?3!X09uv66OsJBstd~=%2<4S}Y)4P6PHZOTQ5k+A%SG#tCGgwmM1MC3K0b2Cdtmgdd1srI%OBf5pS1b>Akq^u=cNJ^AKNzQgjCu87fjGN7-9hz;n=HhM+ zJ1sA$TS*Ba2p|yR(g-;_f{uf(`!Ow+8D<5jGL*3#I~ht@$#CmanezFV#{E3;Tv1@R zvZEd&Y-?E0Ekm@S>Uz@)YFNb-jEr;f;vr8_(hJ_3$?jYX3=V!L>^`C(sej9D+G8w6 zn5$}?S-_ssl!PRaq;nezDm(6UC#Rm(E?hr)wYFtF6-r?!4lVXbdA7oik*#PXB$KuY z2XVIInD~v`MS&&f;-zvMS7jaw9V(@UbdD>qUS3)Q3+Gq%R5MfQM|AZXKr{(m_&?Ob+~@GzZ9 z8=kxUX?ITXhKEM%Iat7DA*2H94=3{AkwY$gK_)!Af4IiyMRDB{6tG7vJ9dUYn^1@N z<@|(|AqTuIld$#aRn^2&9s@4Nbp!o;ezdXERyT(ix!N4Q$r7Tv<-Ms2F(xV3U*+}y zT3gUF*Ewm*>LW&(Bokcu7zrC5K$BSGxC|Iv>A($#gnutBi(f^I=W|2$Lc=R$-*tU3xp#HXn#^>NOj3&YFBGQf790+6W7+w#{ADXR? zgnEAUDp1;OWj3}ywsyNj`AYPuQju;n188`cr`Gt5- P!}qCDwfbfcwLkyaV{Mgh delta 1996 zcmV;-2Q&EM5b+R@yMG7)|HJ?}5C8!K0|NmB2m}QM0RR91009C61ONpQ1`;7L6G2gN z2O=^vVS$mc6cr<(7BoU~!BT?4(c$p_!~hxr00IL60RR9100000000000|WsA1po&B z!~iJ~009F70t5yF00000000000RRF61Q9V3Aq65qQ4_hG0@V+q_o^$d@aPFww{Pc;CTv0I;Q08R;<*L4Tj+bb=PjU70Q@5tn-pM9sp5K zMzDZx*K3umhYzgJgb`gYu+b4GBa8gs3b&6QGhm{Gw`6zAz;}W7{ku# zLVeMjORAA-xTZ^a_XHi^B@RBccFU|H${`n2r3V>G^PYSSW}qY?Njb^jlT4a+-kCC@ zpsgS%WPbuc$?gNh*HqHREnu%nT`20dEjW~1NP5_$sTmk?BiTLw06#kHZJJ8wH)PAC z2PP=&D(w(PbJHN>Ir!Flbh19ocRwvf!G~ofMZ`L!?c1L6f_Ul2IUhO&Yp`A?T#*hl z4mk48)Fl}?J^%nIK*q3grzD;79&h5+bry!3r++gx$h8*n>$B}8!Sm>^y=Gd5?+Wlz z^mSrGO4#BEBOg)IHT0f=vrdhpnTd3CKHAU&N0n^jrhLZ(uUh%%(k7NwzgIaf8u1P7 z`;e6TE@LEp2tOlNU~9Shg-5;Z9v(qUU}vxS{{X7!&AI8SC6?BtH@AAg;W;=NtM-@< zPk&L^G6!5!9kj`{>0LyGM@rjLqi%PikVBjS=S{ix8)YKc$voIXuC{jLLP==~D#l6M z-&U+rlH&m9oupNBpP3}xR$O89E2zm27B>A(p=MYZ9%RUN76x4se*1Vp8`tBBdTtbvi_-7|mY=0~)GwOba z$Vh5(*>{%Ic=H!*E~xDjno^L2k~WUfu%e^SCt`Yhc%yUEx0`E5OVOND2tr&_?BV9y z3Oh#ippcWEFi1R(ITXpL-LzN|UVbW9A+>s_@KEVhwCv|KU551RhKo^wY9fX+u}V>K zB`3%9NaS=Tv|CR!aCq_#UVrNKZ>Ew!DR1+)+5M&X8UpCB6*PAweuSNa&{umG&T2`z5MPnh)VwX%8SRO3v-4lio0BJbzzE3Q|Ev27jaj zit2UihZ|c!Djb~Sp8m84vrw~<+U+LoO$Fx}Y!_lE_=GHyKVd?z7pd(k8C!N}kjWEoV3m5Pk#>K3T`gmD|*F8Il~1^F?Vn z#^7_uAc8PKG5|jdy$o2|>?+XXwdE6k{AYY|TxwK_o(m-w^z$`MnpIOj-rKgY6#xi|u z;GpO;i2FAu3im8(0HPkA{#YtnHpB+04SPQicy`0egVC27F{zOu8Mm%UGwb8p#m z%zv7dDGq@U{zXL;w)>&xXrmtazwI?DP@Ig#YCpSw`)Z_rZ~c`jQiCNja2LCexfDVt e{EyzHO0%#O454>V=7-9wpJJs-AizO>O8?n41iZ}v diff --git a/test/fixtures/expected/overlay-gravity-southwest.jpg b/test/fixtures/expected/overlay-gravity-southwest.jpg index 8876c9fdc455dd11fa69e63b38ca3e9077e9f16f..755c128a5ff05c032616534c89cda37ee024a51e 100644 GIT binary patch delta 1988 zcmV;#2Rr!U5Y-Tnr+)wg0RR9100000000051^@&H0RjUE|HJ?`5C8!K0|NpB1qBHK z00000009C61ONpQ1`;7LK@%cT6fK6EW8>SAQkToSzW-5s;DSDBsyN#a65G0l6KlPok?Szs6L1o6RdbLCQzK()gy_SbtO9L7+5B&nlFeuRfwm%2Vh8 zp{^6{&F(73)6HE7_*H2L#H1W{s(@08NhfvcerrE61z5L1a%_a5DLZ?d*DNF{HBZBNnm+#w|`Dgzz*iVWa36Dk#RbNqn*~rV2qhAA=_we zVBn#|45$6og=o7S)^S7gA^Umq_-JtUKU{i`>b3Ty~Yrpqegku3@Laptou?=fpl@XkX=HEJ{yS#@S6HlNn5TiX!he@NO|3#bhR&Xx^ySMrfcTCYo;Bu zYUj*FAV7I4T2cooR(Vg;gYq@F+Sh&{*oBA4@ZW{VKf(>=J;&!o2Q=fKLvB>|GS2)U_ghLK z#!8zRRySv!v|7z64#!9boOaE6&5+cHCv&PQ10ZIAS)K5uxRA93;HfGprfGc&kR})dM-Lr(+TDfltwQ^T9k9*o#ov2+rz;)=kVvg0n}J6 z?5M|x+Z)z1;i!3(K4-0NY=I<(CXfq$e*7eGa`2lYqnMpdt%VMK&)fG3-j@4C(tqo1 zsCNrMGD$~*yO!l4ILJ<1Z7M3xdGZc_vWBX^YN+?MUf|f1XlOK*729^Y(@7+t1ue2t zl^o!LLF94B&s|3CqQH{#@lv@BtICf>4wW=~TYsa?{kK2bXS80mxK9|s2Ohm@XLQ)j9udwtdu&~-j(;BebQH^g zR8m5ewpG+)s6Xn7TCVTiwEe~$i+_T`oTQ2P- zNh%q~UODYbR+kq2-PEDgnEoMN-NXV1PCm5PsA@~S+DHh!;f0TOp^n~C4KJx~Hs<80 zWPA-j7%|^zJGUt%Blx;d>3>>IBGOdchnpnu2*{!{A)r%|?}(FaS2WGGeMRDDd6tG8zo;<@J_Y@)ha{fX}kb~SUlfe1(s_N8I9s@4Nbp!c* zezoR~G-Gv8PV=&(_JFj{nDQfs6xWCrR+OH2rJGDfqsb~lWPb(sQRk1+nccq0R^*_h zj(I}HN7AV(lBrm4rARo-rVAFJ^oZEJ!MjP+!2~#d81Ne}Ve=$U!kdJ2o3@m3S zx%gs*r%$EVFFo^8r47q%R@nX7+V+X=mGY@lk#{9F-Vo>g@_v8ji%0jP>r$l}UkFj5 WlYe?ku@x30G(vKr!9!AFg2K_^@c+aB8UX+U z0RRI40000000000000971p)v82LHqWD-i$z0|NpC1qA^B0Dk}g0000100IL95it@W z6e2-k1rt$m;WB}dvBB~G+5ij#0RRFK0}%i}0ARA*EtS-&ZS|3?-^CNQ-@qLzb#?k1 zOV!L+Jfrq#s&oGU-2Pev_Y|1=dvwYP9FF0<$77|Aq_o^;oIHw#HSCHw9z#gSRNS44 zt2HEpVYoqMmVaBV#pE`-fdxH{Nc&tBTnwjaDj@6hfaJ!dsFiA@M> zWr*NoS|yh3w~JJ6;0aW0kbLp1 ?RJ=$dc5=$u3^na(EvB~Q8gBX>FWkpQ23`?_P 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 delta 1963 zcmV;c2UPgJ5YG^hx_-+YIS>E>0Rsa90|W;L1pxp6000330|W&T01_bvF%v;? zA~R8u2NWYRVS%v~7BoU~p}}H;!qMUI|HJ?q0RRF60RaF2000000000000RU80tEmD z|HJ?(5dZ=L0Rsa91_J;900000009C30}%uvF$EGqB4HC0QGaofu`qN&gS0CW0i57bg)N_1QbtR_bJmKV2F|TA%!1NkMy;AaaGgj>-gJHOVWtLm5#p7(MIt^$or$5Idu)e@2PAs zBQQzbTL#AyS?k+cR>Sp(z4{%)@z!%wSd`F)##oL9HKJK=%Xqa$?f{iW$p_<&W_?Xc zY3|b}@{(Cbm(rhEMvrUM8pWvwR8-4Q#Je^;fEXGbH-GVvlbmzs&aZ_0HCm}LQ5n{t z7?@<{eViX7`M3UR)w10!Z0f3>#(8da)3R3Du0hDaB=C6P=-b|{w)87>ooWd{!!YI5+?NUnQ zt5n2YBLt1Oc)=`ukFp2PhUt1z$zDFQUo;XHRevuy+EF()2Id?o$pZv~$oP$C{YNdL zz@};GRq7*eWj+i$YK@Mv?bY^skL=na?#Yw2F1M5kAcnwxaJnFy1BJ%4oDJ_g*xR5rE zbkJ0I^i}OqJlk@BN|A`hLGDa4a6t0LdBdHmrKai#oz8G1ApQgnKP=<&)*WoP)qmQn zV5zstVyTU{2LK-|V1vT~G6*1o2?SuBYuz1tx8G|ab!e!s4#g6M19($!$sQ9DNF#3D zjB-g`rHgG*YVa=N{XDwTrniEJhn>^dHL&WsP#JEPL!y|00%zb zPr1o6e@#Oc?u0sT_u{XopKprv^$;Hftwdpzk-_$f1LSm-dg*Sbuv-)MjDIrAM)MLx zwFvCY%iORzJ&v>sW!I{0@xw`IqqN6C8ib8&3$%b^xhmNH+A-7-TzZCv8f%2qkw&g0 zW~Nh;K*k2*Mmg7;`K7G;O+%+HyJs^Xq>ZVlKDTbna*X(q5(vo0pPzjav0d&L3pM7J zww4I!<`A)yICA1av;a>d8-I!8$aC?r)YR10A08Nliy4ptK;7JTI!U*bslG^2vk`LG zBe)(|(__}X(Q6y9f#x5()19AYNL+9V>23F;n_Ct-ape#8# z$3A`Z2TtLJhgR)5SbxxFk{H33k&nb9l1KI$6?nZ@#ME+IX~%|T3s5IqVm~rHuKEW* zTUGE2$i9B;Fay+UkM9*s%aK%)FPPd!mpXce@Z#$Z)8nsmbE=hTp_Sq#Sg>B?4Jun` z5*m%kO*n4*fzu4P+LvZkmNV%1J+)QtHDuti-I6j0Z_iAr!hiO~nR}bM6QVU`LajWK zu72__Bh+Y&wES}7uz>qnD?w`dE%T>?Z)YQ=j0tNXq|Jj{!wQm3b