Mail Archives: cygwin/2000/10/17/14:29:34
------_=_NextPart_000_01C03868.248F76F0
Content-Type: text/plain;
charset="iso-8859-1"
I've made a few improvements to the console routines.
. Added an alternative font (^[[11m) for displaying graphics characters
. Corrected bold, underline, reverse, and invisible attributes for use with
colors
I also hand-tweaked a terminfo file and a termcap file to use the changes.
Programs tested include the ncurses test programs, tack, mc, and frotz.
(The attached patches and term* files expand upon the patches I submitted
back in May.)
Details:
The alternative font is actually just a flag to disable the call to
CharToOemBuff in fhandler_console::write_normal. For example, the character
0xDB (U with circumflex) is a U in the normal font and a solid block in the
alternative font. This allows programs to map characters like the
registered-trademark symbol to an 'r', while allowing other programs to use
the graphics characters for drawing lines.
Character attributes are maintained individually in
fhandler_console::char_command.
Brad Town
------_=_NextPart_000_01C03868.248F76F0
Content-Type: application/octet-stream;
name="fhandler.h.diff"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="fhandler.h.diff"
--- fhandler.h Tue Oct 17 11:32:01 2000=0A=
+++ fhandler.h.mine Tue Oct 17 09:38:09 2000=0A=
@@ -570,6 +570,7 @@=0A=
int state_;=0A=
int args_[MAXARGS];=0A=
int nargs_;=0A=
+ int altfont_;=0A=
=0A=
DWORD default_color;=0A=
=0A=
------_=_NextPart_000_01C03868.248F76F0
Content-Type: application/octet-stream;
name="fhandler_console.cc.diff"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="fhandler_console.cc.diff"
--- fhandler_console.cc Tue Oct 17 11:31:17 2000=0A=
+++ fhandler_console.cc.mine Tue Oct 17 10:49:13 2000=0A=
@@ -370,7 +370,7 @@=0A=
set_r_no_interrupt (1); // Handled explicitly in read code=0A=
=0A=
h =3D CreateFileA ("CONOUT$", GENERIC_READ|GENERIC_WRITE,=0A=
- FILE_SHARE_WRITE | FILE_SHARE_WRITE, &sec_none,=0A=
+ FILE_SHARE_READ | FILE_SHARE_WRITE, &sec_none,=0A=
OPEN_EXISTING, 0, 0);=0A=
=0A=
if (h =3D=3D INVALID_HANDLE_VALUE)=0A=
@@ -630,6 +630,7 @@=0A=
{=0A=
set_cb (sizeof *this);=0A=
state_ =3D normal;=0A=
+ altfont_ =3D 0;=0A=
set_need_fork_fixup ();=0A=
}=0A=
=0A=
@@ -775,13 +776,16 @@=0A=
void=0A=
fhandler_console::char_command (char c)=0A=
{=0A=
- // Keep the background intensity with the colr since there doesn't =
seem=0A=
- // to be a way to set this with termcap/terminfo.=0A=
static int fg =3D default_color & (FOREGROUND_BLUE | =
FOREGROUND_GREEN |=0A=
FOREGROUND_RED),=0A=
bg =3D default_color & (BACKGROUND_BLUE | BACKGROUND_GREEN |=0A=
- BACKGROUND_RED | BACKGROUND_INTENSITY),=0A=
- bold =3D default_color & FOREGROUND_INTENSITY;=0A=
+ BACKGROUND_RED);=0A=
+=0A=
+ static bool bold =3D (default_color & FOREGROUND_INTENSITY) ? true : =
false;=0A=
+ static bool underline =3D (default_color & BACKGROUND_INTENSITY) ? =
true : false;=0A=
+ static bool reverse =3D false;=0A=
+ static bool invis =3D false;=0A=
+=0A=
int x, y;=0A=
char buf[40];=0A=
=0A=
@@ -793,60 +797,46 @@=0A=
for (i =3D 0; i <=3D nargs_; i++)=0A=
switch (args_[i])=0A=
{=0A=
- case 0: /* normal color */=0A=
+ case 0: /* default rendition */=0A=
fg =3D default_color & (FOREGROUND_BLUE | FOREGROUND_GREEN =
|=0A=
FOREGROUND_RED);=0A=
bg =3D default_color & (BACKGROUND_BLUE | BACKGROUND_GREEN =
|=0A=
- BACKGROUND_RED | BACKGROUND_INTENSITY);=0A=
- bold =3D default_color & FOREGROUND_INTENSITY;=0A=
+ BACKGROUND_RED);=0A=
+ underline =3D (default_color & BACKGROUND_INTENSITY) ? true : =
false;=0A=
+ reverse =3D false;=0A=
+ bold =3D (default_color & FOREGROUND_INTENSITY) ? true : =
false;=0A=
+ invis =3D false;=0A=
+ altfont_ =3D 0;=0A=
break;=0A=
case 1: /* bold */=0A=
- fg =3D default_color & (FOREGROUND_BLUE | FOREGROUND_GREEN =
|=0A=
- FOREGROUND_RED);=0A=
- bg =3D default_color & (BACKGROUND_BLUE | BACKGROUND_GREEN =
|=0A=
- BACKGROUND_RED | BACKGROUND_INTENSITY);=0A=
- bold =3D FOREGROUND_INTENSITY;=0A=
+ bold =3D true;=0A=
break;=0A=
- case 4: /* underline - simulate with cyan */=0A=
- fg =3D FOREGROUND_BLUE | FOREGROUND_GREEN;=0A=
- bg =3D default_color & (BACKGROUND_BLUE | BACKGROUND_GREEN =
|=0A=
- BACKGROUND_RED | BACKGROUND_INTENSITY);=0A=
- bold =3D default_color & FOREGROUND_INTENSITY;=0A=
- break;=0A=
- case 5: /* blink mode */=0A=
- fg =3D default_color & (FOREGROUND_BLUE | FOREGROUND_GREEN =
|=0A=
- FOREGROUND_RED);=0A=
- bg =3D default_color & (BACKGROUND_BLUE | BACKGROUND_GREEN =
|=0A=
- BACKGROUND_RED | BACKGROUND_INTENSITY);=0A=
- bold =3D default_color & FOREGROUND_INTENSITY;=0A=
+ case 4: /* underline */=0A=
+ underline =3D true;=0A=
break;=0A=
case 7: /* reverse */=0A=
- fg =3D (default_color & BACKGROUND_BLUE) ? FOREGROUND_BLUE : =
0;=0A=
- fg |=3D (default_color & BACKGROUND_GREEN) ? FOREGROUND_GREEN =
: 0;=0A=
- fg |=3D (default_color & BACKGROUND_RED) ? FOREGROUND_RED : =
0;=0A=
- fg |=3D (default_color & BACKGROUND_INTENSITY) ?=0A=
- FOREGROUND_INTENSITY : 0;=0A=
- bg =3D (default_color & FOREGROUND_BLUE) ? BACKGROUND_BLUE : =
0;=0A=
- bg |=3D (default_color & FOREGROUND_GREEN) ? BACKGROUND_GREEN =
: 0;=0A=
- bg |=3D (default_color & FOREGROUND_RED) ? BACKGROUND_RED : =
0;=0A=
- bg |=3D (default_color & FOREGROUND_INTENSITY) ?=0A=
- BACKGROUND_INTENSITY : 0;=0A=
+ reverse =3D true;=0A=
break;=0A=
case 8: /* invisible */=0A=
- fg =3D (default_color & BACKGROUND_BLUE) ? FOREGROUND_BLUE : =
0;=0A=
- fg |=3D (default_color & BACKGROUND_GREEN) ? FOREGROUND_GREEN =
: 0;=0A=
- fg |=3D (default_color & BACKGROUND_RED) ? FOREGROUND_RED : =
0;=0A=
- bg =3D default_color & (BACKGROUND_BLUE | BACKGROUND_GREEN =
|=0A=
- BACKGROUND_RED | BACKGROUND_INTENSITY);=0A=
- bold =3D (default_color & BACKGROUND_INTENSITY) ?=0A=
- FOREGROUND_INTENSITY : 0;=0A=
+ invis =3D true;=0A=
break;=0A=
- case 9: /* dim */=0A=
- fg =3D default_color & (FOREGROUND_BLUE | FOREGROUND_GREEN =
|=0A=
- FOREGROUND_RED);=0A=
- bg =3D default_color & (BACKGROUND_BLUE | BACKGROUND_GREEN =
|=0A=
- BACKGROUND_RED | BACKGROUND_INTENSITY);=0A=
- bold =3D (fg =3D=3D 0) ? FOREGROUND_INTENSITY : 0;=0A=
+ case 10: /* primary (default) font */=0A=
+ altfont_ =3D 0;=0A=
+ break;=0A=
+ case 11: /* first alternative font */=0A=
+ altfont_ =3D 1;=0A=
+ break;=0A=
+ case 22: /* non-bold */=0A=
+ bold =3D false;=0A=
+ break;=0A=
+ case 24: /* non-underline */=0A=
+ underline =3D false;=0A=
+ break;=0A=
+ case 27: /* non-reverse */=0A=
+ reverse =3D false;=0A=
+ break;=0A=
+ case 28: /* non-invisible */=0A=
+ invis =3D false;=0A=
break;=0A=
case 30: /* BLACK foreground */=0A=
fg =3D 0;=0A=
@@ -872,6 +862,10 @@=0A=
case 37: /* WHITE foreg */=0A=
fg =3D FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED;=0A=
break;=0A=
+ case 39: /* Default foreg */=0A=
+ fg =3D default_color & (FOREGROUND_BLUE | FOREGROUND_GREEN =
|=0A=
+ FOREGROUND_RED);=0A=
+ break;=0A=
case 40: /* BLACK background */=0A=
bg =3D 0;=0A=
break;=0A=
@@ -896,15 +890,39 @@=0A=
case 47: /* WHITE background */=0A=
bg =3D BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED;=0A=
break;=0A=
- default:=0A=
- fg =3D default_color & (FOREGROUND_BLUE | FOREGROUND_GREEN =
|=0A=
- FOREGROUND_RED);=0A=
+ case 49: /* Default background */=0A=
bg =3D default_color & (BACKGROUND_BLUE | BACKGROUND_GREEN =
|=0A=
- BACKGROUND_RED | BACKGROUND_INTENSITY);=0A=
- bold =3D default_color & FOREGROUND_INTENSITY;=0A=
+ BACKGROUND_RED);=0A=
+ break;=0A=
+ default:=0A=
break;=0A=
}=0A=
- SetConsoleTextAttribute (get_output_handle (), fg | bg | bold);=0A=
+=0A=
+ {=0A=
+ WORD fg2 =3D fg;=0A=
+ WORD bg2 =3D bg;=0A=
+=0A=
+ if (reverse) {=0A=
+ fg2 =3D ((bg & BACKGROUND_RED) ? FOREGROUND_RED : 0) |=0A=
+ ((bg & BACKGROUND_GREEN) ? FOREGROUND_GREEN : 0) |=0A=
+ ((bg & BACKGROUND_BLUE) ? FOREGROUND_BLUE : 0);=0A=
+ bg2 =3D ((fg & FOREGROUND_RED) ? BACKGROUND_RED : 0) |=0A=
+ ((fg & FOREGROUND_GREEN) ? BACKGROUND_GREEN : 0) |=0A=
+ ((fg & FOREGROUND_BLUE) ? BACKGROUND_BLUE : 0);=0A=
+ }=0A=
+=0A=
+ if (bold) fg2 |=3D FOREGROUND_INTENSITY;=0A=
+ if (underline) bg2 |=3D BACKGROUND_INTENSITY;=0A=
+ if (invis) {=0A=
+ fg2 =3D ((bg2 & BACKGROUND_RED) ? FOREGROUND_RED : 0) |=0A=
+ ((bg2 & BACKGROUND_GREEN) ? FOREGROUND_GREEN : 0) |=0A=
+ ((bg2 & BACKGROUND_BLUE) ? FOREGROUND_BLUE : 0) |=0A=
+ ((bg2 & BACKGROUND_INTENSITY) ? FOREGROUND_INTENSITY : 0);=0A=
+ }=0A=
+=0A=
+ SetConsoleTextAttribute (get_output_handle (), fg2 | bg2);=0A=
+ }=0A=
+=0A=
break;=0A=
case 'h':=0A=
case 'l':=0A=
@@ -1079,7 +1097,10 @@=0A=
size_t len =3D found - src;=0A=
do {=0A=
size_t l2 =3D min (sizeof (buf), len);=0A=
- CharToOemBuff ((LPCSTR)src, buf, l2);=0A=
+ if (altfont_ =3D=3D 0)=0A=
+ CharToOemBuff ((LPCSTR)src, buf, l2);=0A=
+ else=0A=
+ strncpy(buf, (const char *)src, l2);=0A=
if (! WriteFile (get_output_handle (), buf, l2, &done, 0))=0A=
{=0A=
debug_printf ("write failed, handle %p", get_output_handle ());=0A=
------_=_NextPart_000_01C03868.248F76F0
Content-Type: application/octet-stream;
name="termcap"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="termcap"
cygwin|ansi emulation for cygwin32:\=0A=
:am:ms:xn:xo:\=0A=
:Co#8:it#8:pa#64:\=0A=
=
:&7=3D^Z:@7=3D\E[4~:AB=3D\E[4%dm:AF=3D\E[3%dm:AL=3D\E[%dL:DC=3D\E[%dP:\=0A=
:DL=3D\E[%dM:F1=3D\E[23~:F2=3D\E[24~:F3=3D\E[25~:F4=3D\E[26~:\=0A=
:F5=3D\E[28~:F6=3D\E[29~:F7=3D\E[31~:F8=3D\E[32~:F9=3D\E[33~:\=0A=
=
:FA=3D\E[34~:IC=3D\E[%d@:K1=3D\E[1~:K2=3D\E[G:K3=3D\E[5~:K4=3D\E[4~:\=0A=
:K5=3D\E[6~:\=0A=
=
:ac=3D+\020\054\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332=
m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\3=
30}\234~\376:\=0A=
:as=3D\E[11m:ae=3D\E[10m:\=0A=
=
:bl=3D^G:cb=3D\E[1K:cd=3D\E[J:ce=3D\E[K:cl=3D\E[2J:cm=3D\E[%i%d;%dH:\=0A=
:cr=3D^M:do=3D\E[B:ei=3D:ho=3D\E[H:im=3D:k1=3D\E[[A:\=0A=
=
:k2=3D\E[[B:k3=3D\E[[C:k4=3D\E[[D:k5=3D\E[[E:k6=3D\E[17~:k7=3D\E[18~:\=0A=
=
:k8=3D\E[19~:k9=3D\E[20~:k;=3D\E[21~:kD=3D\E[3~:kI=3D\E[2~:kN=3D\E[6~:\=0A=
=
:kP=3D\E[5~:kb=3D^H:kd=3D\E[B:kh=3D\E[1~:kl=3D\E[D:kr=3D\E[C:ku=3D\E[A:\=
=0A=
:le=3D^H:md=3D\E[1m:me=3D\E[m:mk=3D\E[8m:mr=3D\E[7m:nd=3D\E[C:\=0A=
:op=3D\E[39;49m:r1=3D\Ec:rc=3D\E8:sc=3D\E7:se=3D\E[22;27m:sf=3D^J:\=0A=
=
:so=3D\E[1;7m:sr=3D\EM:st=3D\EH:ta=3D^I:u6=3D\E[%i%d;%dR:u7=3D\E[6n:\=0A=
:u8=3D\E[?6c:u9=3D\E[c:ue=3D\E[24m:up=3D\E[A:us=3D\E[4m:=0A=
------_=_NextPart_000_01C03868.248F76F0
Content-Type: application/octet-stream;
name="terminfo"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="terminfo"
cygwin|ansi emulation for cygwin32,=0A=
am, msgr, xenl, xon,=0A=
colors#8, it#8, pairs#64,=0A=
=
acsc=3D+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m=
\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\33=
0}\234~\376,=0A=
smacs=3D\E[11m, rmacs=3D\E[10m,=0A=
bel=3D^G, bold=3D\E[1m, clear=3D\E[2J, cr=3D^M,=0A=
cub1=3D^H, cud1=3D\E[B, cuf1=3D\E[C,=0A=
cup=3D\E[%i%p1%d;%p2%dH, cuu1=3D\E[A, dch=3D\E[%dP, dl=3D\E[%dM,=0A=
ed=3D\E[J, el=3D\E[K, el1=3D\E[1K, home=3D\E[H, ht=3D^I, hts=3D\EH,=0A=
ich=3D\E[%d@, il=3D\E[%dL, ind=3D^J, invis=3D\E[8m,=0A=
ka1=3D\E[1~, ka3=3D\E[5~, kb2=3D\E[G, kbs=3D^H, kc1=3D\E[4~, =
kc3=3D\E[6~,=0A=
kcub1=3D\E[D, kcud1=3D\E[B, kcuf1=3D\E[C, kcuu1=3D\E[A,=0A=
kdch1=3D\E[3~, kend=3D\E[4~, kf1=3D\E[[A, kf10=3D\E[21~,=0A=
kf11=3D\E[23~, kf12=3D\E[24~, kf13=3D\E[25~, kf14=3D\E[26~,=0A=
kf15=3D\E[28~, kf16=3D\E[29~, kf17=3D\E[31~, kf18=3D\E[32~,=0A=
kf19=3D\E[33~, kf2=3D\E[[B, kf20=3D\E[34~, kf3=3D\E[[C, =
kf4=3D\E[[D,=0A=
kf5=3D\E[[E, kf6=3D\E[17~, kf7=3D\E[18~, kf8=3D\E[19~, =
kf9=3D\E[20~,=0A=
khome=3D\E[1~, kich1=3D\E[2~, knp=3D\E[6~, kpp=3D\E[5~, kspd=3D^Z,=0A=
op=3D\E[39;49m, rc=3D\E8, rev=3D\E[7m, ri=3D\EM, rmso=3D\E[22;27m,=0A=
rmul=3D\E[24m, rs1=3D\Ec, sc=3D\E7, setab=3D\E[4%dm,=0A=
setaf=3D\E[3%dm,=0A=
=
sgr=3D\E[0%?%p1%t;1;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7%t;8%;%?%p9=
%t;11%;m,=0A=
sgr0=3D\E[m, smso=3D\E[1;7m, smul=3D\E[4m, u6=3D\E[%i%d;%dR,=0A=
u7=3D\E[6n, u8=3D\E[?6c, u9=3D\E[c,=0A=
------_=_NextPart_000_01C03868.248F76F0
Content-Type: text/plain; charset=us-ascii
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com
------_=_NextPart_000_01C03868.248F76F0--
- Raw text -