Ejemplo n.º 1
0
void truecolor_create_tables(void)
{
    pixel_t *table;
    pixel_t pixel;
    u32 i;

    /* Truecolor */
    CREATE_COMPONENT_TABLE(red, red);
    CREATE_COMPONENT_TABLE(green, green);
    CREATE_COMPONENT_TABLE(blue, blue);
    CREATE_COMPONENT_TABLE(alpha, transp);

    /* Grayscale */
    gray_bits = min(min(red_bits, green_bits), blue_bits);
    gray_len = 1<<gray_bits;
    table = malloc(gray_len*sizeof(pixel_t));
    for (i = 0; i < gray_len; i++) {
	pixel = rgb_pixel(CONVERT_RANGE(i, gray_len-1, red_len-1),
			  CONVERT_RANGE(i, gray_len-1, green_len-1),
			  CONVERT_RANGE(i, gray_len-1, blue_len-1));
	table[i] = pixel;
    }
    gray_pixel = table;

    /* Monochrome */
    black_pixel = rgb_pixel(0, 0, 0);
    white_pixel = rgb_pixel(red_len-1, green_len-1, blue_len-1);

    /* Pseudocolor emulation */
    idx_bits = min(red_bits+green_bits+blue_bits, 9);
    idx_len = 1<<idx_bits;
    idx_pixel = truecolor_idx_pixel = malloc(idx_len*sizeof(pixel_t));
    clut = malloc(idx_len*sizeof(rgba_t));
    clut_init_nice();
}
Ejemplo n.º 2
0
Archivo: bn.c Proyecto: sh19910711/webn
/* 初期化 */
static inline void init_bn(void) {
    if (initscr() == NULL){
        fprintf(stderr, "initscr failure\n");
        exit(EXIT_FAILURE);
    }

    /* 端末が色の使用と変更が可能なら設定 */
    start_color();

    /* 色の初期化 */
    /* 色番号(1 ~ COLORSの間とする) r, g, b, それぞれ0~1000の範囲 */
    init_color(BN_COLOR_RED,    CONVERT_RANGE(215), CONVERT_RANGE(0),   CONVERT_RANGE(58));
    init_color(BN_COLOR_GREEN,  CONVERT_RANGE(56),  CONVERT_RANGE(180), CONVERT_RANGE(139));
    init_color(BN_COLOR_BLUE,   CONVERT_RANGE(44),  CONVERT_RANGE(169), CONVERT_RANGE(225));
    init_color(BN_COLOR_BLACK,   CONVERT_RANGE(43),  CONVERT_RANGE(43),  CONVERT_RANGE(43));

    /* 前景と背景のペアを作成 */
    /* 色番号(1 ~ COLOR_PAIRS-1の範囲であること) 前景 背景 */
    init_pair(BN_COLOR_PAIR_WG, COLOR_WHITE, BN_COLOR_BLACK);
    init_pair(BN_COLOR_PAIR_BG, BN_COLOR_BLUE, BN_COLOR_BLACK);
    init_pair(BN_COLOR_PAIR_GG, BN_COLOR_GREEN, BN_COLOR_BLACK);

    if (SIG_ERR == signal(SIGQUIT, signal_handler)) {
        fprintf(stderr, "setting signal handler failure\n");
        endwin();
        exit(EXIT_FAILURE);
    }

    /* シグナルを無視する */
    signal(SIGINT, SIG_IGN);
    /* キー入力された文字を表示しない */
    noecho();
    /* カーソルを表示しない */
    leaveok(stdscr, TRUE);
    /* スクロールしない */
    scrollok(stdscr, FALSE);
    /* カーソルを非表示に */
    curs_set(0);
    timeout(0);
    keypad(stdscr, TRUE);

}