doublechars.sh revision 4419d26b
1#!/bin/sh
2# $XTermId: doublechars.sh,v 1.22 2022/02/13 14:34:47 tom Exp $
3# -----------------------------------------------------------------------------
4# this file is part of xterm
5#
6# Copyright 1999-2021,2022 by Thomas E. Dickey
7#
8#                         All Rights Reserved
9#
10# Permission is hereby granted, free of charge, to any person obtaining a
11# copy of this software and associated documentation files (the
12# "Software"), to deal in the Software without restriction, including
13# without limitation the rights to use, copy, modify, merge, publish,
14# distribute, sublicense, and/or sell copies of the Software, and to
15# permit persons to whom the Software is furnished to do so, subject to
16# the following conditions:
17#
18# The above copyright notice and this permission notice shall be included
19# in all copies or substantial portions of the Software.
20#
21# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24# IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
25# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
26# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28#
29# Except as contained in this notice, the name(s) of the above copyright
30# holders shall not be used in advertising or otherwise to promote the
31# sale, use or other dealings in this Software without prior written
32# authorization.
33# -----------------------------------------------------------------------------
34# Illustrate the use of double-size characters by drawing successive lines in
35# the commonly used video attributes.
36#
37# Use the -w option to force the output to wrap.  It will look ugly, because
38# the double-high lines will be split.
39
40ESC=""
41CSI="${ESC}["
42CMD='/bin/echo'
43OPT='-n'
44SUF=''
45TMP=`(mktemp) 2>/dev/null` || TMP=/tmp/xterm$$
46eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
47{ test ! -f $TMP || test -s $TMP; } &&
48for verb in "printf" "print" ; do
49    rm -f $TMP
50    eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
51    if test -f $TMP ; then
52	if test ! -s $TMP ; then
53	    CMD="$verb"
54	    OPT=
55	    SUF='\c'
56	    break
57	fi
58    fi
59done
60rm -f $TMP
61
62SAVE=yes
63WRAP=no
64if test $# != 0 ; then
65    while test $# != 0
66    do
67    	case $1 in
68	-n)	SAVE=no ;;
69	-w)	WRAP=yes ;;
70	esac
71	shift
72    done
73fi
74
75if test $SAVE = yes ; then
76    exec </dev/tty
77    old=`stty -g`
78    stty raw -echo min 0  time 5
79
80    $CMD $OPT "${CSI}18t${SUF}" > /dev/tty
81    IFS=';' read junk high wide
82
83    stty $old
84
85    wide=`echo "$wide"|sed -e 's/t.*//'`
86    original=${CSI}8\;${high}\;${wide}t${SUF}
87
88    trap '$CMD $OPT "$original" >/dev/tty; exit 1' 1 2 3 15
89    trap '$CMD $OPT "$original" >/dev/tty' 0
90
91fi
92
93if test $WRAP = yes ; then
94	# turn on wrapping and force the screen to 80 columns
95	$CMD $OPT "${CSI}?7h" >/dev/tty
96	$CMD $OPT "${CSI}?40l" >/dev/tty
97else
98	# force the screen to 132 columns
99	$CMD $OPT "${CSI}?40h" >/dev/tty
100	$CMD $OPT "${CSI}?3h" >/dev/tty
101fi
102
103for SGR in 0 1 4 5 7
104do
105	$CMD $OPT "${CSI}0;${SGR}m" >/dev/tty
106	for DBL in 5 3 4 6 5
107	do
108		$CMD $OPT "${ESC}#${DBL}" >/dev/tty
109		echo "The quick brown fox jumps over the lazy dog" >/dev/tty
110	done
111	echo
112done
113$CMD $OPT "${CSI}0m" >/dev/tty
114