From 1744376626e5ac3ee943520ba6e6863b479bc6bf Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Tue, 5 Dec 2017 09:34:08 -0800 Subject: [PATCH] Interpolate HCL with shortest path --- src/style-spec/util/color_spaces.js | 23 +++++++++++------- .../colorSpace-hcl/expected.png | Bin 192 -> 192 bytes 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/style-spec/util/color_spaces.js b/src/style-spec/util/color_spaces.js index 9bab1886e40..3578d6fb151 100644 --- a/src/style-spec/util/color_spaces.js +++ b/src/style-spec/util/color_spaces.js @@ -1,7 +1,7 @@ // @flow const Color = require('./color'); -const interpolate = require('./interpolate'); +const interpolateNumber = require('./interpolate').number; type LABColor = { l: number, @@ -80,10 +80,10 @@ function labToRgb(labColor: LABColor): Color { function interpolateLab(from: LABColor, to: LABColor, t: number) { return { - l: interpolate.number(from.l, to.l, t), - a: interpolate.number(from.a, to.a, t), - b: interpolate.number(from.b, to.b, t), - alpha: interpolate.number(from.alpha, to.alpha, t) + l: interpolateNumber(from.l, to.l, t), + a: interpolateNumber(from.a, to.a, t), + b: interpolateNumber(from.b, to.b, t), + alpha: interpolateNumber(from.alpha, to.alpha, t) }; } @@ -111,12 +111,17 @@ function hclToRgb(hclColor: HCLColor): Color { }); } +function interpolateHue(a: number, b: number, t: number) { + const d = b - a; + return a + t * (d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d); +} + function interpolateHcl(from: HCLColor, to: HCLColor, t: number) { return { - h: interpolate.number(from.h, to.h, t), - c: interpolate.number(from.c, to.c, t), - l: interpolate.number(from.l, to.l, t), - alpha: interpolate.number(from.alpha, to.alpha, t) + h: interpolateHue(from.h, to.h, t), + c: interpolateNumber(from.c, to.c, t), + l: interpolateNumber(from.l, to.l, t), + alpha: interpolateNumber(from.alpha, to.alpha, t) }; } diff --git a/test/integration/render-tests/background-color/colorSpace-hcl/expected.png b/test/integration/render-tests/background-color/colorSpace-hcl/expected.png index dbbd760d819402b1681e540ab0d4795505b5828b..3ef07516e2a03b88ad013a964dd1929160bf90f7 100644 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Or9=|Ar*{or0OmKd6gjE(}RqR x3