diff options
Diffstat (limited to 'utils/logo.c')
-rw-r--r-- | utils/logo.c | 52 |
1 files changed, 27 insertions, 25 deletions
diff --git a/utils/logo.c b/utils/logo.c index 9e3078f..ef6ba95 100644 --- a/utils/logo.c +++ b/utils/logo.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2001-2006 Jamie Zawinski <jwz@jwz.org> +/* xscreensaver, Copyright © 2001-2021 Jamie Zawinski <jwz@jwz.org> * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -21,13 +21,13 @@ #include "utils.h" #include "resources.h" -#include "visual.h" #include "minixpm.h" #include <stdio.h> #include "images/logo-50.xpm" #include "images/logo-180.xpm" +#include "images/logo-360.xpm" /* Returns a pixmap of the xscreensaver logo. */ @@ -37,39 +37,41 @@ xscreensaver_logo (Screen *screen, Visual *visual, unsigned long background_color, unsigned long **pixels_ret, int *npixels_ret, Pixmap *mask_ret, - Bool big_p) + int size) { Display *dpy = DisplayOfScreen (screen); - int depth = visual_depth (screen, visual); - int iw, ih; + int x, y; + unsigned int w, h, bw; + Window root; XImage *image; Pixmap p = 0; unsigned char *mask = 0; + unsigned int depth; + XGCValues gcv; + GC gc; + + XGetGeometry (dpy, drawable, &root, &x, &y, &w, &h, &bw, &depth); image = minixpm_to_ximage (dpy, visual, cmap, depth, background_color, - (big_p ? logo_180_xpm : logo_50_xpm), - &iw, &ih, pixels_ret, npixels_ret, + (size == 0 ? logo_50_xpm : + size == 1 ? logo_180_xpm : logo_360_xpm), + &w, &h, pixels_ret, npixels_ret, (mask_ret ? &mask : 0)); + if (! image) return 0; - if (image) - { - XGCValues gcv; - GC gc; - p = XCreatePixmap (dpy, drawable, iw, ih, depth); - gc = XCreateGC (dpy, p, 0, &gcv); - XPutImage (dpy, p, gc, image, 0, 0, 0, 0, iw, ih); - free (image->data); - image->data = 0; - XDestroyImage (image); - XFreeGC (dpy, gc); + p = XCreatePixmap (dpy, drawable, w, h, depth); + gc = XCreateGC (dpy, p, 0, &gcv); + XPutImage (dpy, p, gc, image, 0, 0, 0, 0, w, h); + XDestroyImage (image); + XFreeGC (dpy, gc); - if (mask_ret && mask) - { - *mask_ret = (Pixmap) - XCreatePixmapFromBitmapData (dpy, drawable, (char *) mask, - iw, ih, 1L, 0L, 1); - free (mask); - } + if (mask_ret && mask) + { + *mask_ret = (Pixmap) + XCreatePixmapFromBitmapData (dpy, drawable, (char *) mask, + w, h, 1, 0, 1); + free (mask); } + return p; } |