summaryrefslogtreecommitdiff
path: root/tools/gencolors.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gencolors.js')
-rw-r--r--tools/gencolors.js85
1 files changed, 85 insertions, 0 deletions
diff --git a/tools/gencolors.js b/tools/gencolors.js
new file mode 100644
index 0000000..fbcb36c
--- /dev/null
+++ b/tools/gencolors.js
@@ -0,0 +1,85 @@
+const { parse_hex, format_hex, lrgb_from_any, rgb_from_any, oklab_from_any } = require("../../common/colors.js")
+
+const white = "#ffffff"
+const black = "#000000"
+
+function lerp(a, b, n) {
+ return a + (b - a) * n
+}
+
+function blend(a, b, n) {
+ a = lrgb_from_any(parse_hex(a))
+ b = lrgb_from_any(parse_hex(b))
+ return format_hex({
+ mode: "lrgb",
+ r: lerp(a.r, b.r, n),
+ g: lerp(a.g, b.g, n),
+ b: lerp(a.b, b.b, n)
+ })
+}
+
+function multiply_luminance(hex, m) {
+ let oklab = oklab_from_any(parse_hex(hex))
+ oklab.l = Math.max(0, Math.min(1, oklab.l * m))
+ return format_hex(oklab)
+}
+
+function add_luminance(hex, m) {
+ let oklab = oklab_from_any(parse_hex(hex))
+ oklab.l = Math.max(0, Math.min(1, oklab.l + m))
+ return format_hex(oklab)
+}
+
+function make_3d_colors(base) {
+ return [
+ base,
+ multiply_luminance(base, 0.9),
+ multiply_luminance(base, 0.8),
+ multiply_luminance(base, 0.7),
+ multiply_luminance(base, 0.4)
+ ]
+}
+
+function make_2d_colors(base) {
+ return [
+ base,
+ multiply_luminance(base, 1.2),
+ multiply_luminance(base, 0.8),
+ multiply_luminance(base, 0.4)
+ ]
+}
+
+function make_2d_colors_add(base) {
+ return [
+ base,
+ add_luminance(base, 0.2),
+ add_luminance(base, -0.2),
+ add_luminance(base, -0.5),
+ ]
+}
+
+function print(x) {
+ console.log(x)
+}
+
+function gencss(color, sel) {
+ let [ bg, hi, lo, sh ] = make_2d_colors(color)
+ print(`${sel} { border-color: ${hi} ${lo} ${lo} ${hi}; box-shadow: 0 0 0 1px ${sh}, 1px 2px 4px #0008; }`)
+}
+
+gencss("#efebea", ".amphitheater, .basilica, .limes")
+gencss("#ed1b2f", ".red")
+gencss("#a0caec", ".blue")
+gencss("#ffe175", ".yellow")
+gencss("#80b563", ".green")
+gencss("#c3bc8e", ".alamanni")
+gencss("#9cb4be", ".franks")
+gencss("#3a9cd6", ".goths")
+gencss("#f99d1c", ".nomads")
+gencss("#8e5ca6", ".sassanids")
+gencss("#b8b996", ".rival")
+gencss("#e3dedc", ".neutral")
+gencss("#f0f0f0", ".militia")
+gencss("#f0f0f0", ".legion")
+gencss("#6e6e6e", ".no_place_governor")
+