Exemple #1
0
void winwidget_setup_pixmaps(winwidget winwid)
{
	if (winwid->full_screen) {
		if (!(winwid->bg_pmap)) {
			if (winwid->gc == None) {
				XGCValues gcval;

				if (!opt.image_bg || !strcmp(opt.image_bg, "default")) {
					gcval.foreground = BlackPixel(disp, DefaultScreen(disp));
					winwid->gc = XCreateGC(disp, winwid->win, GCForeground, &gcval);
				} else if (!strcmp(opt.image_bg, "checks")) {
					gcval.tile = feh_create_checks();
					gcval.fill_style = FillTiled;
					winwid->gc = XCreateGC(disp, winwid->win, GCTile | GCFillStyle, &gcval);
				} else {
					XColor color;
					Colormap cmap = DefaultColormap(disp, DefaultScreen(disp));
					XAllocNamedColor(disp, cmap, (char*) opt.image_bg, &color, &color);
					gcval.foreground = color.pixel;
					winwid->gc = XCreateGC(disp, winwid->win, GCForeground, &gcval);
				}
			}
			winwid->bg_pmap = XCreatePixmap(disp, winwid->win, scr->width, scr->height, depth);
		}
		XFillRectangle(disp, winwid->bg_pmap, winwid->gc, 0, 0, scr->width, scr->height);
	} else {
		if (!winwid->bg_pmap || winwid->had_resize) {
			D(("recreating background pixmap (%dx%d)\n", winwid->w, winwid->h));
			if (winwid->bg_pmap)
				XFreePixmap(disp, winwid->bg_pmap);

			if (winwid->w == 0)
				winwid->w = 1;
			if (winwid->h == 0)
				winwid->h = 1;
			winwid->bg_pmap = XCreatePixmap(disp, winwid->win, winwid->w, winwid->h, depth);
			winwid->had_resize = 0;
		}
	}
	return;
}
Exemple #2
0
void winwidget_setup_pixmaps(winwidget winwid)
{
	if (winwid->full_screen) {
		if (!(winwid->bg_pmap)) {
			if (winwid->gc == None) {
				XGCValues gcval;

				if (opt.image_bg == IMAGE_BG_WHITE) {
					gcval.foreground = WhitePixel(disp, DefaultScreen(disp));
					winwid->gc = XCreateGC(disp, winwid->win, GCForeground, &gcval);
				}
				else if (opt.image_bg == IMAGE_BG_CHECKS) {
					gcval.tile = feh_create_checks();
					gcval.fill_style = FillTiled;
					winwid->gc = XCreateGC(disp, winwid->win, GCTile | GCFillStyle, &gcval);
				}
				else {
					gcval.foreground = BlackPixel(disp, DefaultScreen(disp));
					winwid->gc = XCreateGC(disp, winwid->win, GCForeground, &gcval);
				}
			}
			winwid->bg_pmap = XCreatePixmap(disp, winwid->win, scr->width, scr->height, depth);
		}
		XFillRectangle(disp, winwid->bg_pmap, winwid->gc, 0, 0, scr->width, scr->height);
	} else {
		if (!winwid->bg_pmap || winwid->had_resize) {
			D(("recreating background pixmap (%dx%d)\n", winwid->w, winwid->h));
			if (winwid->bg_pmap)
				XFreePixmap(disp, winwid->bg_pmap);

			if (winwid->w == 0)
				winwid->w = 1;
			if (winwid->h == 0)
				winwid->h = 1;
			winwid->bg_pmap = XCreatePixmap(disp, winwid->win, winwid->w, winwid->h, depth);
			winwid->had_resize = 0;
		}
	}
	return;
}