Skip to content

Commit

Permalink
Merge 32ba39c into 92f35d6
Browse files Browse the repository at this point in the history
  • Loading branch information
Pessimistress committed Mar 12, 2019
2 parents 92f35d6 + 32ba39c commit 4901198
Show file tree
Hide file tree
Showing 12 changed files with 86 additions and 54 deletions.
3 changes: 1 addition & 2 deletions modules/aggregation-layers/src/grid-layer/grid-aggregator.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,7 @@ function _pointsToGridHashing(points = [], cellSize, getPosition) {
// calculate count per cell
const gridHash = {};
for (const pt of points) {
const lat = getPosition(pt)[1];
const lng = getPosition(pt)[0];
const [lng, lat] = getPosition(pt);

if (Number.isFinite(lat) && Number.isFinite(lng)) {
const latIdx = Math.floor((lat + 90) / gridOffset.yOffset);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
// THE SOFTWARE.

import {hexbin} from 'd3-hexbin';
import {createIterable} from '@deck.gl/core';

/**
* Use d3-hexbin to performs hexagonal binning from geo points to hexagons
Expand All @@ -35,13 +36,15 @@ export function pointToHexbin({data, radius, getPosition}, viewport) {

// add world space coordinates to points
const screenPoints = [];
for (const pt of data) {
const {iterable, objectInfo} = createIterable(data);
for (const object of iterable) {
objectInfo.index++;
screenPoints.push(
Object.assign(
{
screenCoord: viewport.projectFlat(getPosition(pt))
screenCoord: viewport.projectFlat(getPosition(object, objectInfo))
},
pt
object
)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

import {Layer, WebMercatorViewport, log} from '@deck.gl/core';
import {Layer, WebMercatorViewport, createIterable, log} from '@deck.gl/core';
import {defaultColorRange} from '../utils/color-utils';
import GPUGridAggregator from '../utils/gpu-grid-aggregation/gpu-grid-aggregator';
import {AGGREGATION_OPERATION} from '../utils/gpu-grid-aggregation/gpu-grid-aggregator-constants';
Expand Down Expand Up @@ -261,11 +261,14 @@ export default class ScreenGridLayer extends Layer {
const colorWeights = [];
const {weights} = this.state;

for (const point of data) {
const position = getPosition(point);
// TODO - using array.push is expensive
const {iterable, objectInfo} = createIterable(data);
for (const object of iterable) {
objectInfo.index++;
const position = getPosition(object, objectInfo);
positions.push(position[0]);
positions.push(position[1]);
colorWeights.push(...this._getWeight(point));
colorWeights.push(...this._getWeight(object, objectInfo));
}
weights.color.values = colorWeights;
this.setState({positions});
Expand Down
18 changes: 11 additions & 7 deletions modules/layers/src/arc-layer/arc-layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

import {Layer} from '@deck.gl/core';
import {Layer, createIterable} from '@deck.gl/core';

import GL from '@luma.gl/constants';
import {Model, Geometry, fp64} from 'luma.gl';
Expand Down Expand Up @@ -165,9 +165,11 @@ export default class ArcLayer extends Layer {
const {data, getSourcePosition, getTargetPosition} = this.props;
const {value, size} = attribute;
let i = 0;
for (const object of data) {
const sourcePosition = getSourcePosition(object);
const targetPosition = getTargetPosition(object);
const {iterable, objectInfo} = createIterable(data);
for (const object of iterable) {
objectInfo.index++;
const sourcePosition = getSourcePosition(object, objectInfo);
const targetPosition = getTargetPosition(object, objectInfo);
value[i + 0] = sourcePosition[0];
value[i + 1] = sourcePosition[1];
value[i + 2] = targetPosition[0];
Expand All @@ -188,9 +190,11 @@ export default class ArcLayer extends Layer {
const {data, getSourcePosition, getTargetPosition} = this.props;
const {value, size} = attribute;
let i = 0;
for (const object of data) {
const sourcePosition = getSourcePosition(object);
const targetPosition = getTargetPosition(object);
const {iterable, objectInfo} = createIterable(data);
for (const object of iterable) {
objectInfo.index++;
const sourcePosition = getSourcePosition(object, objectInfo);
const targetPosition = getTargetPosition(object, objectInfo);
value[i + 0] = fp64LowPart(sourcePosition[0]);
value[i + 1] = fp64LowPart(sourcePosition[1]);
value[i + 2] = fp64LowPart(targetPosition[0]);
Expand Down
8 changes: 5 additions & 3 deletions modules/layers/src/grid-cell-layer/grid-cell-layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

import {Layer} from '@deck.gl/core';
import {Layer, createIterable} from '@deck.gl/core';
import GL from '@luma.gl/constants';
import {Model, CubeGeometry, fp64, PhongMaterial} from '@luma.gl/core';
const {fp64LowPart} = fp64;
Expand Down Expand Up @@ -139,8 +139,10 @@ export default class GridCellLayer extends Layer {
const {data, getPosition} = this.props;
const {value} = attribute;
let i = 0;
for (const point of data) {
const position = getPosition(point);
const {iterable, objectInfo} = createIterable(data);
for (const object of iterable) {
objectInfo.index++;
const position = getPosition(object, objectInfo);
value[i++] = fp64LowPart(position[0]);
value[i++] = fp64LowPart(position[1]);
}
Expand Down
8 changes: 5 additions & 3 deletions modules/layers/src/hexagon-cell-layer/hexagon-cell-layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

import {Layer, log} from '@deck.gl/core';
import {Layer, log, createIterable} from '@deck.gl/core';
import GL from '@luma.gl/constants';
import {Model, CylinderGeometry, fp64, PhongMaterial} from '@luma.gl/core';
const {fp64LowPart} = fp64;
Expand Down Expand Up @@ -191,8 +191,10 @@ export default class HexagonCellLayer extends Layer {
const {data, getCentroid} = this.props;
const {value} = attribute;
let i = 0;
for (const object of data) {
const position = getCentroid(object);
const {iterable, objectInfo} = createIterable(data);
for (const object of iterable) {
objectInfo.index++;
const position = getCentroid(object, objectInfo);
value[i++] = fp64LowPart(position[0]);
value[i++] = fp64LowPart(position[1]);
}
Expand Down
26 changes: 17 additions & 9 deletions modules/layers/src/icon-layer/icon-layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
import {Layer} from '@deck.gl/core';
import {Layer, createIterable} from '@deck.gl/core';
import GL from '@luma.gl/constants';
import {Model, Geometry, fp64} from 'luma.gl';

Expand Down Expand Up @@ -221,8 +221,10 @@ export default class IconLayer extends Layer {
const {data, getPosition} = this.props;
const {value} = attribute;
let i = 0;
for (const point of data) {
const position = getPosition(point);
const {iterable, objectInfo} = createIterable(data);
for (const object of iterable) {
objectInfo.index++;
const position = getPosition(object, objectInfo);
value[i++] = fp64LowPart(position[0]);
value[i++] = fp64LowPart(position[1]);
}
Expand All @@ -233,8 +235,10 @@ export default class IconLayer extends Layer {
const {iconManager} = this.state;
const {value} = attribute;
let i = 0;
for (const object of data) {
const rect = iconManager.getIconMapping(object);
const {iterable, objectInfo} = createIterable(data);
for (const object of iterable) {
objectInfo.index++;
const rect = iconManager.getIconMapping(object, objectInfo);
value[i++] = rect.width / 2 - rect.anchorX || 0;
value[i++] = rect.height / 2 - rect.anchorY || 0;
}
Expand All @@ -245,8 +249,10 @@ export default class IconLayer extends Layer {
const {iconManager} = this.state;
const {value} = attribute;
let i = 0;
for (const object of data) {
const mapping = iconManager.getIconMapping(object);
const {iterable, objectInfo} = createIterable(data);
for (const object of iterable) {
objectInfo.index++;
const mapping = iconManager.getIconMapping(object, objectInfo);
const colorMode = mapping.mask;
value[i++] = colorMode ? 1 : 0;
}
Expand All @@ -257,8 +263,10 @@ export default class IconLayer extends Layer {
const {iconManager} = this.state;
const {value} = attribute;
let i = 0;
for (const object of data) {
const rect = iconManager.getIconMapping(object);
const {iterable, objectInfo} = createIterable(data);
for (const object of iterable) {
objectInfo.index++;
const rect = iconManager.getIconMapping(object, objectInfo);
value[i++] = rect.x || 0;
value[i++] = rect.y || 0;
value[i++] = rect.width || 0;
Expand Down
12 changes: 7 additions & 5 deletions modules/layers/src/icon-layer/icon-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import GL from '@luma.gl/constants';
import {Texture2D, readPixelsToBuffer} from 'luma.gl';
import {loadImage} from '@loaders.gl/core';
import {createIterable} from '@deck.gl/core';

const DEFAULT_CANVAS_WIDTH = 1024;
const DEFAULT_BUFFER = 4;
Expand Down Expand Up @@ -148,8 +149,10 @@ export function getDiffIcons(data, getIcon, cachedIcons) {

cachedIcons = cachedIcons || {};
const icons = {};
for (const point of data) {
const icon = getIcon(point);
const {iterable, objectInfo} = createIterable(data);
for (const object of iterable) {
objectInfo.index++;
const icon = getIcon(object, objectInfo);
const id = getIconId(icon);

if (!icon) {
Expand All @@ -164,7 +167,6 @@ export function getDiffIcons(data, getIcon, cachedIcons) {
icons[id] = icon;
}
}

return icons;
}

Expand Down Expand Up @@ -200,8 +202,8 @@ export default class IconManager {
return this._texture;
}

getIconMapping(dataPoint) {
const icon = this._getIcon(dataPoint);
getIconMapping(object, objectInfo) {
const icon = this._getIcon(object, objectInfo);
const id = this._autoPacking ? getIconId(icon) : icon;
return this._mapping[id] || {};
}
Expand Down
10 changes: 6 additions & 4 deletions modules/layers/src/line-layer/line-layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

import {Layer} from '@deck.gl/core';
import {Layer, createIterable} from '@deck.gl/core';
import GL from '@luma.gl/constants';
import {Model, Geometry, fp64} from 'luma.gl';
const {fp64LowPart} = fp64;
Expand Down Expand Up @@ -134,9 +134,11 @@ export default class LineLayer extends Layer {
const {data, getSourcePosition, getTargetPosition} = this.props;
const {value, size} = attribute;
let i = 0;
for (const object of data) {
const sourcePosition = getSourcePosition(object);
const targetPosition = getTargetPosition(object);
const {iterable, objectInfo} = createIterable(data);
for (const object of iterable) {
objectInfo.index++;
const sourcePosition = getSourcePosition(object, objectInfo);
const targetPosition = getTargetPosition(object, objectInfo);
value[i + 0] = fp64LowPart(sourcePosition[0]);
value[i + 1] = fp64LowPart(sourcePosition[1]);
value[i + 2] = fp64LowPart(targetPosition[0]);
Expand Down
8 changes: 5 additions & 3 deletions modules/layers/src/point-cloud-layer/point-cloud-layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

import {Layer} from '@deck.gl/core';
import {Layer, createIterable} from '@deck.gl/core';
import GL from '@luma.gl/constants';
import {Model, Geometry, fp64, PhongMaterial} from '@luma.gl/core';
const {fp64LowPart} = fp64;
Expand Down Expand Up @@ -133,8 +133,10 @@ export default class PointCloudLayer extends Layer {
const {data, getPosition} = this.props;
const {value} = attribute;
let i = 0;
for (const point of data) {
const position = getPosition(point);
const {iterable, objectInfo} = createIterable(data);
for (const object of iterable) {
objectInfo.index++;
const position = getPosition(object, objectInfo);
value[i++] = fp64LowPart(position[0]);
value[i++] = fp64LowPart(position[1]);
}
Expand Down
11 changes: 8 additions & 3 deletions modules/layers/src/polygon-layer/polygon-layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
// THE SOFTWARE.

import {PhongMaterial} from '@luma.gl/core';
import {CompositeLayer} from '@deck.gl/core';
import {CompositeLayer, createIterable} from '@deck.gl/core';
import SolidPolygonLayer from '../solid-polygon-layer/solid-polygon-layer';
import PathLayer from '../path-layer/path-layer';
import * as Polygon from '../solid-polygon-layer/polygon';
Expand Down Expand Up @@ -87,8 +87,13 @@ export default class PolygonLayer extends CompositeLayer {
const paths = [];
const positionSize = positionFormat === 'XY' ? 2 : 3;

for (const object of data) {
const {positions, holeIndices} = Polygon.normalize(getPolygon(object), positionSize);
const {iterable, objectInfo} = createIterable(data);
for (const object of iterable) {
objectInfo.index++;
const {positions, holeIndices} = Polygon.normalize(
getPolygon(object, objectInfo),
positionSize
);

if (holeIndices) {
// split the positions array into `holeIndices.length + 1` rings
Expand Down
16 changes: 8 additions & 8 deletions modules/layers/src/text-layer/text-layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

import {CompositeLayer, log} from '@deck.gl/core';
import {CompositeLayer, log, createIterable} from '@deck.gl/core';
import MultiIconLayer from './multi-icon-layer/multi-icon-layer';
import FontAtlasManager, {
DEFAULT_CHAR_SET,
Expand Down Expand Up @@ -155,9 +155,11 @@ export default class TextLayer extends CompositeLayer {
const {iconMapping} = this.state;

const transformedData = [];
let objectIndex = 0;
for (const val of data) {
const text = getText(val);

const {iterable, objectInfo} = createIterable(data);
for (const object of iterable) {
objectInfo.index++;
const text = getText(object, objectInfo);
if (text) {
const letters = Array.from(text);
const offsets = [0];
Expand All @@ -170,8 +172,8 @@ export default class TextLayer extends CompositeLayer {
offsets,
len: text.length,
// reference of original object and object index
object: val,
objectIndex
object,
objectIndex: objectInfo.index
};

const frame = iconMapping[letter];
Expand All @@ -185,8 +187,6 @@ export default class TextLayer extends CompositeLayer {
transformedData.push(datum);
});
}

objectIndex++;
}

this.setState({data: transformedData});
Expand Down

0 comments on commit 4901198

Please sign in to comment.