void img_invert(img_t *img){ /* the code here is almost verbatim taken from Julien Danjou's telak. */ int i; DATA8 r_table[256]; DATA8 g_table[256]; DATA8 b_table[256]; DATA8 a_table[256]; Imlib_Color_Modifier color_mod; imlib_context_set_image(img->im); color_mod = imlib_create_color_modifier(); imlib_context_set_color_modifier(color_mod); imlib_reset_color_modifier(); imlib_get_color_modifier_tables(r_table, g_table, b_table, a_table); for(i = 0; i <= 255; i++) { r_table[255-i] = i; g_table[255-i] = i; b_table[255-i] = i; } imlib_set_color_modifier_tables(r_table, g_table, b_table, a_table); }
static void img_apply_gamma(img_t *img) { if (img == NULL || img->im == NULL || img->cmod == NULL) return; if (img->gamma == 0) { imlib_context_set_color_modifier(NULL); } else { double range = img->gamma <= 0 ? 1.0 : GAMMA_MAX - 1.0; imlib_context_set_color_modifier(img->cmod); imlib_reset_color_modifier(); imlib_modify_color_modifier_gamma(1.0 + img->gamma * (range / GAMMA_RANGE)); } }
void XImlib2Image::applyMouseOverEffects() { if (glowChange) { imlib_context_set_color_modifier(colorMod); imlib_get_color_modifier_tables(mapNone, mapNone, mapNone, NULL); imlib_reset_color_modifier(); if (glowing == true) // reset to standard alpha mapping imlib_set_color_modifier_tables(mapNone, mapNone, mapNone, mapNone); else // remap alpha values lower to increase transparency imlib_set_color_modifier_tables(mapNone, mapNone, mapNone, defaultTransTable); glowChange = false; } }
static void setup_imlib_color_modifier(qiv_color_modifier q) { if (q.gamma == DEFAULT_GAMMA && q.brightness == DEFAULT_BRIGHTNESS && q.contrast == DEFAULT_CONTRAST) { if (imlib_context_get_color_modifier()) imlib_free_color_modifier(); return; } if (imlib_context_get_color_modifier()) imlib_reset_color_modifier(); else imlib_context_set_color_modifier(imlib_create_color_modifier()); imlib_modify_color_modifier_gamma(q.gamma / 256.0); imlib_modify_color_modifier_brightness((q.brightness - 256) / 256.0); imlib_modify_color_modifier_contrast(q.contrast / 256.0); }
void XImlib2Image::shapeWindow() { XDesktopContainer * xContainer = dynamic_cast<XDesktopContainer *>(container); //Shape the window to the icon imlib_context_set_image(image); imlib_context_set_color_modifier(colorMod); imlib_set_color_modifier_tables(mapNone, mapNone, mapNone, mapZeroAlpha); Pixmap pixmap, pixMask; imlib_render_pixmaps_for_whole_image(&pixmap, &pixMask); XSetWindowBackgroundPixmap (display, window, pixmap); #ifdef SHAPE XShapeCombineMask(display, window, ShapeBounding, 0, 0, pixMask, ShapeSet); #endif // SHAPE imlib_reset_color_modifier(); imlib_free_pixmap_and_mask(pixmap); }