svnno****@sourc*****
svnno****@sourc*****
2011年 1月 18日 (火) 01:52:34 JST
Revision: 4279 http://sourceforge.jp/projects/ttssh2/svn/view?view=rev&revision=4279 Author: doda Date: 2011-01-18 01:52:34 +0900 (Tue, 18 Jan 2011) Log Message: ----------- DECRQSS での SGR 問い合わせで、カラー情報も答えるようにした。 Modified Paths: -------------- trunk/teraterm/teraterm/vtterm.c -------------- next part -------------- Modified: trunk/teraterm/teraterm/vtterm.c =================================================================== --- trunk/teraterm/teraterm/vtterm.c 2011-01-17 10:50:28 UTC (rev 4278) +++ trunk/teraterm/teraterm/vtterm.c 2011-01-17 16:52:34 UTC (rev 4279) @@ -2984,7 +2984,8 @@ FirstPrm = FALSE; } -void RequestStatusString(unsigned char *StrBuff, int StrLen) { +void RequestStatusString(unsigned char *StrBuff, int StrLen) // DECRQSS +{ unsigned char RepStr[256]; int len = 0; @@ -3032,6 +3033,37 @@ RepStr[len++] = '7'; RepStr[len++] = ';'; } + if (CharAttr.Attr2 & Attr2Fore) { + if (CharAttr.Fore <= 7) { + RepStr[len++] = '3'; + RepStr[len++] = '0' + CharAttr.Fore; + RepStr[len++] = ';'; + } + else if (CharAttr.Fore <= 15) { + RepStr[len++] = '9'; + RepStr[len++] = '0' + CharAttr.Fore - 8; + RepStr[len++] = ';'; + } + else { + len += _snprintf_s_l(&RepStr[len], sizeof(RepStr) - len, _TRUNCATE, "38;5;%d;", CLocale, CharAttr.Fore); + } + } + if (CharAttr.Attr2 & Attr2Back) { + if (CharAttr.Back <= 7) { + RepStr[len++] = '4'; + RepStr[len++] = '0' + CharAttr.Back; + RepStr[len++] = ';'; + } + else if (CharAttr.Back <= 15) { + RepStr[len++] = '1'; + RepStr[len++] = '0'; + RepStr[len++] = '0' + CharAttr.Back - 8; + RepStr[len++] = ';'; + } + else { + len += _snprintf_s_l(&RepStr[len], sizeof(RepStr) - len, _TRUNCATE, "48;5;%d;", CLocale, CharAttr.Back); + } + } if (len == 3) { RepStr[len++] = '0'; }