Remove Cygwin bold color quirks fix in FOptiAttr
This commit is contained in:
parent
356879bc1a
commit
2f89a8e454
|
@ -1,3 +1,6 @@
|
||||||
|
2017-04-11 Markus Gans <guru.mail@muenster.de>
|
||||||
|
* Remove Cygwin bold color quirks fix in FOptiAttr
|
||||||
|
|
||||||
2017-04-08 Markus Gans <guru.mail@muenster.de>
|
2017-04-08 Markus Gans <guru.mail@muenster.de>
|
||||||
* Improved Linux terminal quirks
|
* Improved Linux terminal quirks
|
||||||
* Improvement in class FOptiAttr
|
* Improvement in class FOptiAttr
|
||||||
|
|
|
@ -128,7 +128,7 @@ class FOptiAttr
|
||||||
void setMaxColor (const int&);
|
void setMaxColor (const int&);
|
||||||
void setNoColorVideo (int);
|
void setNoColorVideo (int);
|
||||||
void setDefaultColorSupport();
|
void setDefaultColorSupport();
|
||||||
void setCygwinTerminal();
|
void unsetDefaultColorSupport();
|
||||||
void set_enter_bold_mode (char[]);
|
void set_enter_bold_mode (char[]);
|
||||||
void set_exit_bold_mode (char[]);
|
void set_exit_bold_mode (char[]);
|
||||||
void set_enter_dim_mode (char[]);
|
void set_enter_dim_mode (char[]);
|
||||||
|
@ -273,8 +273,6 @@ class FOptiAttr
|
||||||
bool colorChange (char_data*&, char_data*&);
|
bool colorChange (char_data*&, char_data*&);
|
||||||
void resetColor (char_data*&);
|
void resetColor (char_data*&);
|
||||||
void prevent_no_color_video_attributes (char_data*&, bool = false);
|
void prevent_no_color_video_attributes (char_data*&, bool = false);
|
||||||
void preProcessing_cygwin_quirks (char_data*&);
|
|
||||||
void postProcessing_cygwin_quirks (char_data*&, char_data*&);
|
|
||||||
void deactivateAttributes (char_data*&, char_data*&);
|
void deactivateAttributes (char_data*&, char_data*&);
|
||||||
void changeAttributeSGR (char_data*&, char_data*&);
|
void changeAttributeSGR (char_data*&, char_data*&);
|
||||||
void changeAttributeSeparately (char_data*&, char_data*&);
|
void changeAttributeSeparately (char_data*&, char_data*&);
|
||||||
|
@ -338,7 +336,6 @@ class FOptiAttr
|
||||||
bool alt_equal_pc_charset;
|
bool alt_equal_pc_charset;
|
||||||
bool monochron;
|
bool monochron;
|
||||||
bool fake_reverse;
|
bool fake_reverse;
|
||||||
bool cygwin_terminal;
|
|
||||||
char attr_buf[8192];
|
char attr_buf[8192];
|
||||||
char* attr_ptr;
|
char* attr_ptr;
|
||||||
};
|
};
|
||||||
|
@ -379,7 +376,7 @@ inline void FOptiAttr::setDefaultColorSupport()
|
||||||
{ ansi_default_color = true; }
|
{ ansi_default_color = true; }
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline void FOptiAttr::setCygwinTerminal()
|
inline void FOptiAttr::unsetDefaultColorSupport()
|
||||||
{ cygwin_terminal = true; }
|
{ ansi_default_color = false; }
|
||||||
|
|
||||||
#endif // FOPTIATTR_H
|
#endif // FOPTIATTR_H
|
||||||
|
|
|
@ -75,7 +75,6 @@ FOptiAttr::FOptiAttr()
|
||||||
, alt_equal_pc_charset(false)
|
, alt_equal_pc_charset(false)
|
||||||
, monochron(true)
|
, monochron(true)
|
||||||
, fake_reverse(false)
|
, fake_reverse(false)
|
||||||
, cygwin_terminal(false)
|
|
||||||
, attr_ptr(attr_buf)
|
, attr_ptr(attr_buf)
|
||||||
{
|
{
|
||||||
attr_buf[0] = '\0';
|
attr_buf[0] = '\0';
|
||||||
|
@ -560,8 +559,6 @@ char* FOptiAttr::changeAttribute (char_data*& term, char_data*& next)
|
||||||
if ( ! ( switchOn() || switchOff() || colorChange(term, next) ) )
|
if ( ! ( switchOn() || switchOff() || colorChange(term, next) ) )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
preProcessing_cygwin_quirks(term);
|
|
||||||
|
|
||||||
if ( hasNoAttribute(next) )
|
if ( hasNoAttribute(next) )
|
||||||
{
|
{
|
||||||
deactivateAttributes (term, next);
|
deactivateAttributes (term, next);
|
||||||
|
@ -1297,42 +1294,6 @@ inline void FOptiAttr::prevent_no_color_video_attributes ( char_data*& attr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline void FOptiAttr::preProcessing_cygwin_quirks (char_data*& term)
|
|
||||||
{
|
|
||||||
// Cygwin bold color fix pre processing
|
|
||||||
|
|
||||||
if ( ! cygwin_terminal || ! term )
|
|
||||||
return;
|
|
||||||
|
|
||||||
if ( term->fg_color > 7 || term->bg_color > 7 )
|
|
||||||
{
|
|
||||||
// Reset blink and bold mode from colors > 7
|
|
||||||
char rst[] = CSI "m";
|
|
||||||
append_sequence (rst);
|
|
||||||
reset(term);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline void FOptiAttr::postProcessing_cygwin_quirks ( char_data*& term
|
|
||||||
, char_data*& next )
|
|
||||||
{
|
|
||||||
// Cygwin bold color fix post processing
|
|
||||||
|
|
||||||
if ( ! cygwin_terminal )
|
|
||||||
return;
|
|
||||||
|
|
||||||
if ( next->attr.bit.bold )
|
|
||||||
setTermBold(term);
|
|
||||||
|
|
||||||
if ( next->attr.bit.reverse )
|
|
||||||
setTermReverse(term);
|
|
||||||
|
|
||||||
if ( next->attr.bit.standout )
|
|
||||||
setTermStandout(term);
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline void FOptiAttr::deactivateAttributes ( char_data*& term
|
inline void FOptiAttr::deactivateAttributes ( char_data*& term
|
||||||
, char_data*& next )
|
, char_data*& next )
|
||||||
|
@ -1398,10 +1359,7 @@ inline void FOptiAttr::changeAttributeSGR ( char_data*& term
|
||||||
setTermPCcharset(term);
|
setTermPCcharset(term);
|
||||||
|
|
||||||
if ( colorChange(term, next) )
|
if ( colorChange(term, next) )
|
||||||
{
|
|
||||||
change_color(term, next);
|
change_color(term, next);
|
||||||
postProcessing_cygwin_quirks(term, next);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
@ -1411,10 +1369,7 @@ inline void FOptiAttr::changeAttributeSeparately ( char_data*& term
|
||||||
setAttributesOff(term);
|
setAttributesOff(term);
|
||||||
|
|
||||||
if ( colorChange(term, next) )
|
if ( colorChange(term, next) )
|
||||||
{
|
|
||||||
change_color (term, next);
|
change_color (term, next);
|
||||||
postProcessing_cygwin_quirks(term, next);
|
|
||||||
}
|
|
||||||
|
|
||||||
detectSwitchOn (term, next); // After reset all attributes
|
detectSwitchOn (term, next); // After reset all attributes
|
||||||
setAttributesOn(term);
|
setAttributesOn(term);
|
||||||
|
|
|
@ -3625,18 +3625,16 @@ void FTerm::init_termcaps_cygwin_quirks()
|
||||||
TCAP(fc::t_enter_blink_mode) = \
|
TCAP(fc::t_enter_blink_mode) = \
|
||||||
C_STR(CSI "5m");
|
C_STR(CSI "5m");
|
||||||
|
|
||||||
|
// Set enable alternate character set for cygwin terminal
|
||||||
|
if ( ! TCAP(fc::t_enable_acs) )
|
||||||
|
TCAP(fc::t_enable_acs) = \
|
||||||
|
C_STR(ESC "(B" ESC ")0");
|
||||||
|
|
||||||
// Set background color erase for cygwin terminal
|
// Set background color erase for cygwin terminal
|
||||||
FTermcap::background_color_erase = true;
|
FTermcap::background_color_erase = true;
|
||||||
|
|
||||||
// Include the Linux console quirks
|
// Include the Linux console quirks
|
||||||
init_termcaps_linux_quirks();
|
init_termcaps_linux_quirks();
|
||||||
|
|
||||||
// Avoid underline, blink and dim mode
|
|
||||||
FTermcap::attr_without_color = 26;
|
|
||||||
|
|
||||||
// Invisible mode is not supported
|
|
||||||
TCAP(fc::t_enter_secure_mode) = 0;
|
|
||||||
TCAP(fc::t_exit_secure_mode) = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
@ -3648,9 +3646,11 @@ void FTerm::init_termcaps_linux_quirks()
|
||||||
if ( FTermcap::max_color > 8 )
|
if ( FTermcap::max_color > 8 )
|
||||||
{
|
{
|
||||||
TCAP(fc::t_set_a_foreground) = \
|
TCAP(fc::t_set_a_foreground) = \
|
||||||
C_STR(CSI "3%p1%{8}%m%d%?%p1%{7}%>%t;1%e;21%;m");
|
C_STR(CSI "3%p1%{8}%m%d%?%p1%{7}%>%t;1%e;22%;m");
|
||||||
TCAP(fc::t_set_a_background) = \
|
TCAP(fc::t_set_a_background) = \
|
||||||
C_STR(CSI "4%p1%{8}%m%d%?%p1%{7}%>%t;5%e;25%;m");
|
C_STR(CSI "4%p1%{8}%m%d%?%p1%{7}%>%t;5%e;25%;m");
|
||||||
|
// Avoid underline, blink and dim mode
|
||||||
|
FTermcap::attr_without_color = 26;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3658,20 +3658,35 @@ void FTerm::init_termcaps_linux_quirks()
|
||||||
C_STR(CSI "3%p1%dm");
|
C_STR(CSI "3%p1%dm");
|
||||||
TCAP(fc::t_set_a_background) = \
|
TCAP(fc::t_set_a_background) = \
|
||||||
C_STR(CSI "4%p1%dm");
|
C_STR(CSI "4%p1%dm");
|
||||||
|
// Avoid underline and dim mode
|
||||||
|
FTermcap::attr_without_color = 18;
|
||||||
}
|
}
|
||||||
|
|
||||||
TCAP(fc::t_orig_pair) = \
|
// Set select graphic rendition attributes
|
||||||
C_STR(CSI "39;49;25m");
|
TCAP(fc::t_set_attributes) = \
|
||||||
|
C_STR(CSI "0"
|
||||||
|
"%?%p6%|%t;1%;"
|
||||||
|
"%?%p1%p3%|%t;7%;"
|
||||||
|
"%?%p4%t;5%;m"
|
||||||
|
"%?%p9%t\016%e\017%;");
|
||||||
|
|
||||||
TCAP(fc::t_exit_reverse_mode) = \
|
TCAP(fc::t_enter_alt_charset_mode) = C_STR("\016");
|
||||||
C_STR(CSI "27m");
|
TCAP(fc::t_exit_alt_charset_mode) = C_STR("\017");
|
||||||
|
TCAP(fc::t_exit_attribute_mode) = C_STR(CSI "0m\017");
|
||||||
|
TCAP(fc::t_exit_bold_mode) = C_STR(CSI "22m");
|
||||||
|
TCAP(fc::t_exit_blink_mode) = C_STR(CSI "25m");
|
||||||
|
TCAP(fc::t_exit_reverse_mode) = C_STR(CSI "27m");
|
||||||
|
TCAP(fc::t_exit_secure_mode) = 0;
|
||||||
|
TCAP(fc::t_exit_protected_mode) = 0;
|
||||||
|
TCAP(fc::t_exit_crossed_out_mode) = 0;
|
||||||
|
TCAP(fc::t_orig_pair) = C_STR(CSI "39;49;25m");
|
||||||
|
|
||||||
// Avoid underline and dim mode
|
// Avoid underline and dim mode
|
||||||
TCAP(fc::t_enter_dim_mode) = 0;
|
TCAP(fc::t_enter_dim_mode) = 0;
|
||||||
TCAP(fc::t_exit_dim_mode) = 0;
|
TCAP(fc::t_exit_dim_mode) = 0;
|
||||||
TCAP(fc::t_enter_underline_mode) = 0;
|
TCAP(fc::t_enter_underline_mode) = 0;
|
||||||
TCAP(fc::t_exit_underline_mode) = 0;
|
TCAP(fc::t_exit_underline_mode) = 0;
|
||||||
FTermcap::attr_without_color = 18;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
@ -4099,9 +4114,6 @@ void FTerm::init_OptiAttr()
|
||||||
if ( FTermcap::ansi_default_color )
|
if ( FTermcap::ansi_default_color )
|
||||||
opti_attr->setDefaultColorSupport();
|
opti_attr->setDefaultColorSupport();
|
||||||
|
|
||||||
if ( cygwin_terminal )
|
|
||||||
opti_attr->setCygwinTerminal();
|
|
||||||
|
|
||||||
opti_attr->initialize();
|
opti_attr->initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -688,8 +688,6 @@ int FVTerm::print (term_area* area, char_data& term_char)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
|
|
||||||
// protected methods of FVTerm
|
// protected methods of FVTerm
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
FVTerm::term_area* FVTerm::getPrintArea()
|
FVTerm::term_area* FVTerm::getPrintArea()
|
||||||
|
@ -2910,34 +2908,34 @@ inline void FVTerm::charsetChanges (char_data*& next_char)
|
||||||
uInt code = uInt(next_char->code);
|
uInt code = uInt(next_char->code);
|
||||||
uInt ch_enc = charEncode(code);
|
uInt ch_enc = charEncode(code);
|
||||||
|
|
||||||
if ( ch_enc != code )
|
if ( ch_enc == code )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( ch_enc == 0 )
|
||||||
{
|
{
|
||||||
if ( ch_enc == 0 )
|
next_char->code = int(charEncode(code, fc::ASCII));
|
||||||
{
|
return;
|
||||||
next_char->code = int(charEncode(code, fc::ASCII));
|
}
|
||||||
|
|
||||||
|
next_char->code = int(ch_enc);
|
||||||
|
|
||||||
|
if ( term_encoding == fc::VT100 )
|
||||||
|
next_char->attr.bit.alt_charset = true;
|
||||||
|
else if ( term_encoding == fc::PC )
|
||||||
|
{
|
||||||
|
next_char->attr.bit.pc_charset = true;
|
||||||
|
|
||||||
|
if ( isPuttyTerminal() )
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
next_char->code = int(ch_enc);
|
if ( isXTerminal() && ch_enc < 0x20 ) // Character 0x00..0x1f
|
||||||
|
|
||||||
if ( term_encoding == fc::VT100 )
|
|
||||||
next_char->attr.bit.alt_charset = true;
|
|
||||||
else if ( term_encoding == fc::PC )
|
|
||||||
{
|
{
|
||||||
next_char->attr.bit.pc_charset = true;
|
if ( hasUTF8() )
|
||||||
|
next_char->code = int(charEncode(code, fc::ASCII));
|
||||||
if ( isPuttyTerminal() )
|
else
|
||||||
return;
|
|
||||||
|
|
||||||
if ( isXTerminal() && ch_enc < 0x20 ) // Character 0x00..0x1f
|
|
||||||
{
|
{
|
||||||
if ( hasUTF8() )
|
next_char->code += 0x5f;
|
||||||
next_char->code = int(charEncode(code, fc::ASCII));
|
next_char->attr.bit.alt_charset = true;
|
||||||
else
|
|
||||||
{
|
|
||||||
next_char->code += 0x5f;
|
|
||||||
next_char->attr.bit.alt_charset = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue