■ 文字の前景色・背景色を変更
/*
* 文字の前景色・背景色を変更
* (エスケープ文字を使う)
*
* 1999/??/?? 初版
* 2001/01/10 ここまで何回か修正
* 2006/11/01 大幅に書き直し
*
*/
#include <conio.h>
#ifdef LSI_C
/* カラー定数 */
enum COLORS {
BLACK, RED, GREEN, BROWN,
BLUE, MAGENTA, CYAN, LIGHTGRAY,
DARKGRAY, LIGHTRED, LIGHTGREEN, YELLOW,
LIGHTBLUE, LIGHTMAGENTA, LIGHTCYAN, WHITE
};
/* 画面消去 */
void clrscr(void)
{
cprintf("\x1b[2J");
}
/* カーソル位置移動 */
void gotoxy(int x, int y)
{
cprintf("\x1b[%d;%dH", y, x);
}
/* 表示色設定 */
void textattr(int c)
{
int fc = (c & 0x7) + 30;
int bc = (c >> 4 & 0x7) + 40;
cprintf("\x1b[0m");
if (c & 0x8) cprintf("\x1b[1m");
if (c & 0x80) cprintf("\x1b[5m");
cprintf("\x1b[%d;%dm", fc, bc);
}
#endif
/* テスト */
int main()
{
int i, j, k;
int colors[] = {
BLACK, BLUE, GREEN, CYAN,
RED, MAGENTA, BROWN, LIGHTGRAY,
DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN,
LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE
};
clrscr();
for (j = 0; j < 16; j++) {
for (i = 0; i < 16; i++) {
gotoxy(i * 4 + 1, j + 1);
k = colors[j] | colors[i] << 4;
textattr(k);
cprintf("[%02x]", k);
}
}
textattr(WHITE | BLACK << 4);
return 0;
}