Skip to content

Commit 1196beb

Browse files
jfirebaughLucas Wojciechowski
authored and
Lucas Wojciechowski
committed
Remove this.features dependency from buckets
1 parent 6e3eb10 commit 1196beb

File tree

5 files changed

+19
-24
lines changed

5 files changed

+19
-24
lines changed

js/data/bucket.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,9 @@ function Bucket(options) {
8080
* Build the buffers! Features are set directly to the `features` property.
8181
* @private
8282
*/
83-
Bucket.prototype.addFeatures = function() {
84-
for (var i = 0; i < this.features.length; i++) {
85-
this.addFeature(this.features[i]);
83+
Bucket.prototype.addFeatures = function(features) {
84+
for (var i = 0; i < features.length; i++) {
85+
this.addFeature(features[i]);
8686
}
8787
};
8888

js/data/symbol_bucket.js

+6-7
Original file line numberDiff line numberDiff line change
@@ -111,15 +111,14 @@ SymbolBucket.prototype.shaders = {
111111
}
112112
};
113113

114-
SymbolBucket.prototype.addFeatures = function(collisionTile, stacks, icons) {
114+
SymbolBucket.prototype.addFeatures = function(features, collisionTile, stacks, icons) {
115115
var tileSize = 512 * this.overscaling;
116116
var tileExtent = 4096;
117117
this.tilePixelRatio = tileExtent / tileSize;
118118
this.compareText = {};
119119
this.symbolInstances = [];
120120

121121
var layout = this.layoutProperties;
122-
var features = this.features;
123122
var textFeatures = this.textFeatures;
124123

125124
var horizontalAlign = 0.5,
@@ -441,22 +440,22 @@ SymbolBucket.prototype.addSymbols = function(shaderName, quads, scale, keepUprig
441440

442441
};
443442

444-
SymbolBucket.prototype.updateIcons = function(icons) {
443+
SymbolBucket.prototype.updateIcons = function(features, icons) {
445444
var iconValue = this.layoutProperties['icon-image'];
446445
if (!iconValue) return;
447446

448-
for (var i = 0; i < this.features.length; i++) {
449-
var iconName = resolveTokens(this.features[i].properties, iconValue);
447+
for (var i = 0; i < features.length; i++) {
448+
var iconName = resolveTokens(features[i].properties, iconValue);
450449
if (iconName)
451450
icons[iconName] = true;
452451
}
453452
};
454453

455-
SymbolBucket.prototype.updateFont = function(stacks) {
454+
SymbolBucket.prototype.updateFont = function(features, stacks) {
456455
var fontName = this.layoutProperties['text-font'],
457456
stack = stacks[fontName] = stacks[fontName] || {};
458457

459-
this.textFeatures = resolveText(this.features, this.layoutProperties, stack);
458+
this.textFeatures = resolveText(features, this.layoutProperties, stack);
460459
};
461460

462461
SymbolBucket.prototype.addToDebugBuffers = function(collisionTile) {

js/source/worker_tile.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,9 @@ WorkerTile.prototype.parse = function(data, layers, actor, callback) {
117117

118118
// Get dependencies for symbol buckets
119119
for (i = symbolBuckets.length - 1; i >= 0; i--) {
120-
symbolBuckets[i].updateIcons(icons);
121-
symbolBuckets[i].updateFont(stacks);
120+
bucket = symbolBuckets[i];
121+
bucket.updateIcons(bucket.features, icons);
122+
bucket.updateFont(bucket.features, stacks);
122123
}
123124

124125
for (var fontName in stacks) {
@@ -165,7 +166,7 @@ WorkerTile.prototype.parse = function(data, layers, actor, callback) {
165166

166167
function parseBucket(tile, bucket) {
167168
var now = Date.now();
168-
bucket.addFeatures(collisionTile, stacks, icons);
169+
bucket.addFeatures(bucket.features, collisionTile, stacks, icons);
169170
var time = Date.now() - now;
170171

171172
if (bucket.interactive) {

test/js/data/bucket.test.js

+4-8
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ test('Bucket', function(t) {
6565
t.test('add features', function(t) {
6666
var builder = create();
6767

68-
builder.features = [createFeature(17, 42)];
69-
builder.addFeatures();
68+
builder.addFeatures([createFeature(17, 42)]);
7069

7170
var testVertex = builder.buffers.testVertex;
7271
t.equal(testVertex.type, Buffer.BufferType.VERTEX);
@@ -89,8 +88,7 @@ test('Bucket', function(t) {
8988
t.test('reset buffers', function(t) {
9089
var builder = create();
9190

92-
builder.features = [createFeature(17, 42)];
93-
builder.addFeatures();
91+
builder.addFeatures([createFeature(17, 42)]);
9492

9593
var buffers = {};
9694
builder.resetBuffers(buffers);
@@ -106,11 +104,9 @@ test('Bucket', function(t) {
106104
t.test('add features after resetting buffers', function(t) {
107105
var builder = create();
108106

109-
builder.features = [createFeature(1, 5)];
110-
builder.addFeatures();
107+
builder.addFeatures([createFeature(1, 5)]);
111108
builder.resetBuffers({});
112-
builder.features = [createFeature(17, 42)];
113-
builder.addFeatures();
109+
builder.addFeatures([createFeature(17, 42)]);
114110

115111
var testVertex = builder.buffers.testVertex;
116112
t.equal(testVertex.length, 1);

test/js/data/symbol_bucket.test.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ test('SymbolBucket', function(t) {
3434
layer: { id: 'test', type: 'symbol', layout: {'text-font': ['Test'] }}
3535
});
3636
bucket.textFeatures = ['abcde'];
37-
bucket.features = [feature];
3837
t.ok(bucket, 'bucketSetup');
3938
return bucket;
4039
}
@@ -44,13 +43,13 @@ test('SymbolBucket', function(t) {
4443

4544
// add feature from bucket A
4645
var a = JSON.stringify(collision);
47-
t.equal(bucketA.addFeatures(collision, stacks), undefined);
46+
t.equal(bucketA.addFeatures([feature], collision, stacks), undefined);
4847
var b = JSON.stringify(collision);
4948
t.notEqual(a, b, 'places feature');
5049

5150
// add same feature from bucket B
5251
a = JSON.stringify(collision);
53-
t.equal(bucketB.addFeatures(collision, stacks), undefined);
52+
t.equal(bucketB.addFeatures([feature], collision, stacks), undefined);
5453
b = JSON.stringify(collision);
5554
t.equal(a, b, 'detects collision and does not place feature');
5655

0 commit comments

Comments
 (0)