count number of applied formatting flags

This commit is contained in:
Andrzej Rybczak
2009-04-26 12:33:24 +02:00
parent c7251ebb98
commit 12fa8a9bf6
2 changed files with 18 additions and 10 deletions

View File

@@ -694,30 +694,38 @@ Window &Window::operator<<(Color color)
Window &Window::operator<<(Format format)
{
static int bold_num = 0, reverse_num = 0, altcharset_num = 0;
switch (format)
{
case fmtNone:
Bold(0);
Reverse(0);
AltCharset(0);
Bold((bold_num = 0));
Reverse((reverse_num = 0));
AltCharset((altcharset_num = 0));
break;
case fmtBold:
Bold(1);
Bold(++bold_num);
break;
case fmtBoldEnd:
Bold(0);
// FIXME: No idea why this needs to de disabled at 1 :X
// Probably a mistake somewhere in the code, but for now
// I was not able to find it
if (--bold_num <= 1)
Bold((bold_num = 0));
break;
case fmtReverse:
Reverse(1);
Reverse(++reverse_num);
break;
case fmtReverseEnd:
Reverse(0);
if (--reverse_num <= 0)
Reverse((reverse_num = 0));
break;
case fmtAltCharset:
AltCharset(1);
AltCharset(++altcharset_num);
break;
case fmtAltCharsetEnd:
AltCharset(0);
if (--altcharset_num <= 0)
AltCharset((altcharset_num = 0));
break;
}
return *this;