From 38138a3f423548ab51d5253549f8fd3e0f5f3e3a Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Tue, 29 May 2018 16:30:05 -0400 Subject: [PATCH] "collision group" -> "cross source collisions" conversion: - Rename tests - Remove dead code from CollisionGroups, update parameter names - Simplify return pathways for _query --- src/symbol/collision_index.js | 8 +-- src/symbol/grid_index.js | 6 +- src/symbol/placement.js | 56 +++++++----------- .../default/expected.png | Bin .../default/style.json | 12 ++-- .../text-collision-group/default/expected.png | Bin 6433 -> 0 bytes .../default/expected.png | Bin 0 -> 6614 bytes .../default/style.json | 24 ++++---- 8 files changed, 47 insertions(+), 59 deletions(-) rename test/integration/render-tests/{icon-collision-group => icon-no-cross-source-collision}/default/expected.png (100%) rename test/integration/render-tests/{icon-collision-group => icon-no-cross-source-collision}/default/style.json (94%) delete mode 100644 test/integration/render-tests/text-collision-group/default/expected.png create mode 100644 test/integration/render-tests/text-no-cross-source-collision/default/expected.png rename test/integration/render-tests/{text-collision-group => text-no-cross-source-collision}/default/style.json (91%) diff --git a/src/symbol/collision_index.js b/src/symbol/collision_index.js index c1ea7aaf8eb..587f5a27a94 100644 --- a/src/symbol/collision_index.js +++ b/src/symbol/collision_index.js @@ -297,17 +297,17 @@ class CollisionIndex { return result; } - insertCollisionBox(collisionBox: Array, ignorePlacement: boolean, bucketInstanceId: number, featureIndex: number, collisionGroup: number) { + insertCollisionBox(collisionBox: Array, ignorePlacement: boolean, bucketInstanceId: number, featureIndex: number, collisionGroupID: number) { const grid = ignorePlacement ? this.ignoredGrid : this.grid; - const key = { bucketInstanceId: bucketInstanceId, featureIndex: featureIndex, collisionGroup: collisionGroup }; + const key = { bucketInstanceId: bucketInstanceId, featureIndex: featureIndex, collisionGroupID: collisionGroupID }; grid.insert(key, collisionBox[0], collisionBox[1], collisionBox[2], collisionBox[3]); } - insertCollisionCircles(collisionCircles: Array, ignorePlacement: boolean, bucketInstanceId: number, featureIndex: number, collisionGroup: number) { + insertCollisionCircles(collisionCircles: Array, ignorePlacement: boolean, bucketInstanceId: number, featureIndex: number, collisionGroupID: number) { const grid = ignorePlacement ? this.ignoredGrid : this.grid; - const key = { bucketInstanceId: bucketInstanceId, featureIndex: featureIndex, collisionGroup: collisionGroup }; + const key = { bucketInstanceId: bucketInstanceId, featureIndex: featureIndex, collisionGroupID: collisionGroupID }; for (let k = 0; k < collisionCircles.length; k += 4) { grid.insertCircle(key, collisionCircles[k], collisionCircles[k + 1], collisionCircles[k + 2]); } diff --git a/src/symbol/grid_index.js b/src/symbol/grid_index.js index 3f2e21a9964..174d71fa0dd 100644 --- a/src/symbol/grid_index.js +++ b/src/symbol/grid_index.js @@ -117,17 +117,15 @@ class GridIndex { y2: y + radius }); } - if (predicate) { - return result.filter(predicate); - } + return predicate ? result.filter(predicate) : result; } else { const queryArgs = { hitTest, seenUids: { box: {}, circle: {} } }; this._forEachCell(x1, y1, x2, y2, this._queryCell, result, queryArgs, predicate); + return hitTest ? result.length > 0 : result; } - return hitTest ? result.length > 0 : result; } _queryCircle(x: number, y: number, radius: number, hitTest: boolean, predicate?: any) { diff --git a/src/symbol/placement.js b/src/symbol/placement.js index 0a3671d06d8..76ccba9de80 100644 --- a/src/symbol/placement.js +++ b/src/symbol/placement.js @@ -83,40 +83,34 @@ export class RetainedQueryData { } class CollisionGroups { - collisionGroups: { [layerId: ?string]: { ID: number, predicate?: any }}; + collisionGroups: { [groupName: string]: { ID: number, predicate?: any }}; maxGroupID: number; + crossSourceCollisions: boolean; - constructor() { + constructor(crossSourceCollisions: boolean) { + this.crossSourceCollisions = crossSourceCollisions; this.maxGroupID = 0; - this.collisionGroups = { - undefined: { - ID: 0, - predicate: null - } - }; + this.collisionGroups = {}; } - get(groupName?: string) { - if (groupName && this.maxGroupID === 0) { - // Keep the predicate null until the first collision - // group gets added to avoid overhead in the case - // everything's in the default group. - this.collisionGroups[undefined].predicate = - (key) => { - return key.collisionGroup === 0; + get(sourceID: string) { + // The predicate/groupID mechanism allows for arbitrary grouping, + // but the current interface defines one source == one group when + // crossSourceCollisions == true. + if (!this.crossSourceCollisions) { + if (!this.collisionGroups[sourceID]) { + const nextGroupID = ++this.maxGroupID; + this.collisionGroups[sourceID] = { + ID: nextGroupID, + predicate: (key) => { + return key.collisionGroupID === nextGroupID; + } }; + } + return this.collisionGroups[sourceID]; + } else { + return { ID: 0, predicate: null }; } - - if (!this.collisionGroups[groupName]) { - const nextGroupID = ++this.maxGroupID; - this.collisionGroups[groupName] = { - ID: nextGroupID, - predicate: (key) => { - return key.collisionGroup === nextGroupID; - } - }; - } - return this.collisionGroups[groupName]; } } @@ -132,7 +126,6 @@ export class Placement { fadeDuration: number; retainedQueryData: {[number]: RetainedQueryData}; collisionGroups: CollisionGroups; - crossSourceCollisions: boolean; constructor(transform: Transform, fadeDuration: number, crossSourceCollisions: boolean) { this.transform = transform.clone(); @@ -142,8 +135,7 @@ export class Placement { this.stale = false; this.fadeDuration = fadeDuration; this.retainedQueryData = {}; - this.collisionGroups = new CollisionGroups(); - this.crossSourceCollisions = crossSourceCollisions; + this.collisionGroups = new CollisionGroups(crossSourceCollisions); } placeLayerTile(styleLayer: StyleLayer, tile: Tile, showCollisionBoxes: boolean, seenCrossTileIDs: { [string | number]: boolean }) { @@ -197,9 +189,7 @@ export class Placement { const iconWithoutText = !bucket.hasTextData() || layout.get('text-optional'); const textWithoutIcon = !bucket.hasIconData() || layout.get('icon-optional'); - const collisionGroup = this.crossSourceCollisions ? - this.collisionGroups.get() : - this.collisionGroups.get(bucket.sourceID); + const collisionGroup = this.collisionGroups.get(bucket.sourceID); for (const symbolInstance of bucket.symbolInstances) { if (!seenCrossTileIDs[symbolInstance.crossTileID]) { diff --git a/test/integration/render-tests/icon-collision-group/default/expected.png b/test/integration/render-tests/icon-no-cross-source-collision/default/expected.png similarity index 100% rename from test/integration/render-tests/icon-collision-group/default/expected.png rename to test/integration/render-tests/icon-no-cross-source-collision/default/expected.png diff --git a/test/integration/render-tests/icon-collision-group/default/style.json b/test/integration/render-tests/icon-no-cross-source-collision/default/style.json similarity index 94% rename from test/integration/render-tests/icon-collision-group/default/style.json rename to test/integration/render-tests/icon-no-cross-source-collision/default/style.json index adf78059c81..b88ab61d71b 100644 --- a/test/integration/render-tests/icon-collision-group/default/style.json +++ b/test/integration/render-tests/icon-no-cross-source-collision/default/style.json @@ -72,7 +72,7 @@ "sprite": "local://sprites/sprite", "layers": [ { - "id": "defaultGroup1", + "id": "source1Group1", "type": "symbol", "source": "source1", "layout": { @@ -81,7 +81,7 @@ } }, { - "id": "defaultGroup2", + "id": "source1Group2", "type": "symbol", "source": "source1", "layout": { @@ -90,7 +90,7 @@ } }, { - "id": "firstGroup1", + "id": "source2Group1", "type": "symbol", "source": "source2", "layout": { @@ -103,7 +103,7 @@ } }, { - "id": "firstGroup2", + "id": "source2Group2", "type": "symbol", "source": "source2", "layout": { @@ -116,7 +116,7 @@ } }, { - "id": "secondGroup1", + "id": "source3Group1", "type": "symbol", "source": "source3", "layout": { @@ -129,7 +129,7 @@ } }, { - "id": "secondGroup2", + "id": "source3Group2", "type": "symbol", "source": "source3", "layout": { diff --git a/test/integration/render-tests/text-collision-group/default/expected.png b/test/integration/render-tests/text-collision-group/default/expected.png deleted file mode 100644 index a84431f4cd518464d084fe73f444f3912f1dc968..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6433 zcmdU!hf|Z;yT=J7kPrfd5CViCRXPMIK{_O%2?S&zDoP3}3Q8iVSw#f`A&o!;k#&)! z>9UGS5D*nHAq^V~R#aR9L1ceez=EKxUi{rM_b<3JcjldE-e=yKGtZoJ-t+l>pTi|4 z#TbFDz*<^bMscyYR4pyQ>Z?|<0dO@=_gwk$K|2l?nZ^XXwmN!WOAGnzNA^bgGqd(n zvy1wmZ;hS-uC&-C6_-*{+Gl7F=DFN4la(HSXa(K6LJJ>*Mr)?a9Sozm^8K zNW;1JkzdfGd8I?CBB#8_C|H-zFTZ?M9sKRp;hDImrW>#Rda&|WhKX+E|Bq+oX7$I3 z^TvyclR2=wJvVQw{Ib8<3#zT?s*gVTE^3Z#!o>@0yL>s_~fH7~?CNpRdo@ zLzM8l1n^Jag22^;q}TK!>zeAGBcRN(xG^*9l&aK1xlaA;G2wxwFsQ78iP+NZ>nirU zO%F#$8zss1^l7gfZM*8|+j~hXNYr4H&@?pc8UZ*}v|rDDQ*d2WP2CBy!#A6`6yao_ z$xRi$zWJ(S*AUlf)cR39FVOE~6fo#J%7V6LJ*D-{SLjsw*5)Y^m?r*6PVRiz zQP%)q>w@3eJ16B%NY;gVkN3g-UK8j(Xj~>MMjocRP6cg{x~*86`5>#*$vLb7hW&a< z=vj?xHj#5UrE&|=q03^gB7VGdwGx{~)xi_p{&tG>Rda8f+%m1N>j)A8#_@6bdVKsc5XR}gkM+BjZrhb9v@T&9)J@*|OgZ|(Td z)OtZdCz_8ja2T}+Y&EE8Ugz9O$PR4a9u(nVM;HO@CYy5%EB0j3-TPgk7>MD#1&Xg3 z)p75!cYU5w%pXNOs7CDKv*vB?Mr>IDYcP-mAMLg3pEgA33FS4h%ZHAZZRy-L?Y072 zJGr;0WOBCT#4JbDE;p>_l=NABcHrhRLI*1KabIXQO0sM3n19a_d;*v3A>BVj^*}VC zlGWNFoP~O}jA1@w&-$5E_Ht-yO@EoF??uLCc*f-Rhm%ohYg(^vizSEka%Eu$PltBB)veWhCY4z*{0J0Y zdYfc%YsrUs6dImD1AHrm?4Czkjl@mII$~^ct7VyYBcDC_;B*{WCW_@2%6EjY&`2*| zB>R7fplUE#Y6tPK(M|l<>ru%@HCCvadao;K<*P zEH<4LuCHy8XJoKY_uHcgcX*=co-uleK!wryOg$*}bJiS5v#V%!Q9dBCP+>9%oYJ{9 zgTIr=hcqhUQG%pX31pAd`U>3{ntM`As{8T#U7$YLF@@tpu75MEl3F=r=XxKX-BV=U zd2je{7L-(cNaWS0_d7K-z|M8Ttk0@-VNDX=tT7_E5NGLZ=hC${qV{K%Ya3~vIT zCURtS{eAXMW1Ik&(XR7!P%4SPzHo5!_t0~qh@Il)KEpQ*qubNxrTdnzaXM=9J-fza z7jxz5VynEUgWb_*ijFW)&oto}5a=}*isTsgz+CTbEw;uOo2A%gL4zDI@MsKDG3(J~ z9#lJ&A!s|j&eQ<|xWvoke!!R;5_u3d*He<^qx)4ux~qB~+hS@xuhW4`@^Gk&ew^{d zIEG>~(|U90Reia$SV0oJ5?2+m7P3g?cfetDh%-SaZHO1GEiH0_QT&wx|x7i~V`w0GS*ErgP|+TEs` zN{-O2!XC!AO$QqXYHY@fdp4(+#bC65av_)wurfMzL6E_kp=QVgPJDV}*)SCZi2!fJ z05uB`7Q*ollilp zsO2xsq1y&??I$8EIxL>D9Ty`&UuYqVc`0sgeZbR1K4JM8+0TvPjNp8d<{~S9 zYbCf>!>oDNQ`nHbweLR1@~4UHuM5be!KzVc2HDAdOGl61QfSo zerYnlU1GWv(FVApxzdM@(deYL>O&>F9jm*JT%PwLIIybdZ~{4CM>D`yOiWOT6Vw~}1))9$G9t^ZNVvbgbl*p%vm+kN@IHqDg-aH&de

169EBD(AZj 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�yA;)@=<>;hwUr{h%8WOaO#6TReubd(XMtVEWA(h@j1k-EIG1GW|t0JVN?GKJbWS zcY5k$V@0}Tn3YlIp{Yn8?Wgw*>QI$@lL>r`kqKwS zM$M=o0evKcCCjF{E%1#**m*`(Qe$-qrR9HbmiQf96lfgzYT)ur_1mKJNpY_y4DQ(ULD?I|F3Rp zCtw}Hp+;MFKQGSwnfiJg^kwh+l7-mZdvT~+@`2L?%ge@KluzPQiZVfR@22NCr*oV$4XbGLUd!``=; zwf#T&tDXfv5V`ab^0!9&0OXS-Ys3u%P|XySu$piRFa*`m?# zhT5N6P2C7^KL<64068#b`D)N_h4?opFKQEL+Vu&aWN|*Hm}{@MIYcJ87#Z0yc(PG+ zXzA*xZ*R86lWgb{CiKZVg2#+!nqN;I8F;B)#Y5C0vO|&?RUzp~f^)2Y12W0wlsdd% zguada*E=f$%EIyYn1&YA{oexO9s6ZgMILkC9Oo<$e;A9YGmz|FkxlzwyPO`3!&FTx;c2zEYAolzk@9TOI$Qr?TjjvY zTKfZX+9qC2+H|(%Xs<~|7 zeBMw=@94+y-8#=@&_)Hy2NHw+oa^K{br=#K92o2BG_=_$bi_t}7y;;3fAT&3g>)AQ z{$Ij~d;RUe$A7c$C7s_tk4g4!^lC_y`u2pa^Sd&3aF>eIBnt^*@Ymokcf{T*xvPi1sLhwh+Rcv)87=xdvQEUtwAnMq>|81pZ&Zo%*5A>5I^g2m?E`!)K(`i))%;x5h=d8%NrZ zYgl{|$e5&Gn~|1k+e&ZA>#vv|qA_hY7|Rk3Ey34CXJxqtcwk&=zgv>bSQ?em)^4Cn zC3R0tOOuS*7FoIojYpT%ew_BxL?g284!5BnYJDEsU+x(1k6oaqmDJug*5T}GT5Z-T z09bj^LUiujuxH4#^}{nY$sujF&&S-8D~m#!H-FwhFd=Izai5MfhXpa}{ExJn9wJ$7 z)Kg0wUyfP5Z%h6BT^nY{wJQ!D9TZKB@8rZd;HqI);?UK~2jUa-iuIGRIe^a|(^s#o zo~L9rm48|~>#`~;>5i(!FP&&#*PNpN>S1+?wz6~LfS0gg;zOr7ywYXW|73%yznGr= Wwbj13KPKm|-!=*4&BlGlto%O_#T~u? literal 0 HcmV?d00001 diff --git a/test/integration/render-tests/text-collision-group/default/style.json b/test/integration/render-tests/text-no-cross-source-collision/default/style.json similarity index 91% rename from test/integration/render-tests/text-collision-group/default/style.json rename to test/integration/render-tests/text-no-cross-source-collision/default/style.json index 8415c3258ac..2a3db9fd462 100644 --- a/test/integration/render-tests/text-collision-group/default/style.json +++ b/test/integration/render-tests/text-no-cross-source-collision/default/style.json @@ -120,11 +120,11 @@ "glyphs": "local://glyphs/{fontstack}/{range}.pbf", "layers": [ { - "id": "defaultGroup1", + "id": "source1Group1", "type": "symbol", "source": "source1", "layout": { - "text-field": "Default Group {name}", + "text-field": "Source1 Group {name}", "text-max-width": 30, "text-font": [ "Open Sans Semibold", @@ -133,11 +133,11 @@ } }, { - "id": "defaultGroup2", + "id": "source1Group2", "type": "symbol", "source": "source1", "layout": { - "text-field": "2nd Layer Default Group {name}", + "text-field": "2nd Layer Source1 Group {name}", "text-max-width": 30, "text-font": [ "Open Sans Semibold", @@ -146,11 +146,11 @@ } }, { - "id": "firstGroup1", + "id": "source2Group1", "type": "symbol", "source": "source2", "layout": { - "text-field": "First Group {name}", + "text-field": "Source2 Group {name}", "text-max-width": 30, "text-font": [ "Open Sans Semibold", @@ -163,11 +163,11 @@ } }, { - "id": "firstGroup2", + "id": "source2Group2", "type": "symbol", "source": "source2", "layout": { - "text-field": "2nd Layer First Group {name}", + "text-field": "2nd Layer Source2 Group {name}", "text-max-width": 30, "text-font": [ "Open Sans Semibold", @@ -180,11 +180,11 @@ } }, { - "id": "secondGroup1", + "id": "source3Group1", "type": "symbol", "source": "source3", "layout": { - "text-field": "Second Group {name}", + "text-field": "Source3 Group {name}", "text-max-width": 30, "text-font": [ "Open Sans Semibold", @@ -197,11 +197,11 @@ } }, { - "id": "secondGroup2", + "id": "ssource3Group2", "type": "symbol", "source": "source3", "layout": { - "text-field": "2nd Layer Second Group {name}", + "text-field": "2nd Layer Source3 Group {name}", "text-max-width": 30, "text-font": [ "Open Sans Semibold",