diff options
author | Baptiste Daroussin <bapt@FreeBSD.org> | 2020-02-07 08:36:41 +0000 |
---|---|---|
committer | Baptiste Daroussin <bapt@FreeBSD.org> | 2020-02-07 08:36:41 +0000 |
commit | f0179cb6083cc92e5947ae56e6a0a5c5328aead0 (patch) | |
tree | bcee0ba9c2149b71f0bfc036df1e61e3105bf980 /test/tput-initc | |
parent | cea297eb34d2361e79529034397465068ae34ecd (diff) | |
download | src-f0179cb6083cc92e5947ae56e6a0a5c5328aead0.tar.gz src-f0179cb6083cc92e5947ae56e6a0a5c5328aead0.zip |
Vendor import ncurses 6.1-20200118vendor/ncurses/6.1-20200118
Notes
Notes:
svn path=/vendor/ncurses/dist/; revision=357645
svn path=/vendor/ncurses/6.1-20200118/; revision=357646; tag=vendor/ncurses/6.1-20200118
Diffstat (limited to 'test/tput-initc')
-rwxr-xr-x | test/tput-initc | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/test/tput-initc b/test/tput-initc new file mode 100755 index 000000000000..d4dfddc0afdc --- /dev/null +++ b/test/tput-initc @@ -0,0 +1,155 @@ +#!/bin/sh +############################################################################## +# Copyright (c) 2016 Free Software Foundation, Inc. # +# # +# Permission is hereby granted, free of charge, to any person obtaining a # +# copy of this software and associated documentation files (the "Software"), # +# to deal in the Software without restriction, including without limitation # +# the rights to use, copy, modify, merge, publish, distribute, distribute # +# with modifications, sublicense, and/or sell copies of the Software, and to # +# permit persons to whom the Software is furnished to do so, subject to the # +# following conditions: # +# # +# The above copyright notice and this permission notice shall be included in # +# all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # +# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # +# DEALINGS IN THE SOFTWARE. # +# # +# Except as contained in this notice, the name(s) of the above copyright # +# holders shall not be used in advertising or otherwise to promote the sale, # +# use or other dealings in this Software without prior written # +# authorization. # +############################################################################## +# $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 +# the palette using those numbers. + +failed() { + printf "?? $*\n" >&2 + 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 +elif [ $# = 0 ] +then + file=$TERM.dat +else + failed "expected one parameter or none" +fi + +if [ ! -f "$file" ] +then + if [ -f "$file.dat" ] + then + file="$file.dat" + else + failed "no such file: $file" + fi +fi + +myterm=${file%%.dat} +colors=$(tput -T $myterm colors 2>/dev/null) +if [ ${colors:-0} -le 0 ] +then + myterm=${myterm%%-color} + colors=$(tput -T $myterm colors 2>/dev/null) +fi +if [ ${colors:-0} -le 0 ] +then + failed "terminal $myterm does not support color" +fi + +cat $file |\ +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; +} + +/^scale:[0-9]+/{ + sub("^scale:","",$0); + limit = $0; +} + +/^[0-9]+:/{ + sub(":","",$1); + 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 - |