From 44f8f30ccc5f35f36d4dd5d7500b0e615a2b1146 Mon Sep 17 00:00:00 2001 From: murm Date: Wed, 22 Mar 2023 04:49:51 -0400 Subject: [PATCH] modified scott native to accept arbitrary values --- assets/images/jjosmap.png | Bin 0 -> 17661 bytes commands/image-editing/jjos.js | 20 ++++++++++++++++++++ natives/scott.cc | 14 +++++++++++--- 3 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 assets/images/jjosmap.png create mode 100644 commands/image-editing/jjos.js diff --git a/assets/images/jjosmap.png b/assets/images/jjosmap.png new file mode 100644 index 0000000000000000000000000000000000000000..0c0392e2ed0c9d24b6b915b0da92e582d5848ab8 GIT binary patch literal 17661 zcmV)DK*7I>P)}W&5X8IyFMVo>c5bOwIG(nAsQ4A`G8u1bEfjRq|vuxBDRki-J&ujnt zYI3s|+`%grWalK>XMzq5k=DeKZ06E{hf*Y=8ncHD_Sw-^(eeDYyrzWn-o0JwpS-IlwEm zZeZg$V2c9pyWR)#b!lk~!H&Q6NvMA=ULQ?Bf6)rWq6VZu%CrY|3XLI!O4@R5EK9)* z39|#{j##`g1us^9-d1W?3A|kn04dbk6e~YpLMkmRffcYZ0KWM-j#bd(uYMBfpAFYX z6VUHokwUT@Mq!kBUzgMTdkNLetS`Q2J2j;_;sWAq*h8P8KriP;$jz{>@xBq;uEx4R zzILdwVSqh6zt1s*ZN%d5E()xt;HPjCrf_q>fVfciD=qz(J_+^5zCN0Oevds<^A*lS zYt4a2ZJ2jZ%N`0vjMwyCIaCtqb;@mVE>!120&|h_Z6aoF-fj_5al;BA7l^_Y1O8fZTISSi( z<3~!3gf1*Cu|6AUlP?XKpX0p>!%~2>VYmTGkcgQB;~s((HXsF^Kmhss`pwlF0Tl4W z($vzt=K(Fk%2_|FH<=md?j=EY;rOvpv4Hajetrq{M-k9pYH8lrpq6S<{q7KHA!EG~ zLZ=W$E@GSwJSc?jH({4hlvb397Cv3OFl=crX;+zO>-S*2v7})!@Ut{GhL8(y8#hWw zusL1{pM?JQ{=;+9sZk?(e&B>Qezzj9)ZzeI$kA3xzf%l|=J^MHZVU8B;Xxh1GTKPa zhsV5dOVhNUHfgjs(_ zYu?*DOo3jG^&`*3@3IE5@9=0cBogZH`}PR+M-kAAi!H$cIPVl%hu7b7G=N@6NZ2sw zC7`t-C-_=9SuW?KFy8%d0C4m2^iB628a62G7Wey%-Cp}xO4LTe30C%vIHp)3HK(%2vU237u?j~hE7ea zA>_T6=9C*->l}OI`pIWnf!GNB7OB75EK`I3lCLMwZx+z+v&g}(q2c&2GK2N7qK;My z$>OAj%yrQ0zY;niO+V1zF-xJ3=*0_ZD4N4qZN;Y+H;r`(mhf-nht{X|6Evtr0~#L1_&$Imp^}!RfY*kzu^D#${tBlC-9rHo2cID@ zW0NfFaTN@So%>X*258lSjxSISD?lY&n~57q8}p=}5&^_dKg;5kMjjh6Uwgh?KraoL zzflt(N#PWi8C)oSFSrm|#ACg4YmuPuyuzFC!c}3dfuvPRGiwakaP(vXs0{!lyjXIu z=EHF#6?O#}1>eK?&i4 zo;TO4G`8@r%)iFrE%XX}6qYsM91N@Axlv=|;jP^z^aU%%Mv>x}8o8W918@#({e!m) z=!%UvXb)Z3h7)o^f+d{lwL_-aG~rV8za;=iPXj%iOc^n2q~o--!zr`}`5HhcCG;B< z66=XNob07Z)VP=51&otB1?i^MZT$P}GJE=BZe-qTXP8#euxSNKThXLzgPgrnwyEX9 zHK2Bo*3~%qocqQv++L=h&nZo5NcLo4;uzmeD}$oWgo$GTZVgK{erSFp9o;2Cd>L@T zds9Sg82yQjA9=fgx-<_b5?WO5ieqD;1C<=I;M(AYU$KMse zq{-_u?l?O)lJU2(riBqy{ORdOe%SRJuE?7V&aUFwBSK`35g`&+NYk#*T*4&8QHtVB zj?%zMef3);wiW7}umKk^!>pOK!Ub@YlL3PI;v1J|GRkzY7AhD}j)gqj!Sl+&imNwR z{T8*)(evp3ib82@;##kvjjiWd^CH|ogAP@gD36;8q-FORrfBUA1L!3p3aJ$sU#@q+Gq#0S;S0WA!#ddqk=** z?{acA=YkM~QLeRApha2~c`t>2^$ZwJE@IONIcz0xeUpGLnv6?>8k9$+(1ElNG>HD6 z(*p)*s<_i-{^gP1b}!Io$i1DN&rvq_-FkwNE=`oigEmFQI`F+YvH8II3~KSpalpW( z!gmvd+0Yb|rv-q^dwdE6495w9yD$zXM-)!sawL`$89##rHT|`5nv0F0Z8bJ|zV#ds zL>UZ#{zjYe=_m_d)&>(jH8y%o)6Owm_M-saD4>q^oI%pMFx3K#&Ve+WcDmNv%xe)0 zq*D}8k;a`1HneT+INoe(=o`Ptk6P54a!d&&3@wBT)%poB{eUJD{LM6whyl|jsBw^uI)DP}LHJ!LI*Ap|E_52*pd(BaqaIWD3RlapcN;ct!u=qaCEAg4o6DR$I)xtQMg5~%x?lS3^n&Xsf6?->IQT3nfbMRsPm zR0~6Zf786ujw0|WZ0@avgY*%&!5gpjcwj9=QUK+(3#w3)3%?o7d_$SmxJ`|DJEw96 zCkM>6aryyz4wIq~&nzuC`P~6spb#xUO+PML-G)??D*UOMf)8?%ey2r+1!E~4ZkS^4 z%=p~tC?G7yBKWz=QWC~f5{T;|I{9NM5o0;9HqOf3sFXbvs~`=rZwb)hBlIa#NOQOb z7M011tDTL~7IH#tP*a6badS96m&LSjdk@Mr6~Cwe!ot1WMMAC(_MT*tnGZX26Y72M z-<8ue$6L>ao|6)^kytY!mvK{<6UwpAbVy~B-SPIT1fL));f{!dpQ0uGU=2Eyc<#K4 z3K6=5LZFRJwY%NCoDQ@6{)wcljwX6&QH4cIGnM1vwVH!(K(G35)0=ECB0o#FWtTUKHSaHDoAqI2Ytdt*uQu5xrh?0Ab%<#(8YnkW$N=mY=G}DRUxMUo3#LmC>Kv@A)=kQaE9oNgue+-wxggZmZCT1Jb<5< zw&FOn8p4r^*;m9xj$R~m(BfP!wgRmQYzeXxMOaPS8x&+f#=WAJz}u-R3b)jR1za;4o2 z;2~iv6UOfAWPe3oI3@3$>SGKJ2c$_ z$V#-i)N{4T6uTiB2xV5ok#i*TIfPizxa+p~`VDRrZ^xwtH+e;cG!>!@rstJYrg5Hz zEhd3dNOb|O_Xyi6d3!o~diK>DFEFgg@Z@hAUy#RugMVLZIrq=kzJ9?L{VS432!JE5< zdq0C59W9E?dX15eg2p#6UT5f|oPg30{b+fdyPXcSS-D1NG_1{+(&Lm>4sTOe&P)Iq4yAx-vH6)2 zRwyp-fE*Ee&ex!2ZeF)BZUJu$Iv)e71*E#J#@5WagKyjkigpf9|}~~Zg~sbAkm9u(b|a%HB=-m zJQa|vzzJ4U%#=DQx1-RiVcEaB$=U}A=p}E9D%wXH-4R)f+$DlUM>__nh)g*gd}ARW zTJiO$$;i)LK-cVOFr=mw{g5VzNu)>erzW!!DDLhI$H{mfk>*XXx9P*g(@fh_c75dq zaGaI?hfboX3?gktMT#!Ym4tM8hXX@ewlyYz7SsHZu#4Jzt&I|q(>kK;eGGWrb0V-XLmgk7sR={ zwgFuVlCVH{$|yMH07*;9@#8|e0XF$j0C2|+3X@*KAfx`hab&8e zBckyQ$4aF3k>jvPNc#Zpbq^)uro$GVom0+Afl%^CU{@1}`u>dQa6=zsxO4EQg&{>1 zaa?k+l8G1&jOGUeOG>zgqf_a2J~X(T5;?S@1vO8aHyh&90hgxPu$j>!n1D!a6%?{ubV347zOu8$1tz7`W)2vUr)aofz$oy-Ei7wf z1XiHPe+-y`lNfMmk}13v-nCe?3=d&GcR0;@IduGNMdM;RnQbD)24HZL5G0Y{a4Z1I zfhtCTb9FQI#EaJ?%7e;>^L5a3vjV{C`&R-FX{B}?k(-FWr_ZSbMNp`U_Xs=8?&kf2 z1oV<89>B{Gyr4$ZqEAe-gM6p3n03s3S>sb>$sCvP(bEsFq>v{@ekmufqA?WSM=*jU z?N}j2ly;JqJ;Z*W3vqI1XYAcm7-_yM@>Ob%&mnC#OM4mrb_q6e!=9a5rRs_(WUjHv z#O_@l_c?tcv(4SRfRz+}pV$EGi5?oX7wL z*+(t}rwI~P(o+iS=H&?d*EK*J|Rj-sPguz`bBFld>xDy<3% zqMTRI5ffYxe7n2pIe)S+03GO+<5(B#!v^yp<#FL(e@^DUk$_$t&=Kts3{6I2Kc~Q& zIj%uq%Zxs>=rX0NHKid*`(-qND;L?lDIEdp#D6=(txQ)dtOazYl(f3xRn0vrOGyd3 z!N~`P8O-U;4H>BRKGOc_vF;LxatuZc{z3DJNP(z+0n{W*i810ODYua49hu{>Y5HeE zGSEph2ySA1Z>5~bNiAYs*2jjAqcQTkzS=y?tG|eoD-nb|?&l(DTrE?e0O*_r3Z-jq zL*eLr{qNbIew%Noc{USh`FYwYc!>;&%jLGzT(erNw9$T^Nne z?Zk~`fh5#xrr7O*ObYdu<~~VDZE7eODrOH_1UYS`wKebK9<>=tv!U~J`Mc7r$;jm2 z7f@Jw1{9zTKmk{(9f{NyURgQ?A1Lq=>i1pWNI=s;LO&!Y;u%U?Q}$45HvlD+Sf1Y< zktWq0J!CQ#svF1!bS?Eo_`pPy#+wZ>%#e$(+IRA(qDov|;&7hQ{I?d6Ctg|~xdAF$ z9RT2^api0+ZjeK*Y)fNrx(8@&9<~cRN{}SzcBQu~7$XQHrzj2+U2GQvp$#Yafh7tr zakJ7Z@0z*;1{!Z^Hm_?%ZRV=iC&jjgQ`$|;+G$GIaIoyB-Yaw8 z%)|>*4ebZpcti@yvNZGMI9Y=5V=3GUodJye*e-Bh;5s_fTAKMFp@d@1n+xvdNjXtd z2wO@s8eT<}Xg`%TBduem&mz5WekPVzmQrQRV;A;Xf-E$xnW@xSOXV0DT0>e>ZOtnI zN{cJc*;DXu_2Sy#6kvBR;p@CoQD+SUstu4LQR0e+g|XGi)}0=yc}!d_&AudXe1Fzl z0qCN=q5|6zmC+L905ZghAAi5heI3CBfImqG$(L{(H3PBdvJtI-kJx-e1ARZ88852G z0OGU8FI0$7oL~6IM6=M;hcT%`yWM(`oLW36G>t1ApxJSBh;lZIs3Zy~fy28j10ClV zd$FuBTQ@FC;jY_qBdRf&*pL;y`AQ>QVa(o;MSpz#28jk^qVI|R1C>!)hrv->@}5O?jdjX7Jh<>L-z#@tTR<=5?pidR z2kC7a(7h}HREAR!57L|SnG|761vx-?@}L(<`v)C?GrZ6%s5PZYfC^dO!l%Tkfn3ye zi2zR%e;kF&W*$LPA)7E|w^OuQD5aH@i=YlEGHGR=sUhPqy2ZeQX>ln0Hac^-Ij}d5 zdAC`VmrV#^#GcihmyXACZ!9^S!o~yp8BkW_b-1+x6+6o`&e=s1DbWO_=^AIM3Kcdq zJ5qsE9g}vZu(q`F#K4y$*23SmKmHK}l-R*9$2vR?=J5B#Yq1Ps*25nPv6mp^#BQ1Z zr`}igJDeRQsM!wkyRlGJg@=Nwh|NJRt~~c7%}L2{kss#NjDxuslBWlf6O8cJ0T!uYJ?aPNorsfAK`V=6Sxs*D{P-^t& zidmppI)VOe&b?CiT;4j@eewC^@^4v&@qUdBXw7ck{hthl^~+@Pd2bZeTLko0pQ4H3 zVr-*n&<-K6e{xV)X}A&5(Zf?yRyr1dBO$lUKq^6}@MUJxFyBm(drd=cTb~`>|5RM_D$LlX|Ilfq zKIdX<^P-@RqC*-~#>L5Tj)>2{2DW`hyz4<)K z(KY*TUnqB9UxUU*$TR`8rKx??*c9qlMAP!n0+AQ2ZW^4l&G>Cjj2FEl?V|=@fz*Ub z_T3}1$P_je=PDLJ1pC=7NKpEp?t>BrWhAK-!=*KWY6S^vk9Z#v@GHNY`31>$M$mLi zTabn-VxD6VwHC1}JFAF!{`e}1Cmwg^Xr9fzPNCkfgv8LXaE{Rqp#Z2w*HCDKf>PKv zkn5B1t2aqGbU^td319mC0PeXMlmjsZ_f)-q{>5_lb%gWJBcS$%qD)|ZZ%|;sE{`~c zH<*@}>OUuEdalcWCnp=1w^`%^N~=mU38-HSIeGN7)uubAtiznbk-4L}!9?%8)=+#7 zr3tF8f0-P)Ssl=tq_h6~IIvfhGHcUH0MK|X@0TVz9T4EUyf&R2kXx%n z-b))$DUh=#X_aXMBV#@_xir1_-jvsUFORXNrfPjOhl7SJPhA+8+;KInSPtMPzEJkQ zmVmk?K3p<&mgd_J>xv>L`(dJhMs**}Z$_Vp4Iz_FUX{F^%_tI3WWCIYE#WT4iy^#& zGIN2A>$Ld|E})#EnayLsEtXu};k2Pzy`=J^$(Oe(0=-%rYT;{CA(mJ6f0<4b!~xcHUL@G0-ZEl^3N7m@Z$28TENMM%@S4Lx5lJ`;pK={s z8(u^`FnTZvpL)H17JzeZP~i3TwFLBvovCFSh`1x-L*wfuEXA#*0BmHqj^8NZQ1{)8 zcBl-w?^DUgL)eVblw%39)3lK9l=lgmFu@7{U?zBt@c?_ZhD^;%$HGPutu-V#OJ2HT z(V~Q44sq$!fWeHOL@+6Yu2b%aJu5dsykKxM5}V8HE_B37bD}a{<%_zJD!T6DQM`MW zNsH4w+?7&ETV=untAw`||qpp1VkFk?>auW@`aMYYdU*s(;GO-c-*#VkVnUq^58~ zX`VWS0D5K=Y$(bqnv}Pb8TyOPUI{5R(cUE2iQTIY0Ih>IWiVgwq21}q*6PF`yc^-Y5g-k?+qv{{Jdie$v@JKY=(EJV%!{A`IiT}tgmnR|FTtO{*AUPjLO`vg z)tKto#wNKg@A4uRdWeRguw(|5@CWcR%yr`0rmOV7O|Mp)K$MFBe0jSZ<57r{LRkj@ zfRQ3`hxAI9kIzz=sx=}_YT;R7R0^Ln)GCLpG|%K63u^2dmlCW49pQpyUMK=MPK<9} zd~-HRLuaDrL!?F8J4;W*9snIw;4@UC2RT2~nj3)gOsJX%u8%^|a<0l`BR9x7N&zI4 zy5(hfu>>#_w_16k-s8*Ul7r>%k05<*0jaD41`X`w$2SP%iO*R>Z z+1qHJjRycB#B9>%@0m{WnY0{e`{YJ9d`bFka$F?H^BlJntz zm6rkG`Q2GjCl3CK{lT{h=%UtqSeI!4IU$;)N?5RVSaxKzN4R6rso07PY1c_W_;8z^ z?1R6dY$hNbwP!Smzv_2;BDb_UH^Rm5?_r+B3(DM8At62I`nQBmediUU$B34kj>oHc z){IQ4roFno$%$FbU}Pqd_re0V)8-BZ*a;uP?#`ynY!#s~qUdtA@262C7O(7()8+ARG|S|lAG z0dP5r3Wv=@5kMRxhi0K85StoM8TC&(5DzZY#xAg~ZXgNpQR#jaZ6QoJD$t`qrJ$+3 zW1CrRx(VVZ^#h=if)!?!FbhUl!9G1NaUmC2&W>sEUF9D1XtfFC6j6hU?=_CymiOYb zg-ljjdI^=BGel-w?Xx?VVH4jY(yG{Nx;Mkpdx z&XnZD=nvpuyiGub_Z-BYCl}s{D{Zy8bIU4EX}x7Va2sJ!X~`F91A4~4fLxx;&kIfC zJ9JmHi*%J)CP`n&dq^uQ=TxRw2_}K$aa|M#$N5BVh)#O;f(%~cMuqYg*@G&5h<%Um zQ%IdA&xba>;dmQ(Ql^}mUczfYITzxMVfk7K>XH|Yv>3EX*BYL`rECd~ZmyLM*>!5Y z>uPEVFHM0Z^tco6Q`jK?Kqf;X{7_y5rH%~cJ zyw^;xJAu;B#s`zeaXyTC*k2SZDuqnrpeePC5aKM>U{Z0PzX{u52%UMwJa(4_T1gx%L!lyNJ>GSv_qW|8Yer(`p=>=_$ZG(ipP{`A?l#p`v{Gv$3$LOa=xhdZC0Oak$| zxXFu<;38zGqzx{zuM}Es>7OsW9WCH(%u~OhqFlq36~2#UgMcsy1sr zU!8OQEZQ z(EXK^n6X-jSG2H+-!nN@{2hf~*Tp0d3fS_lb5atp7W#1|ZUw}JcBFUWg>_Yxnv#&(*v+B6qj^6nIYF9w zVe{NGJvUD8e;+wE%+IBEE9}khR2i{y1hjD&$dHCy*YNc7L90c2hPy^PNOQzKSnJ=t zO+cNCcV3xxd9p=z&%Zf9Tjcvt5gI0ah{?IxyN(z1b$ty@R_WEmGt`MOyp^k(6_CX5mX z42Tw!<9X||#WBm-TKJi_3Frk03Y`mbkD_@DV?kGQhnGnJ`r)2~Ula&Y2y~C#zQ?4> z0a8?CMSJMCgk}-Sp|X?F-zd^Ny;OUh#;)2xiY*)3c@jSwXx#e(@94;4=F)P6I}@k@ zCCzVY4+#~fpm7eAXP`5l_TG3raue;yjoQzvkZn$3C1xnYs<`KzV;l2&n1Lki?;w6g zcIi{`kqCZM=G2H>6%$a2FM!IdaW>-NC7fa1UZ(_;&s-6-IQWb918);hDLaeZxqL|M zba_vh=pHvO?YfLHWeTQF?vStrn8d+_5XMu^sLslqy_fQ6nVh%{l%}f&Ri@9O4w5>D z!cXm;f{fzomXW&+)CSbX%JKAO0Z6G0lP~MN=}|xB;XN7h!Bi|y!heZQ=3#BNoitcD^)Tqmt zKk7qMi++;jlQu=0YbX2gxY7w0wm*zo$qGoLr^WKF`!^u$KfFyqVOHfEN{^#tKopY0 z+fxPrC{MCUc!S?=D~zc~gW5NWPRWPwhs%tk_WWDu+rbjXDr$qCuyay1*+4JY0ljqV zjwk@{D;!J*(Q-Np2bM-W>@v-2$P4W#R+BH*4=GKs5=^*JK|xo~P$`zjz?s7ICm0D6 z87^vx{pc%CQ}ZL<5hz$uU6wr4o12<9v<5HdkP98Fp~T{I1=<1y<)Ija)rmIg zcmsH|fX0E_8U#9;`XB}ql~W7K!><(SDV~!9E+>kDRru4qYF{vgVF=B(PO#OCE4*fB zkmM(yC|1X#mHwwRK7}cZ?~{fMIT0lB71kuhqN5z&QG*4wb$Qc3HEl3DK+~I-@LXV~ z7Eoqdo%c360;3>?9F!Msn$9TWZ;Ha&OvV7JRtnZpwkkK~Ggk7+*u3C+DcufyhUqBD zbT7+h9F-KlP#J9#B23510(jzJ+5dicmGb~Pv+VH{25gwIRG#lYU zIwNwTZrL{y?x7(;?^%_DWoiY`{mvk~1GDvwj!-b2Zne32SpI(2xBJ~eL*h&T)nn>g zH2Eozju&r}s-qxvBHPyY$X!~nS16j-P3VG3i_=C~3#>Onomx^E^pGa%jdi4TPtsil zWu(+1cqk`-TWh!&f>|wY;_g9K(=Q1{^dt!XD9!8)lP=Q(&qX}ro))NX zClSNrEwkAr!U!grOe(89-=?v?HK{0SA!Yx6wv!c5JU$k?k|6KDJk9M6woOzSMKlDc zIJI}_iZm10sYSHaHm-;8BC(u~%W-n8X=Z_=DozT9xKB`cl=E4Zp_~|{L1Oq0s2U=#Ob$zjg9^V(Fwz`~6ZTMpQNew%=L zEMV=>HOb`Z6>2vI9hBfh8pH>pcJDOx3ctk=JQbjcW07aR zXuh2e&=dMj3X;6?XY9;mngIrCKSh4T6Hce8T8$5CD9}kPmocR0!n!E3ze2f@j*SWn zFJzvn=FN8IB0Qv}p?G#mL}^9MF9qaz*r~+Q!YMgBPN)BA!c`8f@(g95DN!UXl=2js zwkyIOt#NZN>}u*@)UX9FD6E$|p8H^3|LJW43Y_BiRP(J#obhcf$mBQG;J`uxfm;;n zSd#vl6fjNimW8A+YNW7DfelTL4cMSa7f>a!(p)c|_ZC+u(toDs|bL&)d! zhETuGC!bSUQRQ`CUZ)xhHULQ0!rIEoxz+j$#;Ds!tvi5sNS5Hm7tS|uklrhxUMoYv zF;qL3O(9f`c!0Z+0@#>!1J+)=GSe4Or*%x+Ss~96ZYyD1&f>34QzKKDn&mN=1VjtK zjvkLNafMMifucclplmHPH-Q9J?+HH5oPfk=TtrTa5;-yyIyNQmS-G4X^J0jydKXzb zUto7QX(f9kOj0R}0oAlY7+P6Y>TR!nNn#-+&_&B3?|m)DJ8fdN=kxVUPLLdt^B zjgZ3J3xjStNC5CHS2cm*Pxx>DZ~^^sL~5i#wJ5nl&dG(Wfv^0^<#^gyX!9b&PIO9~ zvX`p8G#6jRT7^Xw$2G4!Ql0q@(mKabRii2e*4oRNa^!CXn(h%9eg;l=KFj8_ActPs zze2W-!oWZ~5#nrB10wTlhKdZ8lf-);diio%GI<7-G!w@9ABI$wNQ2X{b|vX-)jF9M z&nT~ahK6(It~#%#+2uB03EdxKMO%YS)q&7tRCF$3O!VI&}x> zj>p1)b@&*yW^t(i!1tv&)d%2RG<>j7&vrf&zgM{d))`)^LD%B=2+!`IaDp3_+Nqp6 z6JA$M6x!2vZb0Cc8Kw4@vyGy%v1GObs5aj_vZm^G;H>UNcEcdcnGdS2g#d zvYyeDG?Li5}T}Hw9QHCfCBzq$=MNA#H_90x{rr zHWBK#J8oVvc5<$=1R}%Lcvrch%et;zVbv9Ec}PfA3ByzbF*Dlqn;2SN4yEP`IX(qT zB#g6+r?SngHM=ygvG(a9m|=d)2aVG~7oB^0(FrVqpX0QBu&yue1NyZDbQX}wDN=4{ z^?SD_UblI7FdpRlk(W&Kym<6=C2UBT(8Y18o!``!FHU&DY$SQYDxA|QsWv{>r!&gt&A;gB1bwFV8e)6!?U`vA&}R})$52^HSb z>!MHc-kfimd}Z1`F&Lf7>3sygelROS(TthddULS9S@ursmJxm-;>ZQ zXrV(5T>P`>!+}p#$f)lK>L|yd`U+TEABAE~n@yI&nt_dICc1I%bwSc?O{R^n16Ysgcr(h-`IjbYj?>7)mRRV`TpckG)i0psKJ+S8fY zg^h$gQ(1Uv0;$4fo!{y7KA+gt^+S;-Wl<^R&WxEq5)KMm)l4y*3pxkq?Cw4%t-3n6 zP#HDB904x=D#VqqO?t;N2GsXEe={N@!+;Ur}v zLKMb5=82hWPYbC4>gv8Dhed%2paLW z%0-QZ*6iH;Pio%E*uwD2;oXm3bIY)-tfAH$v?K~`o}In9GLPe%oA;Z5Uc`|~v{1?L zi@b4a4%NFPS0@4RswsbXE~-qpA~;s&zJ$nlqBL=F0s*&kT>xtq@8kSYgwOS==RO4+32 z=wnli0!MVF{tw#sf4G4DS40ioki9n_mv;poHHT_lL{F$(;sK@Hy$Zbrc}h7ok(y%% zx?cSN`x?8OJ9?ikW)n4Z3*C|Cs0bDhbdcx20u@cE?k2@V2roN@6irqmlT5@!s1u)( zjYa9WE4zsa)#JX&DW*kGEsi#o(UX2C`GOV)K+P?P6Dy_-)S(QAkuq#l`$aW!d&bbP z%h^Q))%7EQ%Cd5Fpa4PWG@Qi+ub%#!f-B5hN`>=rB01V6&s}4%LWUoFT|jE04RVi5 zedd9qlY_0j=-{AIa>yehc~5X*F7DiH-~b$&qx@?22Rh>9NS_1+{VCpWaBv1xrwgUs zVLZ4z`a0y6cvfXAkJWWXPYT_W_t2?wkkvRDJKkv1udc~;x`@mq1}7R>D{itp?kGj( zy>KP0%3k8UN^q442192A0bL!c5|V3ZYtQEs6?bz&X@VaYvzxdHG3FkZR~q4wrZhUl za-c}ViN`M9l;abNv4CpymaNdmT3_9R>B|KaY2uztR#?Pomw6s+zz0)Cd|^gc)X6LD zU*^X`eK_fqEN?=c4$Y>~AkNZ`V-QIUKR^>(zHVSHq;$KM_f#z_5T|AK5 zuBt$}kUDk5kk5Ar@^LoK;XQKIlUkW@~S7E;nJvte>A6c8P|#cy`5~3RkeJ5vzj+oCicp`eS#pw6TY|CPCk5|HTi9o8F0a(D2@OQ!h`5(msYF~6 z?bBY&%Fg`1T~yg~@T7;6Ded_%?}TDO1w(uMq^ukc<;02yJqziP5~fs&8{tTmT@T@W z>UlYI31ac16sk?^nB!umz4Lf;Ix0F~D^3#jN;1Ai$;C9kitk^RtcT`V<=ba98L#g= zHT9Q#iOYqmy}+R4i?x zklz)~MeJmYD!fAy+b_zvS=|t#!j>jSA}^W2n)qnS$kse;6_pLINpcD4z)Zql5~c^d zD6E)SnGBFY>8Y7nw5VK)DJwNW6YLS)C8#I(vnYg>l1UC$;bU-f{~r65 zA1Obi_xF&mJL9BQ~DrNGg1*#OVu(xdm$ua*~sApm|3_nVWMEEL~px`!fC0 zyjSA!*^H8<2Hj&r7&oC3SfIHW=2zYFs@fAtO9>-R+6w?%mFIn4?4H%6^OV#WqdFoF z?N>5E%&qrk*~|PbWx$E7msZ_J0q_qL&?~qlHn6{S5N7lw8Gc--*tpEB3dUqo8k;cW zH#p7}thS8Y(K%}yehH^~5x`aa1)5y<%0!aD1_tFdGm--1^kwemrH!?V8CaJN0P7kc zF%B0401wcKA}@-_EG?&|Qx`coDb?_dj*gzYB3~5F*Ihf5YZ=J7spBIBZANPvMab%m zc=D+gTDAUc36Cry*GO>Yg}!S!&hKP{rJ+=PL*T(@Kq z|C!Gd0_S@UPFNl!!19b)P75?16ew22Lv=APmW!IW1*kJIIngRe6NO^StEHokqA_AI zCQs!K8eXQsR`wH&+Z62e7W8+rCQ1z9Fd7);&YRGVI8 zKNn5h>7v$?kXBt!bViiefSJ`Vrzto1z1Nd8FwkbYqHuy(q~|U}k@nRnmyVO@Dl09) zCcV_^!GK6Ls*MgzAh_8{rO86z4Gt3UCB2z+t^fWWq5b6tH^n`?I00*!{OV(AQ%NN@#BDi@P9knrCc8cqUqT@7tS zSxM7&(+zG&ZZP#{T16{$N?kQEBfbTLGo^XaDSJSE_PICKA< zyQ$Z${bKZe&xjJKM}RD|ve_e$^;U#KZry0OYVtvtLmt*F1=oR+LiHP{L(xJ?q=O1& zQ7lt+)|+Vh+K1o1>-n1l#}44pAl&Jd@_3uz0&Nw>DQdA&SZyhm?ufOkA%IFHR4#mM z_c=wLrn=6`wA~RdMnr^P`*%8Iht+9qn;fs~sp8UDY4#PNGCC`vdr%{XQ&=AN%~nSd z%Di48{DDO{aTY2vgIDkf#(7yi=7JVtRt$COb8)G97W6ojdKcrnGUI|aVd#+Q(i(!* zzqpT&|N9+fVm|EpAPxGBe&C;cet_q994r`~G1~e~+@}RZ(^3kR>TLNPjUCfTLA49i znL(hLRN2R-Ih4SbHvoFqG`Z!hF@j`6YsjPb%d7ZK(HKxz)OTNH*yX?l%51BCU4l}f zQ_Y7eItLcL^-L9wb9V8jX-SX}YGjg$-c!pS!4CmP!Ct*qDWIlIy5#eJtT~nJ9 z)#p>EmDu=P0GWAo?o<_^UInD87V0ouHD(a32nuQ?jnq5?I^9F@_t^qdc>`FfO~qgY zP$$;8H1XFsX6CD|Z@Y+>eCvU2FrnmZ0H*hZUdQ97HZukr!B&7WXJif>3lgL zZA^3TLnw?vm1}5T3@G7w&XF*#s&GMzX3mOHV(1eYwD4Swcd0%+LvHuaNRul2yGk;wqfgRc>YyP_7M7Yx z$EqB9_)1DK67%k!n2Z`&#|L&p-^}t?{nA=!noQ<5TEGq+KAn3SbZ(AyS3a>1ubZ+} zoe&9pJ*NTX?1<`;gH}y#X|^wR9m&QJsFpgZ-KD9Kq`f=BzQZ->H@VIqj?7!cF3lr} zlG7y2b+F4BQeAlfRghMV9i(Z8lT(feiTpgiag&QpP1vWYF%@r-KPE@I7VwUmyABGI z^bbuG!$FcGvkZvgsK^AX8ltLFsa+2>X5o506Htzge!sY8J&W}mRDP%K?>)cLxQBlW zNB_n*I!GGgcZ7hx?>c{sxb{i`eF47&K>IR;x!DQjIm~*U2jzn%lkl*=lU*2lO#3&f53!el~+1Tm{>hERIM{8hPgIgXn7l3w}^sIL9>qgk~ zL$9BA0{TVQ`Ev&mR>E;?WD+e+I#bH7)Eu~)ADkxd@cYJC{?wMSSY}Njdq!>+^^~dz znYjI{siH$IE$yy+S{s`6fb0P^^MoXa&nA5O91ajxmtbRTq{6Yo{0j~|6?x<9a+)$f z_Tblk63}n&b^gKu-0&_o{Kc!VPNeqnUMy)Eoi%!0o?bk$Yk9nbL73soJ@B2#@QD`% zJw({sE3aDuB~32^UxAA=aHE>Ziov+SlA)2+Fv6XgZPL`^{`L2~e;oK__%+po^24uB z0{RWF^Fxs}=fbKN9Rzgr2cm)Ge9*Z%BQm9O51C+TyrB0iTq>=56JQELIV&{n2c4h; zZ%S>pM3)0uT6$~_!3yOdNHfkTl>~7LXDr+zRbjyQeFO&y_#~hosa`4m~4NffXf_(5Amm!NE;(x2Rly1EA%BG}b@ zs#t_#36%Auv^!dd-aLU{{Sh1_;FExUTd(I|-7sJ66%UhqBiE;=j91?E5ZbK=E%Au0xtp*v&If#wr3%}}) zw@O4&g3EL8n5qVy0;q%!C4YdL?YMFV(rNn~-}ydDiRN7;GdC!34Ja@|qtNdUTwB~I ztw3d$T?@bBlYoBbT=Byj&!3^WU8{l$ll+&44M+E48lE#OJNJnWT9?=1yfX-JBi&UR zyjp9j=+RisS*CkzieeUCamY!BWuD?M{|F8e@JT>_)?VlDeulHz?7>&19LiKrZTMQq z%KVD352Yw7s+D;#lOvr%r%Hyxx{9&$a}{-xaLQRTV8_8Pd%T@q()CF|e~w-I??q}d znrVepXR?UAYJlv3cl2i-DSiYC2HCEL#RV-GEmGo*oV&GNge(Arguments, "basePath"); + string assetPathIn = GetArgumentWithFallback(Arguments, "assetPath", "assets/images/scott.png"); + string distortPathIn = GetArgumentWithFallback(Arguments, "distortPath", "assets/images/scottmap.png"); + + int compx = GetArgumentWithFallback(Arguments, "compx", 127); + int compy = GetArgumentWithFallback(Arguments, "compy", 181); VOption *options = VImage::option()->set("access", "sequential"); @@ -21,10 +26,13 @@ ArgumentMap Scott(string type, string *outType, char *BufferData, size_t BufferL int pageHeight = vips_image_get_page_height(in.get_image()); int nPages = vips_image_get_n_pages(in.get_image()); - string assetPath = basePath + "assets/images/scott.png"; + string assetPath = basePath + assetPathIn; VImage bg = VImage::new_from_file(assetPath.c_str()); - string distortPath = basePath + "assets/images/scottmap.png"; + int bgwidth = bg.width(); + int bgpageHeight = vips_image_get_page_height(bg.get_image()); + + string distortPath = basePath + distortPathIn; VImage distort = VImage::new_from_file(distortPath.c_str()); VImage distortImage = @@ -40,7 +48,7 @@ ArgumentMap Scott(string type, string *outType, char *BufferData, size_t BufferL VImage mapped = resized.mapim(distortImage) .extract_band(0, VImage::option()->set("n", 3)) .bandjoin(distort[2]); - VImage offset = mapped.embed(127, 181, 864, 481); + VImage offset = mapped.embed(compx, compy, bgwidth, bgpageHeight); VImage composited = bg.composite2(offset, VIPS_BLEND_MODE_OVER); img.push_back(composited); }