From 4f1def8d33b901d817e528412cff9ce175d12dac Mon Sep 17 00:00:00 2001 From: "Laetitia (O-01-67)" <68935009+O-01-67@users.noreply.github.com> Date: Mon, 14 Nov 2022 11:21:15 -0500 Subject: [PATCH] hsl code for those tools --- mods/code_library.js | 66 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 6 deletions(-) diff --git a/mods/code_library.js b/mods/code_library.js index 8325c762..3799eb1e 100644 --- a/mods/code_library.js +++ b/mods/code_library.js @@ -864,15 +864,22 @@ color.s -= saturationChange; break; case "*": + case "x": + case "×": case "multiply": color.s *= saturationChange; break; case "/": + case "÷": case "divide": color.s /= saturationChange; break; + case "=": + case "set": + color.s = saturationChange; + break; default: - throw new Error("operationType must be \"add\", \"subtract\", \"multiply\", or \"divide\""); + throw new Error("operationType must be \"add\", \"subtract\", \"multiply\", \"divide\", or \"set\""); }; color.h = Math.round(color.h % 360); @@ -890,22 +897,69 @@ switch(operationType.toLowerCase()) { case "+": case "add": - color.s += luminanceChange; + color.l += luminanceChange; break; case "-": case "subtract": - color.s -= luminanceChange; + color.l -= luminanceChange; break; case "*": + case "x": + case "×": case "multiply": - color.s *= luminanceChange; + color.l *= luminanceChange; break; case "/": + case "÷": case "divide": - color.s /= luminanceChange; + color.l /= luminanceChange; + break; + case "=": + case "set": + color.l = luminanceChange; break; default: - throw new Error("operationType must be \"add\", \"subtract\", \"multiply\", or \"divide\""); + throw new Error("operationType must be \"add\", \"subtract\", \"multiply\", \"divide\", or \"set\""); + }; + + color.h = Math.round(color.h % 360); + color.s = Math.round(bound(color.s,0,100)); + color.l = Math.round(bound(color.l,0,100)); + + return convertHslObjects(color,outputType); + }; + + function changeHue(color,hueChange,operationType="add",outputType="rgb",arrayType=null) { + color = normalizeColorToHslObject(color,arrayType); + //only {h,s,l} should exist now + + //Math + switch(operationType.toLowerCase()) { + case "+": + case "add": + color.h += hueChange; + break; + case "-": + case "subtract": + color.h -= hueChange; + break; + case "*": + case "x": + case "×": + case "multiply": + color.h *= hueChange; + break; + case "/": + case "÷": + case "divide": + color.h /= hueChange; + break; + case "=": + case "set": + color.h = hueChange; + break; + default: + throw new Error("operationType must be \"add\", \"subtract\", \"multiply\", \"divide\", or \"set\""); }; color.h = Math.round(color.h % 360);