X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=utils%2Fcolorbars.c;h=61e001201ceb6ece91066c319c7e2dccb967dbb8;hb=49f5b54f312fe4ac2e9bc47581a72451bd0e8439;hp=fc2952678d53d5a06c3f1e001895bb8aca667031;hpb=585e1a6717d1dd9b90fbb53acaaae82106354d33;p=xscreensaver diff --git a/utils/colorbars.c b/utils/colorbars.c index fc295267..61e00120 100644 --- a/utils/colorbars.c +++ b/utils/colorbars.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2001 Jamie Zawinski +/* xscreensaver, Copyright (c) 2001, 2003 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -53,18 +53,28 @@ static const int heights[7] = { 63, 10, 1, 5, 5, 1, 15 }; /* percentages */ void -draw_colorbars (Display *dpy, Window window, +draw_colorbars (Screen *screen, Visual *visual, + Drawable drawable, Colormap cmap, int x, int y, int width, int height) { + Display *dpy = DisplayOfScreen (screen); int oy = y; int ypct = 0; int j; XGCValues gcv; - GC gc = XCreateGC (dpy, window, 0, &gcv); - Colormap cmap; - XWindowAttributes xgwa; - XGetWindowAttributes (dpy, window, &xgwa); - cmap = xgwa.colormap; + GC gc = XCreateGC (dpy, drawable, 0, &gcv); + + if (width <= 0 || height <= 0) + { + Window root; + int xx, yy; + unsigned int bw, d; + XGetGeometry (dpy, drawable, + &root, &xx, &yy, + (unsigned int *) &width, + (unsigned int *) &height, + &bw, &d); + } for (j = 0; j < sizeof(colors) / sizeof(*colors); j++) { @@ -88,7 +98,7 @@ draw_colorbars (Display *dpy, Window window, if (!XAllocColor (dpy, cmap, &xcolor)) continue; XSetForeground (dpy, gc, xcolor.pixel); - XFillRectangle (dpy, window, gc, x1, y, w, h); + XFillRectangle (dpy, drawable, gc, x1, y, w, h); x1 = x2; } y = y2; @@ -102,26 +112,27 @@ draw_colorbars (Display *dpy, Window window, int npixels; unsigned long bg = ~0; Pixmap logo_mask = 0; - Pixmap logo_map = xscreensaver_logo (dpy, window, cmap, bg, + Pixmap logo_map = xscreensaver_logo (screen, visual, drawable, cmap, bg, &pixels, &npixels, &logo_mask, True); if (logo_map) { Window root; - int logo_width, logo_height; + unsigned int logo_width, logo_height; int w = width; int h = height * heights[0] / 100; - int x1, y1, bw, d; + int x1, y1; + unsigned int bw, d; XGetGeometry (dpy, logo_map, &root, &x1, &y1, &logo_width, &logo_height, &bw, &d); - x1 = x + (w - logo_width) / 2; - y1 = y + (h - logo_height) / 2; + x1 = x + (w - (int) logo_width) / 2; + y1 = y + (h - (int) logo_height) / 2; if (logo_mask) { XSetClipMask (dpy, gc, logo_mask); XSetClipOrigin (dpy, gc, x1, y1); } - XCopyArea (dpy, logo_map, window, gc, + XCopyArea (dpy, logo_map, drawable, gc, 0, 0, logo_width, logo_height, x1, y1); XFreePixmap (dpy, logo_map); if (logo_mask)