Files
cshenv/bin/color_picker.sh

122 lines
2.4 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
. ~/cshenv/lib/vulgar.sh
echo '[?25l'
echo '[?25h'
echo '[?25l'
erase_block 1 1 15 34
build_box 1 1 15 34
fill_block_attributes 1 1 15 34 47 30
write_string "Terminal Color Picker" 2 7 47 30
create_button Red 12 3 Red 1
#build_box 12 2 14 8
#write_string "Red" 13 4
#fill_block_attributes 12 2 14 8 41
create_button Green 12 13 Green 2
#build_box 12 12 14 20
#write_string "Green" 13 14
create_button Blue 12 25 Blue 4
#build_box 12 24 14 31
#write_string "Blue" 13 26
highlight_button Red
# TODO: Add color picker
# TODO: Negative colors support specials:
# -1 is background
# -2 is foreground
# -3 is cursor
color=12
write_string "Index:" 4 3 47 30
erase_block 4 10 4 12
color_padded=" ${color}"
write_string "${color_padded:-3}" 4 10
write_string "Code:" 4 14 47 30
erase_block 4 20 4 25
get_color_hex ${color} red green blue
write_string "${red}${green}${blue}" 4 20
build_box 6 9 9 25
fill_block_attributes 7 10 8 24 44
#erase_block 4 13 4 21
Controls=()
Buttons=("Red" "Green" "Blue")
Index=0
Colors=( $((0x${red})) $((0x${green})) $((0x${blue})) )
tmp=`stty -g`
stty -echo
update_color()
{
_color=${1}
echo -n "]4;${_color};#$(hexbyte ${Colors[0]})$(hexbyte ${Colors[1]})$(hexbyte ${Colors[2]})"
write_string "$(hexbyte ${Colors[0]})$(hexbyte ${Colors[1]})$(hexbyte ${Colors[2]})" 4 20
}
while true
do
read_key codes
sym=`translate_key ${codes}`
OldIndex=${Index}
if [ "${sym}" == "Right" ]
then
if (( ${Index} < $(( ${#Buttons} - 1 )) ))
then
Index=$(( ${Index} + 1 ))
unhighlight_button ${Buttons[${OldIndex}]}
highlight_button ${Buttons[${Index}]}
fi
elif [ "${sym}" == "Left" ]
then
if (( ${Index} > 0 ))
then
Index=$(( ${Index} - 1 ))
unhighlight_button ${Buttons[${OldIndex}]}
highlight_button ${Buttons[${Index}]}
fi
elif [ "${sym}" == "Up" ]
then
#echo "${Colors[${Index}]}:$(hexbyte ${Colors[${Index}]} )"
if (( ${Colors[${Index}]} < 255 ))
then
Colors[${Index}]=$(( ${Colors[${Index}]} + 1 ))
fi
update_color ${color}
elif [ "${sym}" == "Down" ]
then
#echo "${Colors[${Index}]}:$(hexbyte ${Colors[${Index}]} )"
if (( ${Colors[${Index}]} > 0 ))
then
Colors[${Index}]=$(( ${Colors[${Index}]} - 1 ))
fi
update_color ${color}
elif [ "${sym}" == "Escape" ]
then
break
elif [ "${sym}" == "0" ]
then
Colors[${Index}]=0
update_color ${color}
fi
done
stty ${tmp}
#sleep 0.10
echo -n '[?25h'