From 05f5d8ca74fbe769aa3f7d4b1d298877b5d0102c Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Fri, 3 Nov 2017 11:22:49 -0700 Subject: [PATCH] Clean up interpolate * Don't glom properties onto a function; flow doesn't handle this well. * Remove unused vec2 function. --- src/geo/transform.js | 2 +- src/style-spec/util/interpolate.js | 35 ++++++++++-------------- src/style/style_transition.js | 2 +- src/symbol/get_anchors.js | 2 +- src/ui/camera.js | 2 +- test/unit/style-spec/interpolate.test.js | 10 ------- 6 files changed, 19 insertions(+), 34 deletions(-) diff --git a/src/geo/transform.js b/src/geo/transform.js index 348020964e9..aa350b5e20a 100644 --- a/src/geo/transform.js +++ b/src/geo/transform.js @@ -4,7 +4,7 @@ const LngLat = require('./lng_lat'), Point = require('@mapbox/point-geometry'), Coordinate = require('./coordinate'), util = require('../util/util'), - interp = require('../style-spec/util/interpolate'), + interp = require('../style-spec/util/interpolate').number, TileCoord = require('../source/tile_coord'), EXTENT = require('../data/extent'), glmatrix = require('@mapbox/gl-matrix'); diff --git a/src/style-spec/util/interpolate.js b/src/style-spec/util/interpolate.js index 38172c28748..499a32ae238 100644 --- a/src/style-spec/util/interpolate.js +++ b/src/style-spec/util/interpolate.js @@ -2,32 +2,27 @@ const Color = require('./color'); -module.exports = interpolate; +module.exports = { + number, + color, + array +}; -function interpolate(a: number, b: number, t: number) { +function number(a: number, b: number, t: number) { return (a * (1 - t)) + (b * t); } -interpolate.number = interpolate; - -interpolate.vec2 = function(from: [number, number], to: [number, number], t: number) { - return [ - interpolate(from[0], to[0], t), - interpolate(from[1], to[1], t) - ]; -}; - -interpolate.color = function(from: Color, to: Color, t: number) { +function color(from: Color, to: Color, t: number) { return new Color( - interpolate(from.r, to.r, t), - interpolate(from.g, to.g, t), - interpolate(from.b, to.b, t), - interpolate(from.a, to.a, t) + number(from.r, to.r, t), + number(from.g, to.g, t), + number(from.b, to.b, t), + number(from.a, to.a, t) ); -}; +} -interpolate.array = function(from: Array, to: Array, t: number) { +function array(from: Array, to: Array, t: number) { return from.map((d, i) => { - return interpolate(d, to[i], t); + return number(d, to[i], t); }); -}; +} diff --git a/src/style/style_transition.js b/src/style/style_transition.js index bc19c36e662..9e9969ea86f 100644 --- a/src/style/style_transition.js +++ b/src/style/style_transition.js @@ -87,7 +87,7 @@ class StyleTransition { const timeFraction = Math.min((Date.now() - this.zoomHistory.lastIntegerZoomTime) / this.duration, 1); const zoomFraction = Math.abs(z - lastIntegerZoom); - const t = interpolate(timeFraction, 1, zoomFraction); + const t = interpolate.number(timeFraction, 1, zoomFraction); if (from === undefined || to === undefined) return undefined; diff --git a/src/symbol/get_anchors.js b/src/symbol/get_anchors.js index 66eb0321428..8a9832d987c 100644 --- a/src/symbol/get_anchors.js +++ b/src/symbol/get_anchors.js @@ -1,6 +1,6 @@ // @flow -const interpolate = require('../style-spec/util/interpolate'); +const interpolate = require('../style-spec/util/interpolate').number; const Anchor = require('../symbol/anchor'); const checkMaxAngle = require('./check_max_angle'); diff --git a/src/ui/camera.js b/src/ui/camera.js index 456dc8e6853..8af28df18a4 100644 --- a/src/ui/camera.js +++ b/src/ui/camera.js @@ -1,7 +1,7 @@ // @flow const util = require('../util/util'); -const interpolate = require('../style-spec/util/interpolate'); +const interpolate = require('../style-spec/util/interpolate').number; const browser = require('../util/browser'); const LngLat = require('../geo/lng_lat'); const LngLatBounds = require('../geo/lng_lat_bounds'); diff --git a/test/unit/style-spec/interpolate.test.js b/test/unit/style-spec/interpolate.test.js index 28d7b4d40f5..a56bff53c6c 100644 --- a/test/unit/style-spec/interpolate.test.js +++ b/test/unit/style-spec/interpolate.test.js @@ -4,21 +4,11 @@ const test = require('mapbox-gl-js-test').test; const interpolate = require('../../../src/style-spec/util/interpolate'); const Color = require('../../../src/style-spec/util/color'); -test('interpolate.number', (t) => { - t.equal(interpolate(0, 1, 0.5), 0.5); - t.end(); -}); - test('interpolate.number', (t) => { t.equal(interpolate.number(0, 1, 0.5), 0.5); t.end(); }); -test('interpolate.vec2', (t) => { - t.deepEqual(interpolate.vec2([0, 0], [1, 2], 0.5), [0.5, 1]); - t.end(); -}); - test('interpolate.color', (t) => { t.deepEqual(interpolate.color(new Color(0, 0, 0, 0), new Color(1, 2, 3, 4), 0.5), new Color(0.5, 1, 3 / 2, 2)); t.end();