From 9c635be6e67e18fa974ca8d30909387c86415d5e Mon Sep 17 00:00:00 2001 From: Blayne Chard Date: Mon, 7 Oct 2019 12:23:40 +1300 Subject: [PATCH] feat: color test tiles black to see flaws --- .../expected/tile_1024_262144_262144_z19.png | Bin 11721 -> 10965 bytes .../expected/tile_2048_262144_262144_z19.png | Bin 32684 -> 31030 bytes .../expected/tile_256_131072_131072_z18.png | Bin 747 -> 936 bytes .../expected/tile_256_262144_262144_z19.png | Bin 1376 -> 1421 bytes .../expected/tile_4096_262144_262144_z19.png | Bin 102402 -> 97071 bytes .../expected/tile_512_262144_262144_z19.png | Bin 4217 -> 4209 bytes .../tiler/src/__test__/tile.creation.test.ts | 5 +++-- packages/tiler/src/raster.ts | 4 +++- 8 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/tiler/data/expected/tile_1024_262144_262144_z19.png b/packages/tiler/data/expected/tile_1024_262144_262144_z19.png index a50d4324b610528ffccb6acdc0bd4e3397e1a324..2323efbcf5116f27ce237df007cda905f3f90932 100644 GIT binary patch literal 10965 zcmds7O^6&-5PmZ|#M#}fj0zGKlraYp1X)~74n~u_^P_{y_z>&uV;3qO>~y@PxY&+ z@B6CWo9>>hJbw6*nW@<+=iJP~q3)t{4S(2h%^iMs>bARI^SjBVLr=Zv+{DlHulCW2 z#beI3-9mT&6E9u*?b5}`Y_8S)bbj@lbEhxN?%Dn9L+`wjz5VjjKkl2|JbylWfBl!U zwdFUrF4jN%>4E8!pFKHI^Wj_0)%;(}b?Bg#pTpe9&2;Xs%Z}W5G|t6a+$0!Wg?Uvw*;5C}FZ-4NMjaK`c5l z(t#E%Mu5~Tx&kibH@@iRm4_HQS_y)dd*gmd7`Kix`^X9|^7NW*7E}e3h3z)BCTh5Y zwe(xp*0EOBM|!YP3v^*Ii>oCxYEc`pkA$+{ z0Y}_X=mC~wSQdFFBSu_{f2EI-z|+g230(IUq$?_6XsU#CkRdLF-Fqq;ycv}0T+Ura zLB_{!I8XI3n8!_npnRaP8qrJ&EPzSDbPK8{mJr5LMnSL}6yQzQbyDKZ*hPSfC~#7M zh^v64sVcyGTNJjra#Ah`7B{`<$mY=~khfihBIe)E-?RGG)`7|6f1J6zI62+?v-RB3 z-7a&k>2LY`uI>+Hm!D^AJIE#%F{YglZMqAyaqdN?0=1oeOb z(Y!H+tKD*h>7;bkr%h9+XKO1I3_yWE5JQ6^IBmDb}|P9NfzD> z%EWviputDR$8I<;X(CA-1J`CC;Fti~YepsMy5>W}f(&sxnQp+JN=mtq&7k0OSEfBP z8;t^an-qd>l~E9#mE3Xh!g*YJFt3aP3xGyrxdp`NQY}p3ID$ zug6V~pmY%A1(w(h0VEpl@+HH2!!53Y={5!m$#pkSf=>Ndz`QyNl+>;Qbc^Ly@&@ms z320MDF1kJ_iU)yIQoahownd>CN>Btmn{du$Gk>i&j(>93{_n2bkiGY4YwPm|H|Ot5 zzJV%x=)3lBpgQVlqLOEiQQsWw+`|tQbPsLb$a@k7c4dY)QE-rLfC z3=}Gyy-XNYGO8dtE4hPCMIEE%MDY?;=#^W%aPU~iLx={7zJSU(_;rT_tomXW}` z!qvw!1&Fu`&@GmG3>1=Y{)7C+Vll|PWoDyMAaA=0(5Bj=*28E5y zZt~YF^;L*a=!1OJ{p|H{D>7Oi`R{V>v$%DXIZS8ya{Be-)zi*RouK~Q`4al3VpET{HIMDSEo&zHmSoVUC(Iae-`qej5fyMU=iCK z;YQjvXw#uh`C*Ml`I+TEWrrOeHCXVCJN)2`9ZLD}fHsdEjOt(!^X&EPAVn_YrUrCq ze7SI}!(hVY!3PsgWv?pu5Lyh6e2CzR>VSts1V6HO@AQ>ZD<{`4f9tF179Kv_J$vBD GtN#G$fkqzy literal 11721 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 Yv%mVupZtZrDSY(9k3I72Z(V!(m(A_}6951J literal 32684 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 literal 747 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%U;1OBOz`*tQH$P`ymN66pRq*1eo>%(KubZ^5}>HyzCN>}DF+kPm|tyI zVqjumQeaRZOmQ?YaDbFD0qF*i1_cmJtWdo{;gpkfwGrf0VDcDr;6PzqxzL;H#zmVn PL2mPO^>bP0l+XkKH&0YJ diff --git a/packages/tiler/data/expected/tile_256_262144_262144_z19.png b/packages/tiler/data/expected/tile_256_262144_262144_z19.png index 1aecb51e0f6855ed49b761776087c0e1161b6a1b..5e0aa4586d2dd8a82a528d4edd439e5cfd4b77cb 100644 GIT binary patch literal 1421 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%U;1OBOz`*V;lSDRyX_^_kPd1c>Ht0}JpneZqZ@ly36GG1jm7Z--~3yk=%AQS)%lP5WMj;1L> z!32>nxR&F&{;awO!vq!vPg)S140eu84Jr&CRlfFzwX*))s9Z7)WVNTOpUXO@geCxq C0Zy_2 literal 1376 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 F{|5}MD<%K{ literal 102402 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 diff --git a/packages/tiler/data/expected/tile_512_262144_262144_z19.png b/packages/tiler/data/expected/tile_512_262144_262144_z19.png index 4dabcf9a59571d836aacf3698c06480667031b5e..8fe90b5615ab7d29705b6f67d9d4b9f28d6d35c2 100644 GIT binary patch literal 4209 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4Yzkn2Hfk$L90|WC55N6z39hA+$ zAfW8&;uunK>+Ow=f-MFDEC-z@PPQm@U^yXh%t?AOL;TXWzomX(JN4p4kVmYuVrXdp zYxQ8a@9&qoN`^5AFfcSEvI5Ou;9y{I09(h%0AVWtd0;jR0|S`d02IJrgA4$R1KkQ{ zI{q}JMFdW#x zM2Zi9K|oqCfeZ%*s{)Wj3BCrP0FGd56D8TtJldor4RF9pghP@7sR2f!U!;lm{RChd z2Zqt$OIFx(-@aMLZ>`9vm3y_uu`uCD$_}8@iA{Q=d71%|Bk<$`VE%xWP{ao;IE#(u zX;K4hSm$ZE&k@q1dndG8Wd+DcSW4yr6BeC15&DmupuduKme0i&0#N(@YXWK z`x)#5psQ(J%`q^LQEAb*HINd)2#GbK8!BX#HHF}M4z(ddxRpa(PARTxp} zx&gyL1_kV`j#($%C#bwE-+3)&YSesh-Peo0@F)AV4d2GYXl8|^1LW*RV&Wq`vy!fZ zjO>lvqarqo8{GkB6edvPmk1q@ViVYJA-UE7COSl;3c|)~C9XtjGO=I5Q;5N1k_y8F z6;B2Q&q)jplT;WRR6Lm&JSVX*Oj6-wP$5nMNs4h=N0!wXrcvY(m}%q(i^+Y?eXryn UXRTfH02oaSp00i_>zopr08uqZ-T(jq literal 4217 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4Yzkn2Hfk$L90|WC55N6z39hA+$ zAfWB(;uunK>+KCgz7_`_7RSx{&mW)2@pDLOax@Lv|3D?Cdh5BxQ!id!I$_r|r&W8m z)*GdUn3=bWGO#c(JlFuVgagD<02ECI{;-c*c=QD5OGG3AwaeQ zP!*VsY#>ye8DtVr)d8Ry7LZv6AjJ(pf(ND*tOO_k1cS>>Kxac8jT#uZ1AyT`A}b^) za0LrSIAaYB`~e0DQ3s&on24}!!eK5@xD)FIpaU5g__T?MGh|mXFdPRbEd`)%ViFWQ z3`z9NYF-9ldINa|mf{kCHiE-J0+f0kfIMKDlZ1Kedr_@ zz_JZ2ljAN1fcYG~r3lOzBzBfgTm`m@iRy`giWQkKpjxoY7)YvcNUS*!1v_S)d1e$) dCj@dz%rhTca@Ts8Vhl`k44$rjF6*2UngBMV7Qp}j diff --git a/packages/tiler/src/__test__/tile.creation.test.ts b/packages/tiler/src/__test__/tile.creation.test.ts index 5b629a421..be5963222 100644 --- a/packages/tiler/src/__test__/tile.creation.test.ts +++ b/packages/tiler/src/__test__/tile.creation.test.ts @@ -55,10 +55,11 @@ describe('TileCreation', () => { ].forEach(({ tileSize, zoom }) => { it(`should render a tile zoom:${zoom} tile: ${tileSize}`, async () => { const center = 2 ** zoom; - const centerTile = center / 2; - const tiler = new Tiler(tileSize); + + // Make the background black to easily spot flaws + tiler.raster.background.alpha = 1; const layers = await tiler.tile([tiff], centerTile, centerTile, zoom, Logger); expect(layers).not.toEqual(null); if (layers == null) throw new Error('Tile is null'); diff --git a/packages/tiler/src/raster.ts b/packages/tiler/src/raster.ts index 34a7c5639..aeb50e781 100644 --- a/packages/tiler/src/raster.ts +++ b/packages/tiler/src/raster.ts @@ -23,6 +23,8 @@ const SharpScaleOptions = { fit: Sharp.fit.cover }; export class Raster { private tileSize: number; + /** The background of all tiles that are created */ + public background = { r: 0, g: 0, b: 0, alpha: 0 }; public constructor(tileSize: number) { this.tileSize = tileSize; @@ -90,7 +92,7 @@ export class Raster { width: this.tileSize, height: this.tileSize, channels: 4, - background: { r: 0, g: 0, b: 0, alpha: 0 }, + background: this.background, }, }); }