| 3386 |
return TRUE; |
return TRUE; |
| 3387 |
} |
} |
| 3388 |
|
|
| 3389 |
|
void XsProcColor(int mode, unsigned int ColorNumber, char *ColorSpec) { |
| 3390 |
|
COLORREF color; |
| 3391 |
|
char StrBuff[256]; |
| 3392 |
|
int len; |
| 3393 |
|
|
| 3394 |
|
switch (mode) { |
| 3395 |
|
case 10: |
| 3396 |
|
ColorNumber = CS_VT_NORMALFG; |
| 3397 |
|
break; |
| 3398 |
|
case 11: |
| 3399 |
|
ColorNumber = CS_VT_NORMALBG; |
| 3400 |
|
break; |
| 3401 |
|
case 15: |
| 3402 |
|
ColorNumber = CS_TEK_FG; |
| 3403 |
|
break; |
| 3404 |
|
case 16: |
| 3405 |
|
ColorNumber = CS_TEK_BG; |
| 3406 |
|
break; |
| 3407 |
|
} |
| 3408 |
|
|
| 3409 |
|
switch (mode) { |
| 3410 |
|
case 4: |
| 3411 |
|
if ((ts.ColorFlag & CF_XTERM256) && ColorNumber <= 255) { |
| 3412 |
|
if (strcmp(ColorSpec, "?") == 0) { |
| 3413 |
|
color = DispGetColor(ColorNumber); |
| 3414 |
|
len =_snprintf_s_l(StrBuff, sizeof(StrBuff), _TRUNCATE, |
| 3415 |
|
"4;%d;rgb:%02x/%02x/%02x", CLocale, ColorNumber, |
| 3416 |
|
GetRValue(color), GetGValue(color), GetBValue(color)); |
| 3417 |
|
SendOSCstr(StrBuff, len); |
| 3418 |
|
} |
| 3419 |
|
else if (XsParseColor(ColorSpec, &color)) { |
| 3420 |
|
DispSetColor(ColorNumber, color); |
| 3421 |
|
} |
| 3422 |
|
} |
| 3423 |
|
break; |
| 3424 |
|
case 10: |
| 3425 |
|
case 11: |
| 3426 |
|
case 15: |
| 3427 |
|
case 16: |
| 3428 |
|
if (strcmp(ColorSpec, "?") == 0) { |
| 3429 |
|
color = DispGetColor(ColorNumber); |
| 3430 |
|
len =_snprintf_s_l(StrBuff, sizeof(StrBuff), _TRUNCATE, |
| 3431 |
|
"%d;rgb:%02x/%02x/%02x", CLocale, mode, |
| 3432 |
|
GetRValue(color), GetGValue(color), GetBValue(color)); |
| 3433 |
|
SendOSCstr(StrBuff, len); |
| 3434 |
|
} |
| 3435 |
|
else if (XsParseColor(ColorSpec, &color)) { |
| 3436 |
|
DispSetColor(ColorNumber, color); |
| 3437 |
|
} |
| 3438 |
|
break; |
| 3439 |
|
} |
| 3440 |
|
} |
| 3441 |
|
|
| 3442 |
#define ModeXsFirst 1 |
#define ModeXsFirst 1 |
| 3443 |
#define ModeXsString 2 |
#define ModeXsString 2 |
| 3444 |
#define ModeXsColorNum 3 |
#define ModeXsColorNum 3 |
| 3449 |
static BYTE XsParseMode = ModeXsFirst, PrevMode; |
static BYTE XsParseMode = ModeXsFirst, PrevMode; |
| 3450 |
static char StrBuff[sizeof(ts.Title)]; |
static char StrBuff[sizeof(ts.Title)]; |
| 3451 |
static unsigned int ColorNumber, StrLen; |
static unsigned int ColorNumber, StrLen; |
|
int len; |
|
|
COLORREF color; |
|
| 3452 |
|
|
| 3453 |
switch (XsParseMode) { |
switch (XsParseMode) { |
| 3454 |
case ModeXsFirst: |
case ModeXsFirst: |
| 3458 |
else if (b == ';') { |
else if (b == ';') { |
| 3459 |
StrBuff[0] = '\0'; |
StrBuff[0] = '\0'; |
| 3460 |
StrLen = 0; |
StrLen = 0; |
| 3461 |
if (Param[1] == 4) { |
switch (Param[1]) { |
| 3462 |
|
case 4: |
| 3463 |
ColorNumber = 0; |
ColorNumber = 0; |
| 3464 |
XsParseMode = ModeXsColorNum; |
XsParseMode = ModeXsColorNum; |
| 3465 |
} |
break; |
| 3466 |
else { |
case 10: |
| 3467 |
|
case 11: |
| 3468 |
|
case 15: |
| 3469 |
|
case 16: |
| 3470 |
|
XsParseMode = ModeXsColorSpec; |
| 3471 |
|
ColorNumber = 0; |
| 3472 |
|
StrBuff[0] = '\0'; |
| 3473 |
|
StrLen = 0; |
| 3474 |
|
break; |
| 3475 |
|
default: |
| 3476 |
XsParseMode = ModeXsString; |
XsParseMode = ModeXsString; |
| 3477 |
} |
} |
| 3478 |
} |
} |
| 3535 |
case ModeXsColorSpec: |
case ModeXsColorSpec: |
| 3536 |
if ((b==ST && Accept8BitCtrl && !(ts.Language==IdJapanese && ts.KanjiCode==IdSJIS)) || b==BEL) { /* String Terminator */ |
if ((b==ST && Accept8BitCtrl && !(ts.Language==IdJapanese && ts.KanjiCode==IdSJIS)) || b==BEL) { /* String Terminator */ |
| 3537 |
StrBuff[StrLen] = '\0'; |
StrBuff[StrLen] = '\0'; |
| 3538 |
if ((ts.ColorFlag & CF_XTERM256) && ColorNumber <= 255) { |
XsProcColor(Param[1], ColorNumber, StrBuff); |
|
if (strcmp(StrBuff, "?") == 0) { |
|
|
color = DispGetANSIColor(ColorNumber); |
|
|
len =_snprintf_s_l(StrBuff, sizeof(StrBuff), _TRUNCATE, |
|
|
"4;%d;rgb:%02x/%02x/%02x", CLocale, ColorNumber, |
|
|
GetRValue(color), GetGValue(color), GetBValue(color)); |
|
|
SendOSCstr(StrBuff, len); |
|
|
} |
|
|
else if (XsParseColor(StrBuff, &color)) { |
|
|
DispSetANSIColor(ColorNumber, color); |
|
|
} |
|
|
} |
|
| 3539 |
ParseMode = ModeFirst; |
ParseMode = ModeFirst; |
| 3540 |
XsParseMode = ModeXsFirst; |
XsParseMode = ModeXsFirst; |
| 3541 |
} |
} |
| 3549 |
} |
} |
| 3550 |
else if (b == ';') { |
else if (b == ';') { |
| 3551 |
StrBuff[StrLen] = '\0'; |
StrBuff[StrLen] = '\0'; |
| 3552 |
if ((ts.ColorFlag & CF_XTERM256) && ColorNumber <= 255) { |
XsProcColor(Param[1], ColorNumber, StrBuff); |
| 3553 |
if (strcmp(StrBuff, "?") == 0) { |
|
|
color = DispGetANSIColor(ColorNumber); |
|
|
len =_snprintf_s_l(StrBuff, sizeof(StrBuff), _TRUNCATE, |
|
|
"4;%d;rgb:%02x/%02x/%02x", CLocale, ColorNumber, |
|
|
GetRValue(color), GetGValue(color), GetBValue(color)); |
|
|
SendOSCstr(StrBuff, len); |
|
|
} |
|
|
else if (XsParseColor(StrBuff, &color)) { |
|
|
DispSetANSIColor(ColorNumber, color); |
|
|
} |
|
|
} |
|
| 3554 |
ColorNumber = 0; |
ColorNumber = 0; |
| 3555 |
StrBuff[0] = '\0'; |
StrBuff[0] = '\0'; |
| 3556 |
StrLen = 0; |
StrLen = 0; |
| 3557 |
XsParseMode = ModeXsColorNum; |
|
| 3558 |
|
switch (Param[1]) { |
| 3559 |
|
case 4: |
| 3560 |
|
XsParseMode = ModeXsColorNum; |
| 3561 |
|
break; |
| 3562 |
|
case 10: |
| 3563 |
|
case 11: |
| 3564 |
|
case 12: |
| 3565 |
|
case 13: |
| 3566 |
|
case 14: |
| 3567 |
|
case 15: |
| 3568 |
|
case 16: |
| 3569 |
|
case 17: |
| 3570 |
|
XsParseMode = ModeXsColorSpec; |
| 3571 |
|
Param[1]++; |
| 3572 |
|
break; |
| 3573 |
|
default: |
| 3574 |
|
XsParseMode = ModeXsString; |
| 3575 |
|
Param[1] = 0xFFFFFFFF; |
| 3576 |
|
break; |
| 3577 |
|
} |
| 3578 |
} |
} |
| 3579 |
else if (StrLen < sizeof(StrBuff) - 1) { |
else if (StrLen < sizeof(StrBuff) - 1) { |
| 3580 |
StrBuff[StrLen++] = b; |
StrBuff[StrLen++] = b; |