/* 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;
bytesPerRow: 0
bitsPerPixel: 0];
- int xx, yy;
+ NSInteger xx, yy;
double *ramp = (double *) malloc (sizeof(*ramp) * (bevel_size + 1));
if (!ramp)
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];
fraction: 1.0];
[img unlockFocus];
+ [rep release];
[bevel_img release];
if (verbose_p)
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);
properties:props];
[jpeg_data writeToFile:
- [NSString stringWithCString:file]
+ [NSString stringWithCString:file
+ encoding:NSISOLatin1StringEncoding]
atomically:YES];
if (verbose_p)
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; /* #### */
if (w < 0) usage();
if (h < 0) usage();
+ if (w == 0 || h == 0 ||
+ w > 10240 || h > 10240) {
+ fprintf (stderr, "%s: absurd size: %d x %d\n", progname, w, h);
+ exit (1);
+ }
+
// Much of Cocoa needs one of these to be available.
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];