int video_canvas_set_palette(video_canvas_t *c, struct palette_s *palette) { #ifdef HAVE_XVIDEO /* Apply color settings to XVideo. */ if (c->videoconfig->hwscale && c->xv_image) { int i; Display *dpy = x11ui_get_display_ptr(); for (i = 0; i < (int)(sizeof(xv_settings) / sizeof(xv_settings[0])); i++) { /* Map from VICE [0,2000] to XVideo [xv_min, xv_max]. */ int v_min = 0, v_max = 2000; int v_zero = (v_min + v_max) / 2; int v_range = v_max - v_min; int xv_zero = (xv_settings[i].min + xv_settings[i].max) / 2; int xv_range = xv_settings[i].max - xv_settings[i].min; int xv_val = (*xv_settings[i].value - v_zero) * xv_range / v_range + xv_zero; if (!xv_settings[i].atom) { continue; } XvSetPortAttribute(dpy, c->xv_port, xv_settings[i].atom, xv_val); } } #endif c->palette = palette; return uicolor_set_palette(c, palette); }
/* set it, update if we know the endianness required by the image */ int video_canvas_set_palette(video_canvas_t *canvas, struct palette_s *palette) { if (palette == NULL) { return 0; /* no palette, nothing to do */ } canvas->palette = palette; return uicolor_set_palette(canvas, canvas->palette); }
int uicolor_alloc_colors(video_canvas_t *c) { int i; drive_led_off_pixel.red = 0; drive_led_off_pixel.green = 0; drive_led_off_pixel.blue = 0; drive_led_on_red_pixel.red = 0xff00; drive_led_on_red_pixel.green = 0; drive_led_on_red_pixel.blue = 0; drive_led_on_green_pixel.red = 0; drive_led_on_green_pixel.green = 0xff00; drive_led_on_green_pixel.blue = 0; motor_running_pixel.red = 0xff00; motor_running_pixel.green = 0xff00; motor_running_pixel.blue = 0x7f00; tape_control_pixel.red = 0xaf00; tape_control_pixel.green = 0xaf00; tape_control_pixel.blue = 0xaf00; /* different colors intensities for drive leds */ for (i = 0; i < 16; i++) { drive_led_on_red_pixels[i].red = 0x1000*i + 0xf00; drive_led_on_red_pixels[i].green = 0; drive_led_on_red_pixels[i].blue = 0; drive_led_on_green_pixels[i].red = 0; drive_led_on_green_pixels[i].green = 0x1000*i + 0xf00; drive_led_on_green_pixels[i].blue = 0; } return uicolor_set_palette(c, c->palette); }