http://www.jwz.org/xscreensaver/xscreensaver-5.12.tar.gz
[xscreensaver] / hacks / webcollage-helper-cocoa.m
index 05f95c4e2002f66b7253019e64cb1123d680e724..6c6e9d2ba236039ee2deff34cb7deedaabf701c7 100644 (file)
@@ -1,5 +1,5 @@
 /* webcollage-helper-cocoa --- scales and pastes one image into another
- * xscreensaver, Copyright (c) 2002-2006 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 2002-2009 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
 #include <unistd.h>
 #include <sys/stat.h>
 
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4
+ typedef int          NSInteger;
+ typedef unsigned int NSUInteger;
+#endif
+
+
 char *progname;
 static int verbose_p = 0;
 
@@ -142,7 +149,7 @@ bevel_image (NSImage *img, int bevel_pct,
                    bytesPerRow: 0
                   bitsPerPixel: 0];
 
-  int xx, yy;
+  NSInteger xx, yy;
   double *ramp = (double *) malloc (sizeof(*ramp) * (bevel_size + 1));
 
   if (!ramp)
@@ -183,7 +190,7 @@ bevel_image (NSImage *img, int bevel_pct,
           r = rx * ry;
           if (r != 1)
             {
-              unsigned int p[4];
+              NSUInteger p[4];
               p[0] = 0xFF * r;
               p[1] = p[2] = p[3] = 0xFF;
               [rep setPixel:p atX:xx y:yy];
@@ -207,6 +214,7 @@ bevel_image (NSImage *img, int bevel_pct,
                 fraction: 1.0];
   [img unlockFocus];
 
+  [rep release];
   [bevel_img release];
 
   if (verbose_p)
@@ -240,7 +248,7 @@ paste (const char *paste_file,
                progname, paste_file, paste_w, paste_h);
     }
 
-  if (bevel_pct > 0)
+  if (bevel_pct > 0 && paste_w > 5 && paste_h > 5)
     bevel_image (paste_img, bevel_pct,
                  from_x, from_y, w, h, 
                  from_scale);
@@ -296,7 +304,8 @@ write_image (NSImage *img, const char *file)
                                properties:props];
 
   [jpeg_data writeToFile:
-               [NSString stringWithCString:file]
+               [NSString stringWithCString:file
+                                  encoding:NSISOLatin1StringEncoding]
              atomically:YES];
 
   if (verbose_p)
@@ -366,7 +375,7 @@ main (int argc, char **argv)
   s = argv[i++]; if (1 != sscanf (s, " %d %c", &to_x, &dummy)) usage();
   s = argv[i++]; if (1 != sscanf (s, " %d %c", &to_y, &dummy)) usage();
   s = argv[i++]; if (1 != sscanf (s, " %d %c", &w, &dummy)) usage();
-  s = argv[i++]; if (1 != sscanf (s, " %d %c", &h, &dummy)) usage();
+  s = argv[i];   if (1 != sscanf (s, " %d %c", &h, &dummy)) usage();
 
   bevel_pct = 10; /* #### */