UNPKG

colorjs.io

Version:

Let’s get serious about color

77 lines (66 loc) 1.21 kB
import * as util from "./util.js"; /** * Constrain an angle to 360 degrees * @param {number} angle * @returns {number} */ export function constrain (angle) { if (typeof angle !== "number") { return angle; } return ((angle % 360) + 360) % 360; } /** * @param {"raw" | "increasing" | "decreasing" | "longer" | "shorter"} arc * @param {[number, number]} angles * @returns {[number, number]} */ export function adjust (arc, angles) { let [a1, a2] = angles; let none1 = util.isNone(a1); let none2 = util.isNone(a2); if (none1 && none2) { return [a1, a2]; } else if (none1) { a1 = a2; } else if (none2) { a2 = a1; } if (arc === "raw") { return angles; } a1 = constrain(a1); a2 = constrain(a2); let angleDiff = a2 - a1; if (arc === "increasing") { if (angleDiff < 0) { a2 += 360; } } else if (arc === "decreasing") { if (angleDiff > 0) { a1 += 360; } } else if (arc === "longer") { if (-180 < angleDiff && angleDiff < 180) { if (angleDiff > 0) { a1 += 360; } else { a2 += 360; } } } else if (arc === "shorter") { if (angleDiff > 180) { a1 += 360; } else if (angleDiff < -180) { a2 += 360; } } return [a1, a2]; }