From http://www.jwz.org/xscreensaver/xscreensaver-5.37.tar.gz
[xscreensaver] / hacks / tessellimage.c
index d018f0cde4927ec531a693d815c401e0dc98049e..ec05fb98dbe27fe614ba8a592b785913f2d3afe8 100644 (file)
@@ -15,7 +15,7 @@
 #undef DO_VORONOI
 
 
-#ifndef HAVE_COCOA
+#ifndef HAVE_JWXYZ
 # define XK_MISCELLANY
 # include <X11/keysymdef.h>
 #endif
@@ -67,13 +67,11 @@ static void *
 tessellimage_init (Display *dpy, Window window)
 {
   struct state *st = (struct state *) calloc (1, sizeof(*st));
-  Colormap cmap;
 
   st->dpy = dpy;
   st->window = window;
 
   XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
-  cmap = st->xgwa.colormap;
 
   st->delay = get_integer_resource (st->dpy, "delay", "Integer");
   if (st->delay < 1) st->delay = 1;
@@ -118,10 +116,10 @@ decode_mask (unsigned int mask, unsigned int *pos_ret, unsigned int *size_ret)
 
 
 static unsigned long
-pixel_distance (Visual *v, unsigned long p1, unsigned long p2)
+pixel_distance (Screen *s, Visual *v, unsigned long p1, unsigned long p2)
 {
   static int initted_p = 0;
-  static unsigned int rmsk=0, gmsk=0, bmsk=0;
+  static unsigned long rmsk=0, gmsk=0, bmsk=0;
   static unsigned int rpos=0, gpos=0, bpos=0;
   static unsigned int rsiz=0, gsiz=0, bsiz=0;
 
@@ -132,9 +130,7 @@ pixel_distance (Visual *v, unsigned long p1, unsigned long p2)
   if (!p1 && !p2) return 0;
 
   if (! initted_p) {
-    rmsk = v->red_mask;
-    gmsk = v->green_mask;
-    bmsk = v->blue_mask;
+    visual_rgb_masks (s, v, &rmsk, &gmsk, &bmsk);
     decode_mask (rmsk, &rpos, &rsiz);
     decode_mask (gmsk, &gpos, &gsiz);
     decode_mask (bmsk, &bpos, &bsiz);
@@ -323,7 +319,8 @@ analyze (struct state *st)
           pixels[i++] = (x > 0 && y < h-1 ? XGetPixel (st->img, x-1, y+1) : 0);
 
           for (i = 1; i < countof(pixels); i++)
-            distance += pixel_distance (st->xgwa.visual, pixels[0], pixels[i]);
+            distance += pixel_distance (st->xgwa.screen, st->xgwa.visual,
+                                        pixels[0], pixels[i]);
           distance /= countof(pixels)-1;
           XPutPixel (st->delta, x, y, distance);
         }
@@ -782,15 +779,13 @@ get_deltap (struct state *st)
   XImage *dimg;
 
   Visual *v = st->xgwa.visual;
-  unsigned int rmsk=0, gmsk=0, bmsk=0;
+  unsigned long rmsk=0, gmsk=0, bmsk=0;
   unsigned int rpos=0, gpos=0, bpos=0;
   unsigned int rsiz=0, gsiz=0, bsiz=0;
 
   if (st->deltap) return st->deltap;
 
-  rmsk = v->red_mask;
-  gmsk = v->green_mask;
-  bmsk = v->blue_mask;
+  visual_rgb_masks (st->xgwa.screen, v, &rmsk, &gmsk, &bmsk);
   decode_mask (rmsk, &rpos, &rsiz);
   decode_mask (gmsk, &gpos, &gsiz);
   decode_mask (bmsk, &bpos, &bsiz);
@@ -932,7 +927,7 @@ static const char *tessellimage_defaults [] = {
   "*outline:                   True",
   "*fillScreen:                        True",
   "*cache:                     True",
-#ifdef USE_IPHONE
+#ifdef HAVE_MOBILE
   "*ignoreRotation:             True",
   "*rotateImages:               True",
 #endif