Пример #1
0
static void update_bg()
{
	if (currootpmap != *rootpmap && *rootpmap != 0) {
		currootpmap = *rootpmap;
		imlib_context_set_drawable(currootpmap);
		if (bg) {
			imlib_context_set_image(bg);
			imlib_free_image();
		}
		bg = imlib_create_image_from_drawable(0, bbx, bby, bbwidth, bbheight, 1);

		Pixmap tile, mask;
		imlib_context_set_display(bbdpy);
		imlib_context_set_visual(bbvis);
		imlib_context_set_drawable(bbwin);
		imlib_context_set_image(bg);
		
		Imlib_Image tmpbg = imlib_clone_image();
		tile_image_blend(tmpbg, theme->tile_img, 0, bbwidth);
		imlib_render_pixmaps_for_whole_image(&tile, &mask);
		XSetWindowBackgroundPixmap(bbdpy, bbwin, tile);
		imlib_free_pixmap_and_mask(tile);
		imlib_free_image();
	}
}
Пример #2
0
static void set_bg()
{
		Pixmap tile, mask;
		imlib_context_set_display(bbdpy);
		imlib_context_set_visual(bbvis);
		imlib_context_set_drawable(bbwin);
		
		imlib_context_set_image(theme->tile_img);
		imlib_render_pixmaps_for_whole_image(&tile, &mask);
		XSetWindowBackgroundPixmap(bbdpy, bbwin, tile);
		imlib_free_pixmap_and_mask(tile);
}
Пример #3
0
void XImlib2Caption::draw()
{
        XDesktopContainer * xContainer =
			dynamic_cast<XDesktopContainer *>(AbstractImage::container);
	XIconWithShadow * sIcon = dynamic_cast<XIconWithShadow *>(AbstractImage::iconParent);

        Display * display = xContainer->getDisplay();
    
	int fX, fY;
    
	setXY(fX, fY);
	
	Imlib_Image cropImage = xContainer->bg->createCropImage(fX, fY, width, height, width, height);
	
	imlib_context_set_image(cropImage);
	
	imlib_context_set_drawable(window);
	imlib_render_image_on_drawable(0, 0);
	
	Pixmap shapeMask;
	imlib_render_pixmaps_for_whole_image (&pixmap, &shapeMask);
	XSetWindowBackgroundPixmap (display, window, pixmap);
	imlib_free_image();
	
	imlib_context_set_drawable(xContainer->getRootWindow());

       	imlib_context_set_image(xContainer->bg->spareRoot);
    
    // if the icon shadow is enabled and the shadow is visible underneath the
    // text window
	if (sIcon && //TODO Fix this
		   sIcon->getShadowX() > fX - sIcon->getWidth() &&
		   sIcon->getShadowY() > fY - sIcon->getHeight() &&
		   sIcon->getShadowX() < fX + sIcon->getWidth() &&
		   sIcon->getShadowY() < fY + sIcon->getHeight() )
		sIcon->renderShadowToImage(pixmap, fX, fY);

	updateText();

	XMoveWindow(display, window, fX, fY );
    
        //apply the buffer to the window
	XSetFillStyle(display, gc, FillTiled);
	XSetTile(display, gc, pixmap);
	XFillRectangle(display, window, gc, 0, 0, width, height);
	imlib_free_pixmap_and_mask(pixmap);
}
Пример #4
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);
}
Пример #5
0
static
void mainwin_update_bg_pixmap(MainWin *mw)
{
	Imlib_Image tmp;
	XSetWindowAttributes wattr;
	Pixmap dummy;
	
	if(mw->bg_pixmap != None)
		imlib_free_pixmap_and_mask(mw->bg_pixmap);
	
	imlib_context_set_image(mw->background);
	tmp = imlib_create_cropped_image(mw->x, mw->y, mw->width, mw->height);
	imlib_context_set_image(tmp);
	
	imlib_context_set_drawable(mw->window);
	imlib_render_pixmaps_for_whole_image(&mw->bg_pixmap, &dummy);
	
	wattr.background_pixmap = mw->bg_pixmap;
	XChangeWindowAttributes(mw->dpy, mw->window, CWBackPixmap, &wattr);
	XClearArea(mw->dpy, mw->window, 0, 0, 0, 0, False);
	
	imlib_free_image();
}
Пример #6
0
void
window_fade_imlib2(Rwindow_t *window, struct R_image *image, int usecs, int mode)
{
    double value, lastvalue;
    struct R_image *scaledimage;
    Imlib_Color_Modifier colormod;
    Pixmap pixmap;
    Pixmap mask;
    struct timeval start, stop;
    int usedtime;
    XWindowAttributes attributes;

    if (window == NULL
	|| image == NULL) {

	return;
    }

    if (mode == WINDOW_FADE_IN) {
	value = 0.0;
    } else {
	value = 1.0;
    }
    lastvalue = -1.0;
    usedtime = 0;
    memset(&attributes, 0, sizeof(attributes));
    XGetWindowAttributes(window->app->display, window->win, &attributes);
    scaledimage = image_clone_imlib2(window->win,
				     image,
				     attributes.width, attributes.height);
    if (scaledimage == NULL) {

	return;
    }
    colormod = imlib_create_color_modifier();
    if (colormod == NULL) {
	image_destroy_imlib2(scaledimage);

	return;
    }
    imlib_context_set_drawable(window->win);
    imlib_context_set_image(scaledimage->im2img);
    imlib_context_set_color_modifier(colormod);
    imlib_modify_color_modifier_gamma(1.0);
    imlib_modify_color_modifier_contrast(1.0);
    gettimeofday(&start, NULL);
    while (usedtime < usecs) {
	if (value != lastvalue) {
	    imlib_modify_color_modifier_brightness(value);
	    imlib_context_set_mask(0);
	    imlib_render_pixmaps_for_whole_image(&pixmap, &mask);
	    XSetWindowBackgroundPixmap(window->app->display,
				       window->win,
				       pixmap);
	    XClearWindow(window->app->display,
			 window->win);
	    XFlush(window->app->display);
	    imlib_free_pixmap_and_mask(pixmap);
	    lastvalue = value;
	}
	gettimeofday(&stop, NULL);
	usedtime = TIMEVAL_CMP_USEC(&start, &stop);
	value = IMAGE_NORMAL_MODIFIER * (usedtime / (double)usecs);
	if (mode == WINDOW_FADE_OUT) {
	    value = IMAGE_NORMAL_MODIFIER - value;
	}
    }
    if (mode == WINDOW_FADE_IN
	&& lastvalue != IMAGE_NORMAL_MODIFIER) {
	imlib_modify_color_modifier_brightness(IMAGE_NORMAL_MODIFIER);
	imlib_context_set_mask(0);
	imlib_render_pixmaps_for_whole_image(&pixmap, &mask);
	XSetWindowBackgroundPixmap(window->app->display,
				   window->win,
				   pixmap);
	XClearWindow(window->app->display,
		     window->win);
	XFlush(window->app->display);
	    imlib_free_pixmap_and_mask(pixmap);
    } else if (lastvalue != 0.0) {
	imlib_modify_color_modifier_brightness(0.0);
	imlib_context_set_mask(0);
	imlib_render_pixmaps_for_whole_image(&pixmap, &mask);
	XSetWindowBackgroundPixmap(window->app->display,
				   window->win,
				   pixmap);
	XClearWindow(window->app->display,
		     window->win);
	XFlush(window->app->display);
	imlib_free_pixmap_and_mask(pixmap);
    }
    image_destroy_imlib2(scaledimage);

    return;
}