From f6a45948b1acc0d0796c16225e1a8697ef1d1749 Mon Sep 17 00:00:00 2001 From: Jo IE Date: Fri, 13 Dec 2019 14:47:38 +0100 Subject: [PATCH 1/4] Edit convert functions to output linear interpolation --- src/style-spec/function/convert.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/style-spec/function/convert.js b/src/style-spec/function/convert.js index e248b9f0e5a..45ce94246a1 100644 --- a/src/style-spec/function/convert.js +++ b/src/style-spec/function/convert.js @@ -153,7 +153,18 @@ function convertPropertyFunction(parameters, propertySpec, stops) { ]; } else if (type === 'exponential') { const base = parameters.base !== undefined ? parameters.base : 1; - const expression = [getInterpolateOperator(parameters), ['exponential', base], ['number', get]]; + const expression = + base === 1 ? + [ + getInterpolateOperator(parameters), + ["linear"], + ["number", get] + ] : + [ + getInterpolateOperator(parameters), + ["exponential", base], + ["number", get] + ]; for (const stop of stops) { appendStopPair(expression, stop[0], stop[1], false); } @@ -177,7 +188,14 @@ function convertZoomFunction(parameters, propertySpec, stops, input = ['zoom']) isStep = true; } else if (type === 'exponential') { const base = parameters.base !== undefined ? parameters.base : 1; - expression = [getInterpolateOperator(parameters), ['exponential', base], input]; + expression = + base === 1 ? + [getInterpolateOperator(parameters), ["linear"], input] : + [ + getInterpolateOperator(parameters), + ["exponential", base], + input + ]; } else { throw new Error(`Unknown zoom function type "${type}"`); } From 7e382373e67aefac5cdbf668a1b3dabfb3b537e0 Mon Sep 17 00:00:00 2001 From: Jo IE Date: Sun, 15 Dec 2019 14:27:08 +0100 Subject: [PATCH 2/4] Edit unit tests to reflect linear interpolation --- test/unit/style-spec/migrate.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/unit/style-spec/migrate.test.js b/test/unit/style-spec/migrate.test.js index 441e9037673..f6581dc4a18 100644 --- a/test/unit/style-spec/migrate.test.js +++ b/test/unit/style-spec/migrate.test.js @@ -69,7 +69,7 @@ test('converts stop functions to expressions', (t) => { }, spec.latest.$version); t.deepEqual(migrated.layers[0].paint['background-opacity'], [ 'interpolate', - ['exponential', 1], + ['linear'], ['zoom'], 0, 1, @@ -78,7 +78,7 @@ test('converts stop functions to expressions', (t) => { ]); t.deepEqual(migrated.layers[1].paint['background-opacity'], [ 'interpolate', - ['exponential', 1], + ['linear'], ['zoom'], 0, ['literal', [1, 2]], From ba5d553fd55386d3ea6ab1d1bd7623d2be40ae5c Mon Sep 17 00:00:00 2001 From: Jo IE Date: Mon, 16 Dec 2019 09:09:17 +0100 Subject: [PATCH 3/4] Refactor code to make it succint --- src/style-spec/function/convert.js | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/style-spec/function/convert.js b/src/style-spec/function/convert.js index 45ce94246a1..57f14cd0128 100644 --- a/src/style-spec/function/convert.js +++ b/src/style-spec/function/convert.js @@ -154,17 +154,13 @@ function convertPropertyFunction(parameters, propertySpec, stops) { } else if (type === 'exponential') { const base = parameters.base !== undefined ? parameters.base : 1; const expression = - base === 1 ? - [ - getInterpolateOperator(parameters), - ["linear"], - ["number", get] - ] : + [ getInterpolateOperator(parameters), - ["exponential", base], + base === 1 ? ["linear"] : ["exponential", base], ["number", get] ]; + for (const stop of stops) { appendStopPair(expression, stop[0], stop[1], false); } @@ -189,13 +185,9 @@ function convertZoomFunction(parameters, propertySpec, stops, input = ['zoom']) } else if (type === 'exponential') { const base = parameters.base !== undefined ? parameters.base : 1; expression = - base === 1 ? - [getInterpolateOperator(parameters), ["linear"], input] : - [ - getInterpolateOperator(parameters), - ["exponential", base], - input - ]; + + [getInterpolateOperator(parameters), base === 1 ? ["linear"] : ["exponential", base], input]; + } else { throw new Error(`Unknown zoom function type "${type}"`); } From 72fa51b370c248bebf9f444487c8b7a29a5b349e Mon Sep 17 00:00:00 2001 From: Vladimir Agafonkin Date: Mon, 16 Dec 2019 10:40:07 +0200 Subject: [PATCH 4/4] minor whitespace updates --- src/style-spec/function/convert.js | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/style-spec/function/convert.js b/src/style-spec/function/convert.js index 57f14cd0128..a177604b953 100644 --- a/src/style-spec/function/convert.js +++ b/src/style-spec/function/convert.js @@ -153,13 +153,11 @@ function convertPropertyFunction(parameters, propertySpec, stops) { ]; } else if (type === 'exponential') { const base = parameters.base !== undefined ? parameters.base : 1; - const expression = - - [ - getInterpolateOperator(parameters), - base === 1 ? ["linear"] : ["exponential", base], - ["number", get] - ]; + const expression = [ + getInterpolateOperator(parameters), + base === 1 ? ["linear"] : ["exponential", base], + ["number", get] + ]; for (const stop of stops) { appendStopPair(expression, stop[0], stop[1], false); @@ -184,9 +182,7 @@ function convertZoomFunction(parameters, propertySpec, stops, input = ['zoom']) isStep = true; } else if (type === 'exponential') { const base = parameters.base !== undefined ? parameters.base : 1; - expression = - - [getInterpolateOperator(parameters), base === 1 ? ["linear"] : ["exponential", base], input]; + expression = [getInterpolateOperator(parameters), base === 1 ? ["linear"] : ["exponential", base], input]; } else { throw new Error(`Unknown zoom function type "${type}"`);