X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Ftput-initc;h=d4dfddc0afdc7f2ca538686c927fca47287d5457;hp=3382ee5ad818ea479a4c51cd85c7566fa45c3667;hb=c885a3fdd089f784f17dd2e9c03d8eb774072dc9;hpb=1b540608eae9a714c0c4195310f25c1a1897ae89 diff --git a/test/tput-initc b/test/tput-initc index 3382ee5a..d4dfddc0 100644 --- a/test/tput-initc +++ b/test/tput-initc @@ -26,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: tput-initc,v 1.1 2016/12/10 23:35:46 tom Exp $ +# $Id: tput-initc,v 1.5 2016/12/17 22:35:05 tom Exp $ # Some of the ".dat" files in ncurses' test-directory give r/g/b numbers for # default palettes of xterm and Linux console. This script reads the numbers # and (assuming the same or compatible terminal) uses tput to (re)initialize @@ -37,6 +37,40 @@ failed() { exit 1 } +usage() { + cat >&2 <<-EOF + usage: $0 [-r] [-s] [palette-data] + + Use this script with a palette data-file to (re)initialize colors with + tput. This script assumes arrangements for 16-, 88- and 256-colors + like the xterm 88colors2.pl and 256colors2.pl scripts. + + Options: + -r reverse palette + -s reverse system colors (first 16 if more than 16 colors) +EOF + exit 1 +} + +opt_r=no +opt_s=no + +while getopts "rs" option "$@" +do + case $option in + (r) + opt_r=yes + ;; + (s) + opt_s=yes + ;; + (*) + usage + ;; + esac +done +shift $(expr $OPTIND - 1) + if [ $# = 1 ] then file=$1 @@ -70,8 +104,20 @@ then fi cat $file |\ -awk -v myterm=$myterm ' -BEGIN { limit=1000; } +awk -v opt_r=$opt_r \ + -v opt_s=$opt_s \ + -v colors=$colors \ + -v myterm=$myterm ' +BEGIN { + limit = 1000; + range = -1; + cramp = -1; + if ( colors == 88 ) { + cramp = 80; + } else if ( colors = 256 ) { + cramp = 232; + } +} function scaled(n) { return (n * 1000)/limit; } @@ -83,5 +129,27 @@ function scaled(n) { /^[0-9]+:/{ sub(":","",$1); - printf "tput -T%s initc %d %d %d %d\n", myterm, $1,scaled($2),scaled($3),scaled($4); -}' |sh - + item = $1 + 0; + if (range < item) { + range = item; + } + params[$1] = sprintf ("%d %d %d", scaled($2),scaled($3),scaled($4)); +} +END { + for (n = 0; n <= range; ++n) { + m = n; + if ( opt_r == "yes" ) { + if ( colors <= 16 ) { + m = range - n; + } else if ( ( opt_s == "yes" ) && ( n < 16 ) ) { + m = 15 - n; + } else if ( n >= cramp ) { + m = cramp + colors - 1 - n; + } else { + m = 16 + cramp - 1 - n; + } + } + printf "tput -T%s initc %d %s\n", myterm, m, params[n]; + } +} +' |sh -