* Force VGA colours, regardless of xterm background colour.

git-svn-id: trunk@3346 -
This commit is contained in:
daniel 2006-04-27 21:00:46 +00:00
parent b03ab6296f
commit faa8f2354b

View File

@ -358,14 +358,15 @@ end;
const ansitbl:array[0..7] of char='04261537';
Function Attr2Ansi(Attr,OAttr:longint):string;
{$ifdef disabled}
Function Attr2Ansi(Attr,OAttr:byte):string;
{
Convert Attr to an Ansi String, the Optimal code is calculate
with use of the old OAttr
}
var
hstr : string[16];
OFg,OBg,Fg,Bg : longint;
OFg,OBg,Fg,Bg:byte;
procedure AddSep(ch:char);
begin
@ -385,12 +386,16 @@ begin
Bg:=Attr shr 4;
OFg:=OAttr and $f;
OBg:=OAttr shr 4;
{ This resets colours to their defaults, the problem is we don't know what
the default is, i.e. it can either be white on black or back on white or
even something totally different. This causes undesired colour schemes
in the IDE on some terminals.
if (OFg<>7) or (Fg=7) or ((OFg>7) and (Fg<8)) or ((OBg>7) and (Bg<8)) then
begin
hstr:='0';
OFg:=7;
OBg:=0;
end;
end;}
if (Fg>7) and (OFg<8) then
begin
AddSep('1');
@ -415,6 +420,50 @@ begin
hstr:='';
Attr2Ansi:=#27'['+hstr+'m';
end;
{$endif}
function attr2ansi(attr,oattr:byte):string;
var OFg,OBg,Fg,Bg:byte;
begin
Fg:=Attr and $f;
Bg:=Attr shr 4;
OFg:=OAttr and $f;
OBg:=OAttr shr 4;
attr2ansi:=#27'[';
if fg and 8<>0 then
begin
{Enable bold if not yet on.}
if ofg and 8=0 then
attr2ansi:=attr2ansi+'1;';
end
else
{Disable bold if on.}
if ofg and 8<>0 then
attr2ansi:=attr2ansi+'22;';
if bg and 8<>0 then
begin
{Enable bold if not yet on.}
if obg and 8=0 then
attr2ansi:=attr2ansi+'5;';
end
else
{Disable bold if on.}
if obg and 8<>0 then
attr2ansi:=attr2ansi+'25;';
if fg and 7<>ofg and 7 then
attr2ansi:=attr2ansi+'3'+ansitbl[fg and 7]+';';
if bg and 7<>obg and 7 then
attr2ansi:=attr2ansi+'4'+ansitbl[bg and 7]+';';
if attr2ansi[length(attr2ansi)]=';' then
attr2ansi[length(attr2ansi)]:='m'
else
attr2ansi:='';
end;
procedure UpdateTTY(Force:boolean);
type
@ -633,7 +682,7 @@ begin
p:=PVideoCell(VideoBuf);
pold:=PVideoCell(OldVideoBuf);
{ init Attr, X,Y and set autowrap off }
SendEscapeSeq(#27'[m'#27'[?7l'{#27'[H'} );
SendEscapeSeq(#27'[0;40;37m'#27'[?7l'{#27'[H'} );
// 1.0.x: SendEscapeSeq(#27'[m'{#27'[H'});
LastAttr:=7;
LastX:=-1;