okay ffs
This commit is contained in:
parent
a226e34803
commit
a845b83b46
@ -32,39 +32,36 @@ render_gradient_string() {
|
|||||||
|
|
||||||
rainbowize_text() {
|
rainbowize_text() {
|
||||||
local text="$1"
|
local text="$1"
|
||||||
local freq=0.2
|
local freq=0.15
|
||||||
local i=0
|
|
||||||
local pi=3.14159265
|
local pi=3.14159265
|
||||||
local output=""
|
local i=0
|
||||||
|
local r g b char
|
||||||
|
|
||||||
clamp() {
|
while IFS= read -r -n1 char || [ -n "$char" ]; do
|
||||||
local val="$1" min="$2" max="$3"
|
|
||||||
if (( val < min )); then echo "$min"; elif (( val > max )); then echo "$max"; else echo "$val"; fi
|
|
||||||
}
|
|
||||||
|
|
||||||
while IFS= read -r -n1 char || [[ -n "$char" ]]; do
|
|
||||||
if [[ "$char" == $'\n' ]]; then
|
if [[ "$char" == $'\n' ]]; then
|
||||||
output+=$'\n'
|
echo # newline
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
r=$(awk -v i="$i" -v f="$freq" 'BEGIN { printf("%d", 127 * (sin(f*i + 0) + 1)) }')
|
# ANSI-safe: skip formatting on control characters
|
||||||
g=$(awk -v i="$i" -v f="$freq" 'BEGIN { printf("%d", 127 * (sin(f*i + 2*3.1415/3) + 1)) }')
|
if [[ "$char" =~ [[:cntrl:]] ]]; then
|
||||||
b=$(awk -v i="$i" -v f="$freq" 'BEGIN { printf("%d", 127 * (sin(f*i + 4*3.1415/3) + 1)) }')
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
r=$(clamp "$r" 60 200)
|
r=$(printf "%.0f" "$(echo "s($freq*$i + 0) * 95 + 160" | bc -l)")
|
||||||
g=$(clamp "$g" 60 200)
|
g=$(printf "%.0f" "$(echo "s($freq*$i + 2*$pi/3) * 95 + 160" | bc -l)")
|
||||||
b=$(clamp "$b" 60 200)
|
b=$(printf "%.0f" "$(echo "s($freq*$i + 4*$pi/3) * 95 + 160" | bc -l)")
|
||||||
|
|
||||||
output+="#$(printf "%02x%02x%02x" "$r" "$g" "$b")$char"
|
printf "\e[38;2;%d;%d;%dm%s" "$r" "$g" "$b" "$char"
|
||||||
((i++))
|
((i++))
|
||||||
done <<< "$text"
|
done <<< "$text"
|
||||||
|
|
||||||
echo -n "$output"
|
echo -e "\e[0m"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# rainbowize_text() {
|
# rainbowize_text() {
|
||||||
# local text="$1"
|
# local text="$1"
|
||||||
# local freq=0.15
|
# local freq=0.15
|
||||||
|
Loading…
x
Reference in New Issue
Block a user