forked from nana-4/materia-theme
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mix.sh
executable file
·37 lines (31 loc) · 886 Bytes
/
mix.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env bash
set -ueo pipefail
#set -x
mix_channel() {
value1="$(printf '%03d' "0x$1")"
value2="$(printf '%03d' "0x$2")"
ratio="$3"
result="$(bc <<< "scale=0; ($value1 * 100 * $ratio + $value2 * 100 * (1 - $ratio)) / 100")"
if [[ "$result" -lt 0 ]]; then
result=0
elif [[ "$result" -gt 255 ]]; then
result=255
fi
echo "$result"
}
mix() {
hexinput1="$(tr '[:lower:]' '[:upper:]' <<< "$1")"
hexinput2="$(tr '[:lower:]' '[:upper:]' <<< "$2")"
ratio="${3-0.5}"
a="$(cut -c-2 <<< "$hexinput1")"
b="$(cut -c3-4 <<< "$hexinput1")"
c="$(cut -c5-6 <<< "$hexinput1")"
d="$(cut -c-2 <<< "$hexinput2")"
e="$(cut -c3-4 <<< "$hexinput2")"
f="$(cut -c5-6 <<< "$hexinput2")"
r="$(mix_channel "$a" "$d" "$ratio")"
g="$(mix_channel "$b" "$e" "$ratio")"
b="$(mix_channel "$c" "$f" "$ratio")"
printf '%02x%02x%02x\n' "$r" "$g" "$b"
}
mix "$@"