예제 #1
0
파일: image.c 프로젝트: paradigm/sxiv
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);
}
예제 #2
0
파일: image.c 프로젝트: kkb7401/sxiv
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));
	}
}
예제 #3
0
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;
    }
}
예제 #4
0
파일: image.c 프로젝트: pts/pts-qiv
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);
}
예제 #5
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);
}