static void init_colors (void) { int i; if (need_dither) { setup_dither (bitdepth, get_color); } else { int rw = 5, gw = 5, bw = 5; colors_allocated = 0; if (currprefs.color_mode == 2) gw = 6; switch (gfxvidinfo.pixbytes) { case 4: alloc_colors64k (8, 8, 8, 16, 8, 0, 0, 0, 0, 0); break; case 2: alloc_colors64k (rw, gw, bw, gw+bw, bw, 0, 0, 0, 0, 0); break; case 1: alloc_colors256 (get_color); break; default: abort(); } } }
static int init_colors (void) { if (visualInfo.VI_CLASS == TrueColor) { red_bits = bitsInMask (visualInfo.red_mask); green_bits = bitsInMask (visualInfo.green_mask); blue_bits = bitsInMask (visualInfo.blue_mask); red_shift = maskShift (visualInfo.red_mask); green_shift = maskShift (visualInfo.green_mask); blue_shift = maskShift (visualInfo.blue_mask); } if (need_dither) { if (bitdepth == 1) setup_greydither (1, get_color); else setup_dither (bitdepth, get_color); } else { if (bitdepth != 8 && bitdepth != 12 && bitdepth != 15 && bitdepth != 16 && bitdepth != 24) { write_log ("Unsupported bit depth (%d)\n", bitdepth); return 0; } switch (visualInfo.VI_CLASS) { case TrueColor: alloc_colors64k (red_bits, green_bits, blue_bits, red_shift, green_shift, blue_shift, 0, 0, 0, inverse_byte_order); XParseColor (display, cmap, "#000000", &black); if (! XAllocColor (display, cmap, &black)) write_log ("Whoops??\n"); XParseColor (display, cmap, "#ffffff", &white); if (! XAllocColor (display, cmap, &white)) write_log ("Whoops??\n"); break; case GrayScale: case PseudoColor: alloc_colors256 (get_color); break; default: write_log ("Unsupported visual class (%d)\n", visualInfo.VI_CLASS); return 0; } } return 1; }
static void init_colors (void) { int i; if (need_dither) { setup_dither (bitdepth, get_color); } else { int rw = 5, gw = 5, bw = 5; colors_allocated = 0; if (currprefs.color_mode == 2) gw = 6; switch (gfxvidinfo.pixbytes) { case 4: alloc_colors64k (8, 8, 8, 16, 8, 0); break; case 2: alloc_colors64k (rw, gw, bw, gw+bw, bw, 0); break; case 1: alloc_colors256 (get_color); break; default: abort(); } } switch (gfxvidinfo.pixbytes) { case 2: for (i = 0; i < 4096; i++) xcolors[i] = xcolors[i] * 0x00010001; gfxvidinfo.can_double = 1; break; case 1: for (i = 0; i < 4096; i++) xcolors[i] = xcolors[i] * 0x01010101; gfxvidinfo.can_double = 1; break; default: gfxvidinfo.can_double = 0; break; } }