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(); } }
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); }
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); }
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); }
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(); }
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; }