echo '' ; \
\
for EXT in tar.gz dmg ; do \
- OLDEST=`ls xscreensaver*.$$EXT | head -n 1` ; \
+ OLDEST=`ls xscreensaver*.$$EXT | \
+ fgrep -v 5.14 | \
+ head -n 1` ; \
/bin/echo -n "Delete $$DEST/$$OLDEST? "; \
read line; \
if [ "x$$line" = "xyes" -o "x$$line" = "xy" ]; then \
-/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2006-2013 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
- (id) initWithFrame:(NSRect)r inverted:(BOOL)_inv integers:(BOOL)_int;
+# ifdef USE_IPHONE
+- (double) transformedValue;
+- (void) setTransformedValue:(double)v;
+# endif
+
@end
-/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2006-2013 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
return v2;
}
--(double) doubleValue;
-{
-# ifdef USE_IPHONE
- return [self transformValue:[self value]];
-# else
- return [self transformValue:[super doubleValue]];
-# endif
-}
-
--(void) setDoubleValue:(double)v
-{
-# ifdef USE_IPHONE
- return [super setValue:[self transformValue:v]];
-# else
- return [super setDoubleValue:[self transformValue:v]];
-# endif
-}
-
-
-#ifdef USE_IPHONE
-
-- (void)setValue:(float)v animated:(BOOL)a
-{
- return [super setValue:[self transformValue:v] animated:a];
-}
-
+#ifndef USE_IPHONE
-/* Draw the thumb in the right place by also inverting its position
- relative to the track.
+/* On MacOS, we have to transform the value on every entry and exit point
+ to this class. So, we implement doubleValue and setDoubleValue to
+ transform the value; and we then have to re-implement every getter and
+ setter in terms of those. There's no way to simply change how the
+ slider is displayed without mucking with the value inside of it.
*/
-- (CGRect)thumbRectForBounds:(CGRect)bounds
- trackRect:(CGRect)rect
- value:(float)value
-{
- CGRect thumb = [super thumbRectForBounds:bounds trackRect:rect value:value];
- if (inverted)
- thumb.origin.x = rect.size.width - thumb.origin.x - thumb.size.width;
- return thumb;
-}
-
-#endif // !USE_IPHONE
-
-
-/* Implement all accessor methods in terms of "doubleValue" above.
- (Note that these normally exist only on MacOS, not on iOS.)
- */
-
--(float) floatValue;
+-(double) doubleValue
{
- return (float) [self doubleValue];
+ return [self transformValue:[super doubleValue]];
}
--(int) intValue;
+-(void) setDoubleValue:(double)v
{
- return (int) [self doubleValue];
+ return [super setDoubleValue:[self transformValue:v]];
}
--(id) objectValue;
-{
- return [NSNumber numberWithDouble:[self doubleValue]];
-}
+-(float)floatValue { return (float) [self doubleValue]; }
+-(int)intValue { return (int) [self doubleValue]; }
+-(NSInteger)integerValue { return (NSInteger) [self doubleValue]; }
+-(id)objectValue { return [NSNumber numberWithDouble:[self doubleValue]]; }
--(NSString *) stringValue;
+-(NSString *)stringValue
{
- return [NSString stringWithFormat:@"%f", [self floatValue]];
+ if (integers)
+ return [NSString stringWithFormat:@"%d", [self intValue]];
+ else
+ return [NSString stringWithFormat:@"%f", [self doubleValue]];
}
- (NSAttributedString *)attributedStringValue;
return [[NSAttributedString alloc] initWithString:[self stringValue]];
}
-
-/* Implment all setter methods in terms of "setDoubleValue", above.
- */
-
--(void) setFloatValue:(float)v
-{
- [self setDoubleValue:(double)v];
-}
-
--(void) setIntValue:(int)v
-{
- [self setDoubleValue:(double)v];
+-(void)setFloatValue:(float)v { [self setDoubleValue: (double) v]; }
+-(void)setIntValue: (int)v { [self setDoubleValue: (double) v]; }
+-(void)setIntegerValue:(NSInteger)v { [self setDoubleValue: (double) v]; }
+-(void)setStringValue:(NSString *)v { [self setDoubleValue: [v doubleValue]]; }
+-(void)takeIntValueFrom:(id)f { [self setIntValue: [f intValue]]; }
+-(void)takeFloatValueFrom:(id)f { [self setFloatValue: [f floatValue]]; }
+-(void)takeDoubleValueFrom:(id)f { [self setDoubleValue: [f doubleValue]]; }
+-(void)takeStringValueFrom:(id)f { [self setStringValue: [f stringValue]]; }
+-(void)takeObjectValueFrom:(id)f { [self setObjectValue: [f objectValue]]; }
+-(void)takeIntegerValueFrom:(id)f { [self setIntegerValue:[f integerValue]];}
+-(void) setAttributedStringValue:(NSAttributedString *)v {
+ [self setStringValue:[v string]];
}
-(void) setObjectValue:(id <NSCopying>)v
[self setDoubleValue:[((NSNumber *) v) doubleValue]];
}
--(void) setStringValue:(NSString *)v
+#else // USE_IPHONE
+
+/* On iOS, we have control over how the value is displayed, but there's no
+ way to transform the value on input and output: if we wrap 'value' and
+ 'setValue' analagously to what we do on MacOS, things fail in weird
+ ways. Presumably some parts of the system are accessing the value
+ instance variable directly instead of going through the methods.
+
+ So the only way around this is to enforce that all of our calls into
+ this object use a new API: 'transformedValue' and 'setTransformedValue'.
+ The code in XScreenSaverConfigSheet uses that instead.
+ */
+
+- (CGRect)thumbRectForBounds:(CGRect)bounds
+ trackRect:(CGRect)rect
+ value:(float)value
+{
+ CGRect thumb = [super thumbRectForBounds: bounds
+ trackRect: rect
+ value: [self transformValue:value]];
+ if (inverted)
+ thumb.origin.x = rect.size.width - thumb.origin.x - thumb.size.width;
+ return thumb;
+}
+
+-(double) transformedValue
{
- [self setDoubleValue:[v doubleValue]];
+ return [self transformValue: [self value]];
}
--(void) setAttributedStringValue:(NSAttributedString *)v
+-(void) setTransformedValue:(double)v
{
- [self setStringValue:[v string]];
+ [self setValue: [self transformValue: v]];
}
+#endif // USE_IPHONE
+
+
@end
-# XScreenSaver for MacOS X, Copyright (c) 2006-2012 by Jamie Zawinski.
+# XScreenSaver for MacOS X, Copyright (c) 2006-2013 by Jamie Zawinski.
XCODEBUILD = /usr/bin/xcodebuild
TARGETS = -target "All Savers"
clean:
-rm -rf build
-# cd ..; $(XCODEBUILD) -target $(TARGETS) clean
+# cd ..; $(XCODEBUILD) $(TARGETS) clean
distclean:
-rm -f config.status config.cache config.log \
release:: sign
sign:
- @for f in build/Release/*.{saver,app} ; do \
+ @for f in build/Release/*.app/Contents/*/*.saver \
+ build/Release/*.{saver,app} ; do \
codesign -vfs $(CERT) $$f ; \
done
# Arrrrgh
-ios_function_tables.h::
- @./build-fntable.pl build/Debug-iphoneos/XScreenSaver.app $@
+ios-function-table.m::
+ @./build-fntable.pl build/Debug-iphonesimulator/XScreenSaver.app $@
echo_tarfiles:
To build these programs, XCode 2.4 or later is required.
To run them, MacOS 10.4.0 or later is required.
+
+
+This is how you add a new screen saver to the Xcode project. It's a
+ridiculously long list of steps!
+
+ 1: Duplicate a target (Dangerball for GL, or Attraction for X11).
+ 2: Rename it, and drag it to the right spot in the list.
+ 3: Delete the dangerball.c and dangerball.xml files from the new target.
+ 4: Delete the "DangerBall copy-Info.plist" file that got created.
+ 5: Delete the "DangerBall copy-Info.plist" from the Build Settings too.
+ 6: Change PRODUCT_NAME in Build Settings.
+ 7: Manage Schemes, rename "DangerBall Copy".
+ 8: Move to the right place in the list.
+ 9: Scheme / Run: set SELECTED_SAVER environment variable.
+ 10: Scheme / Run / Info: Executable: SaverTester.app.
+ 11: File / Add Files / the new .c and .xml.
+ Add to targets: the new target, and also "XScreenSaver-iOS".
+ 12: Re-order them in the file list.
+ 13: In target "All Savers (OpenGL)" add the new target as a dependency.
+ 14: In target "XScreenSaver-iOS", reorder new files in "Copy" and "Compile".
+ 15: In target "XScreenSaver-iOS", add "-DUSE_GL" to the new file's options.
+ 16: Put a 200x150 screen shot in ~/www/xscreensaver/screenshots/
+ 17: ln -s ../../src/xscreensaver/OSX/build/Debug/NEW.saver \
+ ~/Library/Screen\ Savers/
+ 18: Build "XScreenSaver-iOS" once. then:
+ cd ~/src/xscreensaver/OSX ; make ios-function-table.m
+ and build it again.
+ 19: cvs add xscreensaver.xcodeproj/xcuserdata/*/xcschemes/*.xcscheme
+ 20: Don't forget to create a man page from the XML with xml2man.pl,
+ and update Makefile.in.
-/* xscreensaver, Copyright (c) 2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2012-2013 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
{
// Extract the version number and release date from the version string.
// Here's an area where I kind of wish I had "Two Problems".
+ // I guess I could add custom key to the Info.plist for this.
NSArray *a = [[NSString stringWithCString: screensaver_id
encoding:NSASCIIStringEncoding]
*/
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
+ if (motion != UIEventSubtypeMotionShake)
+ return;
NSMutableArray *a = [NSMutableArray arrayWithCapacity: 200];
for (NSArray *sec in letter_sections)
for (NSString *s in sec)
-/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2006-2013 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
GLuint gl_framebuffer, gl_renderbuffer;
IBOutlet UIView *view;
UIImage *saved_screenshot;
+ UIView *aboutBox;
+ NSTimer *splashTimer;
# endif // USE_IPHONE
}
- (void) loadSaver: (NSString *)name launch:(BOOL)launch;
- (void) loadSaver: (NSString *)name;
- (void) selectedSaverDidChange:(NSDictionary *)change;
+- (void) aboutPanel: (id)sender;
#ifndef USE_IPHONE
-- (void) aboutPanel: (id)sender;
- (void) openPreferences: (id)sender;
#else // USE_IPHONE
- (void) openPreferences: (NSString *)which;
-/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2006-2013 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
Second, it can be used to transform any screen saver into a standalone
program. Just put one (and only one) .saver bundle into the app
- bundle's Contents/PlugIns/ directory, and it will load and run that
+ bundle's Contents/Resources/ directory, and it will load and run that
saver at start-up (without the saver-selection menu or other chrome).
This is how the "Phosphor.app" and "Apple2.app" programs work.
initWithFrame:rect
saverName:module
isPreview:YES];
- if (! instance) return 0;
+ if (! instance) {
+ NSLog(@"Failed to instantiate %@ for \"%@\"", new_class, module);
+ return 0;
+ }
/* KLUGE: Inform the underlying program that we're in "standalone"
}
NSAssert (sv, @"no saver view");
+ if (!sv) return;
NSWindow *prefs = [sv configureSheet];
[NSApp beginSheet:prefs
- (void)loadSaver:(NSString *)name launch:(BOOL)launch
{
- // NSLog (@"selecting saver \"%@\"", name);
-
# ifndef USE_IPHONE
if (saverName && [saverName isEqualToString: name]) {
# else // USE_IPHONE
+# if TARGET_IPHONE_SIMULATOR
+ NSLog (@"selecting saver \"%@\"", name);
+# endif
+
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:name forKey:@"selectedSaverName"];
[prefs synchronize];
if (! backgroundView) {
// This view is the parent of the XScreenSaverView, and exists only
// so that there is a black background behind it. Without this, when
- // rotation is in progresss, the scrolling-list window's corners show
+ // rotation is in progress, the scrolling-list window's corners show
// through in the corners.
backgroundView = [[[NSView class] alloc] initWithFrame:[window frame]];
[backgroundView setBackgroundColor:[NSColor blackColor]];
[backgroundView addSubview: saverView];
[saverView becomeFirstResponder];
[saverView startAnimation];
+ [self aboutPanel:nil];
}
# endif // USE_IPHONE
}
}
-# ifndef USE_IPHONE
-
- (void)aboutPanel:(id)sender
{
+# ifndef USE_IPHONE
+
NSDictionary *bd = [saverBundle infoDictionary];
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:20];
[[NSApplication sharedApplication]
orderFrontStandardAboutPanelWithOptions:d];
-}
+# else // USE_IPHONE
+
+ NSString *name = saverName;
+ NSString *year = [self makeDesc:saverName yearOnly:YES];
+
+
+ CGRect frame = [saverView frame];
+ CGFloat rot;
+ CGFloat pt1 = 24;
+ CGFloat pt2 = 14;
+ UIFont *font1 = [UIFont boldSystemFontOfSize: pt1];
+ UIFont *font2 = [UIFont italicSystemFontOfSize:pt2];
+ CGSize tsize1 = [name sizeWithFont:font1
+ constrainedToSize:CGSizeMake(frame.size.width,
+ frame.size.height)];
+ CGSize tsize2 = [year sizeWithFont:font2
+ constrainedToSize:CGSizeMake(frame.size.width,
+ frame.size.height)];
+ CGSize tsize = CGSizeMake (tsize1.width > tsize2.width ?
+ tsize1.width : tsize2.width,
+ tsize1.height + tsize2.height);
+
+ // Don't know how to find inner margin of UITextView.
+ CGFloat margin = 10;
+ tsize.width += margin * 4;
+ tsize.height += margin * 2;
+
+ if ([saverView frame].size.width >= 768)
+ tsize.height += pt1 * 3; // extra bottom margin on iPad
+
+ frame = CGRectMake (0, 0, tsize.width, tsize.height);
+
+ UIInterfaceOrientation orient =
+ // Why are both of these wrong when starting up rotated??
+ [[UIDevice currentDevice] orientation];
+ // [rootViewController interfaceOrientation];
+
+ /* Get the text oriented properly, and move it to the bottom of the
+ screen, since many savers have action in the middle.
+ */
+ switch (orient) {
+ case UIDeviceOrientationLandscapeRight:
+ rot = -M_PI/2;
+ frame.origin.x = ([saverView frame].size.width
+ - (tsize.width - tsize.height) / 2
+ - tsize.height);
+ frame.origin.y = ([saverView frame].size.height - tsize.height) / 2;
+ break;
+ case UIDeviceOrientationLandscapeLeft:
+ rot = M_PI/2;
+ frame.origin.x = -(tsize.width - tsize.height) / 2;
+ frame.origin.y = ([saverView frame].size.height - tsize.height) / 2;
+ break;
+ case UIDeviceOrientationPortraitUpsideDown:
+ rot = M_PI;
+ frame.origin.x = ([saverView frame].size.width - tsize.width) / 2;
+ frame.origin.y = 0;
+ break;
+ default:
+ rot = 0;
+ frame.origin.x = ([saverView frame].size.width - tsize.width) / 2;
+ frame.origin.y = [saverView frame].size.height - tsize.height;
+ break;
+ }
+
+ if (aboutBox)
+ [aboutBox removeFromSuperview];
+
+ aboutBox = [[UIView alloc] initWithFrame:frame];
+
+ aboutBox.transform = CGAffineTransformMakeRotation (rot);
+ aboutBox.backgroundColor = [UIColor clearColor];
+ /* There seems to be no easy way to stroke the font, so instead draw
+ it 5 times, 4 in black and 1 in yellow, offset by 1 pixel, and add
+ a black shadow to each. (You'd think the shadow alone would be
+ enough, but there's no way to make it dark enough to be legible.)
+ */
+ for (int i = 0; i < 5; i++) {
+ UITextView *textview;
+ int off = 1;
+ frame.origin.x = frame.origin.y = 0;
+ switch (i) {
+ case 0: frame.origin.x = -off; break;
+ case 1: frame.origin.x = off; break;
+ case 2: frame.origin.y = -off; break;
+ case 3: frame.origin.y = off; break;
+ }
+
+ for (int j = 0; j < 2; j++) {
+
+ frame.origin.y = (j == 0 ? 0 : pt1);
+ textview = [[UITextView alloc] initWithFrame:frame];
+ textview.font = (j == 0 ? font1 : font2);
+ textview.text = (j == 0 ? name : year);
+ textview.textAlignment = UITextAlignmentCenter;
+ textview.showsHorizontalScrollIndicator = NO;
+ textview.showsVerticalScrollIndicator = NO;
+ textview.scrollEnabled = NO;
+ textview.editable = NO;
+ textview.userInteractionEnabled = NO;
+ textview.backgroundColor = [UIColor clearColor];
+ textview.textColor = (i == 4
+ ? [UIColor yellowColor]
+ : [UIColor blackColor]);
+
+ CALayer *textLayer = (CALayer *)
+ [textview.layer.sublayers objectAtIndex:0];
+ textLayer.shadowColor = [UIColor blackColor].CGColor;
+ textLayer.shadowOffset = CGSizeMake(0, 0);
+ textLayer.shadowOpacity = 1;
+ textLayer.shadowRadius = 2;
+
+ [aboutBox addSubview:textview];
+ }
+ }
+
+ CABasicAnimation *anim =
+ [CABasicAnimation animationWithKeyPath:@"opacity"];
+ anim.duration = 0.3;
+ anim.repeatCount = 1;
+ anim.autoreverses = NO;
+ anim.fromValue = [NSNumber numberWithFloat:0.0];
+ anim.toValue = [NSNumber numberWithFloat:1.0];
+ [aboutBox.layer addAnimation:anim forKey:@"animateOpacity"];
+
+ [backgroundView addSubview:aboutBox];
+
+ if (splashTimer)
+ [splashTimer invalidate];
+
+ splashTimer =
+ [NSTimer scheduledTimerWithTimeInterval: anim.duration + 2
+ target:self
+ selector:@selector(aboutOff)
+ userInfo:nil
+ repeats:NO];
# endif // USE_IPHONE
+}
+
+
+# ifdef USE_IPHONE
+- (void)aboutOff
+{
+ if (aboutBox) {
+ if (splashTimer) {
+ [splashTimer invalidate];
+ splashTimer = 0;
+ }
+ CABasicAnimation *anim =
+ [CABasicAnimation animationWithKeyPath:@"opacity"];
+ anim.duration = 0.3;
+ anim.repeatCount = 1;
+ anim.autoreverses = NO;
+ anim.fromValue = [NSNumber numberWithFloat: 1];
+ anim.toValue = [NSNumber numberWithFloat: 0];
+ anim.delegate = self;
+ aboutBox.layer.opacity = 0;
+ [aboutBox.layer addAnimation:anim forKey:@"animateOpacity"];
+ }
+}
+#endif // USE_IPHONE
[result addObject: name];
}
+ if (! [result count])
+ result = 0;
+
return result;
}
NSMutableArray *dirs = [NSMutableArray arrayWithCapacity: 10];
# ifndef USE_IPHONE
- // On MacOS, look in the "Contents/PlugIns/" directory in the bundle.
+ // On MacOS, look in the "Contents/Resources/" and "Contents/PlugIns/"
+ // directories in the bundle.
+ [dirs addObject: [[[[NSBundle mainBundle] bundlePath]
+ stringByAppendingPathComponent:@"Contents"]
+ stringByAppendingPathComponent:@"Resources"]];
[dirs addObject: [[NSBundle mainBundle] builtInPlugInsPath]];
// Also look in the same directory as the executable.
stringByDeletingLastPathComponent]];
// Finally, look in standard MacOS screensaver directories.
- [dirs addObject: @"~/Library/Screen Savers"];
- [dirs addObject: @"/Library/Screen Savers"];
- [dirs addObject: @"/System/Library/Screen Savers"];
+// [dirs addObject: @"~/Library/Screen Savers"];
+// [dirs addObject: @"/Library/Screen Savers"];
+// [dirs addObject: @"/System/Library/Screen Savers"];
-# else
- // On iOS, just look in the bundle's root directory.
+# else // USE_IPHONE
+
+ // On iOS, only look in the bundle's root directory.
[dirs addObject: [[NSBundle mainBundle] bundlePath]];
-# endif
+
+# endif // USE_IPHONE
int i;
for (i = 0; i < [dirs count]; i++) {
#else // USE_IPHONE
+- (NSString *) makeDesc:(NSString *)saver
+ yearOnly:(BOOL) yearp
+{
+ NSString *desc = 0;
+ NSString *path = [saverDir stringByAppendingPathComponent:
+ [[saver lowercaseString]
+ stringByReplacingOccurrencesOfString:@" "
+ withString:@""]];
+ NSRange r;
+
+ path = [path stringByAppendingPathExtension:@"xml"];
+ desc = [NSString stringWithContentsOfFile:path
+ encoding:NSISOLatin1StringEncoding
+ error:nil];
+ if (! desc) goto FAIL;
+
+ r = [desc rangeOfString:@"<_description>"
+ options:NSCaseInsensitiveSearch];
+ if (r.length == 0) {
+ desc = 0;
+ goto FAIL;
+ }
+ desc = [desc substringFromIndex: r.location + r.length];
+ r = [desc rangeOfString:@"</_description>"
+ options:NSCaseInsensitiveSearch];
+ if (r.length > 0)
+ desc = [desc substringToIndex: r.location];
+
+ // Leading and trailing whitespace.
+ desc = [desc stringByTrimmingCharactersInSet:
+ [NSCharacterSet whitespaceAndNewlineCharacterSet]];
+
+ // Let's see if we can find a year on the last line.
+ r = [desc rangeOfString:@"\n" options:NSBackwardsSearch];
+ NSString *year = 0;
+ for (NSString *word in
+ [[desc substringFromIndex:r.location + r.length]
+ componentsSeparatedByCharactersInSet:
+ [NSCharacterSet characterSetWithCharactersInString:
+ @" \t\n-."]]) {
+ int n = [word doubleValue];
+ if (n > 1970 && n < 2100)
+ year = word;
+ }
+
+ // Delete everything after the first blank line.
+ r = [desc rangeOfString:@"\n\n" options:0];
+ if (r.length > 0)
+ desc = [desc substringToIndex: r.location];
+
+ // Truncate really long ones.
+ int max = 140;
+ if ([desc length] > max)
+ desc = [desc substringToIndex: max];
+
+ if (year)
+ desc = [year stringByAppendingString:
+ [@": " stringByAppendingString: desc]];
+
+ if (yearp)
+ desc = year ? year : @"";
+
+FAIL:
+ if (! desc) {
+ desc = @"Oops, this module appears to be incomplete.";
+ // NSLog(@"broken saver: %@", path);
+ }
+
+ return desc;
+}
+
+- (NSString *) makeDesc:(NSString *)saver
+{
+ return [self makeDesc:saver yearOnly:NO];
+}
+
+
+
/* Create a dictionary of one-line descriptions of every saver,
for display on the UITableView.
*/
{
NSMutableDictionary *dict =
[NSMutableDictionary dictionaryWithCapacity:[saverNames count]];
-
for (NSString *saver in saverNames) {
- NSString *desc = 0;
- NSString *path = [saverDir stringByAppendingPathComponent:
- [[saver lowercaseString]
- stringByReplacingOccurrencesOfString:@" "
- withString:@""]];
- NSRange r;
-
- path = [path stringByAppendingPathExtension:@"xml"];
- desc = [NSString stringWithContentsOfFile:path
- encoding:NSISOLatin1StringEncoding
- error:nil];
- if (! desc) goto FAIL;
-
- r = [desc rangeOfString:@"<_description>"
- options:NSCaseInsensitiveSearch];
- if (r.length == 0) {
- desc = 0;
- goto FAIL;
- }
- desc = [desc substringFromIndex: r.location + r.length];
- r = [desc rangeOfString:@"</_description>"
- options:NSCaseInsensitiveSearch];
- if (r.length > 0)
- desc = [desc substringToIndex: r.location];
-
- // Leading and trailing whitespace.
- desc = [desc stringByTrimmingCharactersInSet:
- [NSCharacterSet whitespaceAndNewlineCharacterSet]];
-
- // Let's see if we can find a year on the last line.
- r = [desc rangeOfString:@"\n" options:NSBackwardsSearch];
- NSString *year = 0;
- for (NSString *word in
- [[desc substringFromIndex:r.location + r.length]
- componentsSeparatedByCharactersInSet:
- [NSCharacterSet characterSetWithCharactersInString:
- @" \t\n-."]]) {
- int n = [word doubleValue];
- if (n > 1970 && n < 2100)
- year = word;
- }
-
- // Delete everything after the first blank line.
- r = [desc rangeOfString:@"\n\n" options:0];
- if (r.length > 0)
- desc = [desc substringToIndex: r.location];
-
- // Truncate really long ones.
- int max = 140;
- if ([desc length] > max)
- desc = [desc substringToIndex: max];
-
- if (year)
- desc = [year stringByAppendingString:
- [@": " stringByAppendingString: desc]];
-
- FAIL:
- if (! desc) {
- desc = @"Oops, this module appears to be incomplete.";
- // NSLog(@"broken saver: %@", path);
- }
-
- [dict setObject:desc forKey:saver];
+ [dict setObject:[self makeDesc:saver] forKey:saver];
}
-
return dict;
}
# ifdef USE_IPHONE
/* Don't auto-launch the saver unless it was running last time.
XScreenSaverView manages this, on crash_timer.
+ Unless forced.
*/
- if (! [prefs boolForKey:@"wasRunning"])
+ if (!forced && ![prefs boolForKey:@"wasRunning"])
return;
# endif
<key>CFBundleIconFile</key>
<string>SaverRunner</string>
<key>CFBundleIdentifier</key>
- <string>org.jwz.xscreensaver.${EXECUTABLE_NAME}</string>
+ <string>${BUNDLE_IDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>5.21</string>
+ <string>5.22</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>5.21</string>
+ <string>5.22</string>
<key>LSMinimumSystemVersion</key>
<string>10.4</string>
<key>NSHumanReadableCopyright</key>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
- <string>org.jwz.xscreensaver.${EXECUTABLE_NAME}</string>
+ <string>${BUNDLE_IDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
- <string>5.21</string>
+ <string>5.22</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>5.21</string>
+ <string>5.22</string>
<key>LSMinimumSystemVersion</key>
<string>10.4</string>
<key>NSMainNibFile</key>
-/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2006-2013 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
if ([active_text_field canResignFirstResponder])
[active_text_field resignFirstResponder];
NSString *pref_key = [pref_keys objectAtIndex: [sender tag]];
- double v = [sender value];
+
+ // Hacky API. See comment in InvertedSlider.m.
+ double v = ([sender isKindOfClass: [InvertedSlider class]]
+ ? [(InvertedSlider *) sender transformedValue]
+ : [sender value]);
+
if (v == (int) v)
[userDefaultsController setInteger:v forKey:pref_key];
else
if ([control isKindOfClass:[UISlider class]]) {
sel = @selector(sliderAction:);
- [(UISlider *) control setValue: dval];
+ // Hacky API. See comment in InvertedSlider.m.
+ if ([control isKindOfClass:[InvertedSlider class]])
+ [(InvertedSlider *) control setTransformedValue: dval];
+ else
+ [(UISlider *) control setValue: dval];
} else if ([control isKindOfClass:[UISwitch class]]) {
sel = @selector(switchAction:);
[(UISwitch *) control setOn: ((int) dval != 0)];
-/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2006-2013 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
{
# ifdef USE_IPHONE
UIGraphicsPushContext (backbuffer);
-#endif
+# endif
[self render_x11];
# ifdef USE_IPHONE
UIGraphicsPopContext();
-#endif
+# endif
}
# else
double s = 1;
# endif
+ // Store a realistic size in backbuffer_size, though the buffer is minimal.
NSRect f = [self bounds];
backbuffer_size.width = (int) (s * f.size.width);
backbuffer_size.height = (int) (s * f.size.height);
CGColorSpaceRelease (cs);
}
}
-# endif // USE_IPHONE
+# endif // USE_BACKBUFFER
- (void)dealloc {
NSAssert (pixfmt, @"unable to create NSOpenGLPixelFormat");
+ // #### Analyze says: "Potential leak of an object stored into pixfmt"
ctx = [[NSOpenGLContext alloc]
initWithFormat:pixfmt
shareContext:nil];
[ctx setValues:&r forParameter:NSOpenGLCPSwapInterval];
// check_gl_error ("NSOpenGLCPSwapInterval"); // SEGV sometimes. Too early?
- // #### "Build and Analyze" says that ctx leaks, because it doesn't
- // seem to realize that makeCurrentContext retains it (right?)
- // Not sure what to do to make this warning go away.
+ // #### Analyze says: "Potential leak of an object stored into "ctx"
+ // But makeCurrentContext retains it (right?)
[ctx makeCurrentContext];
check_gl_error ("makeCurrentContext");
eagl_layer.opaque = TRUE;
eagl_layer.drawableProperties =
[NSDictionary dictionaryWithObjectsAndKeys:
- kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat,
- [NSNumber numberWithBool:!dbuf_p], kEAGLDrawablePropertyRetainedBacking,
- nil];
+ kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat,
+ [NSNumber numberWithBool:!dbuf_p], kEAGLDrawablePropertyRetainedBacking,
+ nil];
// Without this, the GL frame buffer is half the screen resolution!
eagl_layer.contentsScale = [UIScreen mainScreen].scale;
if (!ogl_ctx)
return 0;
[view setOglContext:ogl_ctx];
+ // #### Analyze says "Potential leak of an object stored into ogl_ctx"
check_gl_error ("OES_init");
-/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2006-2013 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
NSSize rot_from, rot_to; // start size rect, end size rect
GLfloat angle_from, angle_to; // start angle, end angle
double rot_start_time;
+ BOOL ignore_rotation_p;
NSSize rot_current_size;
GLfloat rot_current_angle;
NSTimer *crash_timer;
+ NSDictionary *function_tables;
+
# endif // USE_IPHONE
# ifdef USE_BACKBUFFER
-/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2006-2013 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
#import "xlockmoreI.h"
#import "jwxyz-timers.h"
-#ifdef USE_IPHONE
-# include "ios_function_tables.h"
-static NSDictionary *function_tables = 0;
-#endif
-
/* Garbage collection only exists if we are being compiled against the
10.6 SDK or newer, not if we are building against the 10.4 SDK.
# ifdef USE_IPHONE
+extern NSDictionary *make_function_table_dict(void); // ios-function-table.m
+
/* Stub definition of the superclass, for iPhone.
*/
@implementation ScreenSaverView
@interface XScreenSaverView (Private)
-- (void) stopAndClose;
- (void) stopAndClose:(Bool)relaunch;
@end
CFBundleRef cfb = CFBundleCreate (kCFAllocatorDefault, url);
CFRelease (url);
NSAssert1 (cfb, @"no CFBundle for \"%@\"", path);
+ // #### Analyze says "Potential leak of an object stored into cfb"
if (! name)
name = [[path lastPathComponent] stringByDeletingPathExtension];
# else // USE_IPHONE
// Remember: any time you add a new saver to the iOS app,
- // manually run "make ios_function_tables.h"!
+ // manually run "make ios-function-table.m"!
if (! function_tables)
- function_tables = [make_function_tables_dict() retain];
+ function_tables = [make_function_table_dict() retain];
NSValue *v = [function_tables objectForKey: name];
void *addr = v ? [v pointerValue] : 0;
# endif // USE_IPHONE
# endif
// ".textLiteral: ",
// ".textFile: ",
- ".textURL: http://twitter.com/statuses/public_timeline.atom",
+ ".textURL: http://en.wikipedia.org/w/index.php?title=Special:NewPages&feed=rss",
// ".textProgram: ",
".grabDesktopImages: yes",
# ifndef USE_IPHONE
selector:@selector(allSystemsGo:)
userInfo:nil
repeats:NO];
+
# endif // USE_IPHONE
// Never automatically turn the screen off if we are docked,
anyway, since that's a higher resolution than most desktop monitors
have even today. (This is only true for X11 programs, not GL
programs. Those are fine at full rez.)
+
+ This method is overridden in XScreenSaverGLView, since this kludge
+ isn't necessary for GL programs, being resolution independent by
+ nature.
*/
- (CGFloat) hackedContentScaleFactor
{
# undef CLAMP180
double s = [self hackedContentScaleFactor];
- if (((int) backbuffer_size.width != (int) (s * rot_current_size.width) ||
- (int) backbuffer_size.height != (int) (s * rot_current_size.height))
-/* && rotation_ratio == -1*/)
+ if (!ignore_rotation_p &&
+ /* rotation_ratio && */
+ ((int) backbuffer_size.width != (int) (s * rot_current_size.width) ||
+ (int) backbuffer_size.height != (int) (s * rot_current_size.height)))
[self resize_x11];
}
- (void)alertView:(UIAlertView *)av clickedButtonAtIndex:(NSInteger)i
{
if (i == 0) exit (-1); // Cancel
- [self stopAndClose]; // Keep going
+ [self stopAndClose:NO]; // Keep going
}
- (void) handleException: (NSException *)e
resized_p = NO;
NSAssert(!xdata, @"xdata already initialized");
+# ifdef USE_IPHONE
+ /* Some X11 hacks (fluidballs) want to ignore all rotation events. */
+ ignore_rotation_p =
+ get_boolean_resource (xdpy, "ignoreRotation", "IgnoreRotation");
+# endif // USE_IPHONE
+
+
# undef ya_rand_init
ya_rand_init (0);
# ifdef USE_IPHONE
// Then compute the transformations for rotation.
- // The rotation origin for layer.affineTransform is in the center already.
- CGAffineTransform t =
- CGAffineTransformMakeRotation (rot_current_angle / (180.0 / M_PI));
+ if (!ignore_rotation_p) {
+ // The rotation origin for layer.affineTransform is in the center already.
+ CGAffineTransform t =
+ CGAffineTransformMakeRotation (rot_current_angle / (180.0 / M_PI));
- // Correct the aspect ratio.
- CGRect frame = [self bounds];
- double s = [self hackedContentScaleFactor];
- t = CGAffineTransformScale(t,
- backbuffer_size.width / (s * frame.size.width),
- backbuffer_size.height / (s * frame.size.height));
-
- self.layer.affineTransform = t;
+ // Correct the aspect ratio.
+ CGRect frame = [self bounds];
+ double s = [self hackedContentScaleFactor];
+ t = CGAffineTransformScale(t,
+ backbuffer_size.width / (s * frame.size.width),
+ backbuffer_size.height / (s * frame.size.height));
+ self.layer.affineTransform = t;
+ }
# endif // USE_IPHONE
// Then copy that bitmap to the screen, by just stuffing it into
// #### am I expected to retain this, or not? wtf.
// I thought not, but if I don't do this, we (sometimes) crash.
+ // #### Analyze says "potential leak of an object stored into sheet"
[sheet retain];
return sheet;
break;
}
default:
- NSAssert (0, @"unknown X11 event type: %d", type);
+ NSAssert1 (0, @"unknown X11 event type: %d", type);
break;
}
#else // USE_IPHONE
-- (void) stopAndClose
+- (void) stopAndClose:(Bool)relaunch_p
{
if ([self isAnimating])
[self stopAnimation];
}
UIView *fader = [self superview]; // the "backgroundView" view is our parent
- [UIView animateWithDuration: 0.5
- animations:^{ fader.alpha = 0.0; }
- completion:^(BOOL finished) {
- [fader removeFromSuperview];
- fader.alpha = 1.0;
- }];
-}
-
-
-- (void) stopAndClose:(Bool)relaunch_p
-{
- [self stopAndClose];
if (relaunch_p) { // Fake a shake on the SaverListController.
- UIViewController *v = [[self window] rootViewController];
+ // Why is [self window] sometimes null here?
+ UIWindow *w = [[UIApplication sharedApplication] keyWindow];
+ UIViewController *v = [w rootViewController];
if ([v isKindOfClass: [UINavigationController class]]) {
UINavigationController *n = (UINavigationController *) v;
[[n topViewController] motionEnded: UIEventSubtypeMotionShake
withEvent: nil];
}
+ } else { // Not launching another, animate our return to the list.
+ [UIView animateWithDuration: 0.5
+ animations:^{ fader.alpha = 0.0; }
+ completion:^(BOOL finished) {
+ [fader removeFromSuperview];
+ fader.alpha = 1.0;
+ }];
}
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
+ // If they are trying to pinch, just do nothing.
+ if ([[event allTouches] count] > 1)
+ return;
+
tap_time = 0;
if (xsft->event_cb && xwindow) {
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
+ // If they are trying to pinch, just do nothing.
+ if ([[event allTouches] count] > 1)
+ return;
+
if (xsft->event_cb && xwindow) {
double s = [self hackedContentScaleFactor];
XEvent xe;
double dist = sqrt (((p.x - tap_point.x) * (p.x - tap_point.x)) +
((p.y - tap_point.y) * (p.y - tap_point.y)));
if (tap_time + 0.5 >= double_time() && dist < 20) {
- [self stopAndClose];
+ [self stopAndClose:NO];
return;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
+ // If they are trying to pinch, just do nothing.
+ if ([[event allTouches] count] > 1)
+ return;
+
if (xsft->event_cb && xwindow) {
double s = [self hackedContentScaleFactor];
XEvent xe;
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<screensaver name="apple2" _label="Apple2">
+
+ <command arg="-root"/>
+
+ <hgroup>
+ <vgroup>
+ <number id="tvcolor" type="slider" arg="-tv-color %"
+ _label="Color Knob" _low-label="Low" _high-label="High"
+ low="0" high="1000" default="70"/>
+ <number id="tvtint" type="slider" arg="-tv-tint %"
+ _label="Tint Knob" _low-label="Low" _high-label="High"
+ low="0" high="100" default="5"/>
+ </vgroup>
+ <vgroup>
+ <number id="tvbrightness" type="slider" arg="-tv-brightness %"
+ _label="Brightness Knob" _low-label="Low" _high-label="High"
+ low="0" high="200" default="150"/>
+ <number id="tvcontrast" type="slider" arg="-tv-contrast %"
+ _label="Contrast Knob" _low-label="Low" _high-label="High"
+ low="0" high="1500" default="1000"/>
+ </vgroup>
+ </hgroup>
+
+ <_description>
+A fully-functional VT100 terminal emulator simulating an original
+Apple ][ Plus computer in all its 1979 glory. It also reproduces the
+appearance of display on a color television set of the period.
+
+http://en.wikipedia.org/wiki/Apple_II_series
+
+Written by Trevor Blackwell; 2003.
+ </_description>
+</screensaver>
by Jamie Zawinski\
and many others\
\
-version 5.21\
-04-Feb-2013\
+version 5.22\
+16-Jul-2013\
\
{\field{\*\fldinst{HYPERLINK "http://www.jwz.org/xscreensaver/"}}{\fldrslt \cf2 \ul \ulc2 http://www.jwz.org/xscreensaver/}}
\
#!/usr/bin/perl -w
-# Copyright © 2012 Jamie Zawinski <jwz@jwz.org>
+# Copyright © 2012-2013 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
# software for any purpose. It is provided "as is" without express or
# implied warranty.
#
-# Generates a .h file that lists all the function tables we use, because
+# Generates a .c file that lists all the function tables we use, because
# CFBundleGetDataPointerForName doesn't work in "Archive" builds.
# What a crock of shit.
#
use strict;
my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.1 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.2 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
my $verbose = 1;
my $suf = 'xscreensaver_function_table';
- my $body = "extern struct $suf";
+ my $body = ("/* Generated file, do not edit.\n" .
+ " Created: " . localtime() . " by $progname $version.\n" .
+ " */\n" .
+ "\n" .
+ "#import <Foundation/Foundation.h>\n" .
+ "#import <UIKit/UIKit.h>\n" .
+ "\n" .
+ "extern NSDictionary *make_function_table_dict(void);\n" .
+ "\n");
+
+ $body .= "extern struct $suf";
foreach my $s (@names) {
$body .= "\n *${s}_${suf},";
}
$body =~ s/,\s*$/;/s;
- $body .= ("\n\n" .
- "static NSDictionary *make_function_tables_dict(void)\n{\n" .
- " return\n [NSDictionary dictionaryWithObjectsAndKeys:\n");
- foreach my $s (@names) {
- $body .= "\t[NSValue valueWithPointer:&${s}_${suf}], @\"${s}\",\n";
+ sub line($$) {
+ my ($s, $suf) = @_;
+ return "\t[NSValue valueWithPointer:&${s}_${suf}], @\"${s}\",\n";
}
- $body .= ("\tnil];\n" .
- "}\n");
+
+ $body .= ("\n\n" .
+ "NSDictionary *make_function_table_dict(void)\n{\n" .
+ " return\n [NSDictionary dictionaryWithObjectsAndKeys:\n" .
+ "\n" .
+ "#if defined(APPLE2_ONLY)\n" .
+ " " . line('apple2', $suf) .
+ "#elif defined(PHOSPHOR_ONLY)\n" .
+ " " . line('phosphor', $suf) .
+ "#else\n");
+ foreach my $s (@names) { $body .= line($s, $suf); }
+ $body .= ("#endif\n" .
+ "\tnil];\n" .
+ "}\n\n");
my $obody = '';
if (open (my $in, '<', $outfile)) {
close $in;
}
- if ($obody eq $body) {
+ # strip comments/date for diff.
+ my ($body2, $obody2) = ($body, $obody);
+ foreach ($body2, $obody2) { s@/\*.*?\*/@@gs; }
+
+ if ($body2 eq $obody2) {
print STDERR "$progname: $outfile: unchanged\n" if ($verbose > 1);
} else {
my $file_tmp = "$outfile.tmp";
}
sub usage() {
- print STDERR "usage: $progname [--verbose] program.app output.h\n";
+ print STDERR "usage: $progname [--verbose] program.app output.c\n";
exit 1;
}
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleVersion</key>
- <string>5.21</string>
+ <string>5.22</string>
<key>NSMainNibFile</key>
<string>iSaverRunner</string>
<key>CFBundlePackageType</key>
<key>UIStatusBarHidden</key>
<true/>
<key>CFBundleShortVersionString</key>
- <string>5.21</string>
+ <string>5.22</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>UIRequiredDeviceCapabilities</key>
- <array>
- <string>armv7</string>
- </array>
+ <dict>
+ <key>opengles-1</key>
+ <true/>
+ </dict>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>UISupportedInterfaceOrientations~ipad</key>
<key>CFBundleLongVersionString</key>
<string>XScreenSaver 5.15, © 2001-2012 Jamie Zawinski.</string>
<key>CFBundleIdentifier</key>
- <string>org.jwz.xscreensaver</string>
+ <string>${BUNDLE_IDENTIFIER}</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleIconFiles</key>
--- /dev/null
+/* Generated file, do not edit.
+ Created: Mon Jul 8 16:42:29 2013 by build-fntable.pl 1.2.
+ */
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+
+extern NSDictionary *make_function_table_dict(void);
+
+extern struct xscreensaver_function_table
+ *abstractile_xscreensaver_function_table,
+ *anemone_xscreensaver_function_table,
+ *anemotaxis_xscreensaver_function_table,
+ *antinspect_xscreensaver_function_table,
+ *antmaze_xscreensaver_function_table,
+ *antspotlight_xscreensaver_function_table,
+ *apollonian_xscreensaver_function_table,
+ *apple2_xscreensaver_function_table,
+ *atlantis_xscreensaver_function_table,
+ *attraction_xscreensaver_function_table,
+ *atunnel_xscreensaver_function_table,
+ *barcode_xscreensaver_function_table,
+ *blaster_xscreensaver_function_table,
+ *blinkbox_xscreensaver_function_table,
+ *blitspin_xscreensaver_function_table,
+ *blocktube_xscreensaver_function_table,
+ *boing_xscreensaver_function_table,
+ *bouboule_xscreensaver_function_table,
+ *bouncingcow_xscreensaver_function_table,
+ *boxed_xscreensaver_function_table,
+ *boxfit_xscreensaver_function_table,
+ *braid_xscreensaver_function_table,
+ *bsod_xscreensaver_function_table,
+ *bubble3d_xscreensaver_function_table,
+ *bumps_xscreensaver_function_table,
+ *cage_xscreensaver_function_table,
+ *carousel_xscreensaver_function_table,
+ *ccurve_xscreensaver_function_table,
+ *celtic_xscreensaver_function_table,
+ *circuit_xscreensaver_function_table,
+ *cloudlife_xscreensaver_function_table,
+ *companioncube_xscreensaver_function_table,
+ *compass_xscreensaver_function_table,
+ *coral_xscreensaver_function_table,
+ *crackberg_xscreensaver_function_table,
+ *crystal_xscreensaver_function_table,
+ *cube21_xscreensaver_function_table,
+ *cubenetic_xscreensaver_function_table,
+ *cubestorm_xscreensaver_function_table,
+ *cubicgrid_xscreensaver_function_table,
+ *cwaves_xscreensaver_function_table,
+ *cynosure_xscreensaver_function_table,
+ *dangerball_xscreensaver_function_table,
+ *decayscreen_xscreensaver_function_table,
+ *deco_xscreensaver_function_table,
+ *deluxe_xscreensaver_function_table,
+ *demon_xscreensaver_function_table,
+ *discrete_xscreensaver_function_table,
+ *distort_xscreensaver_function_table,
+ *dnalogo_xscreensaver_function_table,
+ *drift_xscreensaver_function_table,
+ *endgame_xscreensaver_function_table,
+ *engine_xscreensaver_function_table,
+ *epicycle_xscreensaver_function_table,
+ *eruption_xscreensaver_function_table,
+ *euler2d_xscreensaver_function_table,
+ *fadeplot_xscreensaver_function_table,
+ *fiberlamp_xscreensaver_function_table,
+ *fireworkx_xscreensaver_function_table,
+ *flame_xscreensaver_function_table,
+ *flipflop_xscreensaver_function_table,
+ *flipscreen3d_xscreensaver_function_table,
+ *fliptext_xscreensaver_function_table,
+ *flow_xscreensaver_function_table,
+ *fluidballs_xscreensaver_function_table,
+ *flyingtoasters_xscreensaver_function_table,
+ *fontglide_xscreensaver_function_table,
+ *fuzzyflakes_xscreensaver_function_table,
+ *galaxy_xscreensaver_function_table,
+ *gears_xscreensaver_function_table,
+ *gflux_xscreensaver_function_table,
+ *glblur_xscreensaver_function_table,
+ *glcells_xscreensaver_function_table,
+ *gleidescope_xscreensaver_function_table,
+ *glhanoi_xscreensaver_function_table,
+ *glknots_xscreensaver_function_table,
+ *glmatrix_xscreensaver_function_table,
+ *glplanet_xscreensaver_function_table,
+ *glschool_xscreensaver_function_table,
+ *glslideshow_xscreensaver_function_table,
+ *glsnake_xscreensaver_function_table,
+ *gltext_xscreensaver_function_table,
+ *goop_xscreensaver_function_table,
+ *grav_xscreensaver_function_table,
+ *greynetic_xscreensaver_function_table,
+ *halftone_xscreensaver_function_table,
+ *halo_xscreensaver_function_table,
+ *helix_xscreensaver_function_table,
+ *hexadrop_xscreensaver_function_table,
+ *hilbert_xscreensaver_function_table,
+ *hopalong_xscreensaver_function_table,
+ *hypertorus_xscreensaver_function_table,
+ *hypnowheel_xscreensaver_function_table,
+ *ifs_xscreensaver_function_table,
+ *imsmap_xscreensaver_function_table,
+ *interaggregate_xscreensaver_function_table,
+ *interference_xscreensaver_function_table,
+ *intermomentary_xscreensaver_function_table,
+ *jigglypuff_xscreensaver_function_table,
+ *jigsaw_xscreensaver_function_table,
+ *juggler3d_xscreensaver_function_table,
+ *julia_xscreensaver_function_table,
+ *kaleidescope_xscreensaver_function_table,
+ *kaleidocycle_xscreensaver_function_table,
+ *klein_xscreensaver_function_table,
+ *kumppa_xscreensaver_function_table,
+ *lament_xscreensaver_function_table,
+ *lavalite_xscreensaver_function_table,
+ *loop_xscreensaver_function_table,
+ *m6502_xscreensaver_function_table,
+ *maze_xscreensaver_function_table,
+ *memscroller_xscreensaver_function_table,
+ *menger_xscreensaver_function_table,
+ *metaballs_xscreensaver_function_table,
+ *mirrorblob_xscreensaver_function_table,
+ *moebius_xscreensaver_function_table,
+ *moebiusgears_xscreensaver_function_table,
+ *moire_xscreensaver_function_table,
+ *moire2_xscreensaver_function_table,
+ *molecule_xscreensaver_function_table,
+ *morph3d_xscreensaver_function_table,
+ *mountain_xscreensaver_function_table,
+ *munch_xscreensaver_function_table,
+ *nerverot_xscreensaver_function_table,
+ *noof_xscreensaver_function_table,
+ *noseguy_xscreensaver_function_table,
+ *pacman_xscreensaver_function_table,
+ *pedal_xscreensaver_function_table,
+ *penetrate_xscreensaver_function_table,
+ *penrose_xscreensaver_function_table,
+ *petri_xscreensaver_function_table,
+ *phosphor_xscreensaver_function_table,
+ *photopile_xscreensaver_function_table,
+ *piecewise_xscreensaver_function_table,
+ *pinion_xscreensaver_function_table,
+ *pipes_xscreensaver_function_table,
+ *polyhedra_xscreensaver_function_table,
+ *polyominoes_xscreensaver_function_table,
+ *polytopes_xscreensaver_function_table,
+ *pong_xscreensaver_function_table,
+ *popsquares_xscreensaver_function_table,
+ *providence_xscreensaver_function_table,
+ *pulsar_xscreensaver_function_table,
+ *pyro_xscreensaver_function_table,
+ *qix_xscreensaver_function_table,
+ *quasicrystal_xscreensaver_function_table,
+ *queens_xscreensaver_function_table,
+ *rdbomb_xscreensaver_function_table,
+ *ripples_xscreensaver_function_table,
+ *rocks_xscreensaver_function_table,
+ *rorschach_xscreensaver_function_table,
+ *rotzoomer_xscreensaver_function_table,
+ *rubik_xscreensaver_function_table,
+ *rubikblocks_xscreensaver_function_table,
+ *sballs_xscreensaver_function_table,
+ *shadebobs_xscreensaver_function_table,
+ *sierpinski_xscreensaver_function_table,
+ *sierpinski3d_xscreensaver_function_table,
+ *skytentacles_xscreensaver_function_table,
+ *slidescreen_xscreensaver_function_table,
+ *slip_xscreensaver_function_table,
+ *sonar_xscreensaver_function_table,
+ *speedmine_xscreensaver_function_table,
+ *spheremonics_xscreensaver_function_table,
+ *spotlight_xscreensaver_function_table,
+ *sproingies_xscreensaver_function_table,
+ *squiral_xscreensaver_function_table,
+ *stairs_xscreensaver_function_table,
+ *starfish_xscreensaver_function_table,
+ *starwars_xscreensaver_function_table,
+ *stonerview_xscreensaver_function_table,
+ *strange_xscreensaver_function_table,
+ *substrate_xscreensaver_function_table,
+ *superquadrics_xscreensaver_function_table,
+ *surfaces_xscreensaver_function_table,
+ *swirl_xscreensaver_function_table,
+ *tangram_xscreensaver_function_table,
+ *thornbird_xscreensaver_function_table,
+ *timetunnel_xscreensaver_function_table,
+ *topblock_xscreensaver_function_table,
+ *triangle_xscreensaver_function_table,
+ *tronbit_xscreensaver_function_table,
+ *truchet_xscreensaver_function_table,
+ *twang_xscreensaver_function_table,
+ *unknownpleasures_xscreensaver_function_table,
+ *vermiculate_xscreensaver_function_table,
+ *voronoi_xscreensaver_function_table,
+ *wander_xscreensaver_function_table,
+ *whirlwindwarp_xscreensaver_function_table,
+ *wormhole_xscreensaver_function_table,
+ *xanalogtv_xscreensaver_function_table,
+ *xflame_xscreensaver_function_table,
+ *xjack_xscreensaver_function_table,
+ *xlyap_xscreensaver_function_table,
+ *xmatrix_xscreensaver_function_table,
+ *xrayswarm_xscreensaver_function_table,
+ *xspirograph_xscreensaver_function_table,
+ *zoom_xscreensaver_function_table;
+
+NSDictionary *make_function_table_dict(void)
+{
+ return
+ [NSDictionary dictionaryWithObjectsAndKeys:
+
+#if defined(APPLE2_ONLY)
+ [NSValue valueWithPointer:&apple2_xscreensaver_function_table], @"apple2",
+#elif defined(PHOSPHOR_ONLY)
+ [NSValue valueWithPointer:&phosphor_xscreensaver_function_table], @"phosphor",
+#else
+ [NSValue valueWithPointer:&abstractile_xscreensaver_function_table], @"abstractile",
+ [NSValue valueWithPointer:&anemone_xscreensaver_function_table], @"anemone",
+ [NSValue valueWithPointer:&anemotaxis_xscreensaver_function_table], @"anemotaxis",
+ [NSValue valueWithPointer:&antinspect_xscreensaver_function_table], @"antinspect",
+ [NSValue valueWithPointer:&antmaze_xscreensaver_function_table], @"antmaze",
+ [NSValue valueWithPointer:&antspotlight_xscreensaver_function_table], @"antspotlight",
+ [NSValue valueWithPointer:&apollonian_xscreensaver_function_table], @"apollonian",
+ [NSValue valueWithPointer:&apple2_xscreensaver_function_table], @"apple2",
+ [NSValue valueWithPointer:&atlantis_xscreensaver_function_table], @"atlantis",
+ [NSValue valueWithPointer:&attraction_xscreensaver_function_table], @"attraction",
+ [NSValue valueWithPointer:&atunnel_xscreensaver_function_table], @"atunnel",
+ [NSValue valueWithPointer:&barcode_xscreensaver_function_table], @"barcode",
+ [NSValue valueWithPointer:&blaster_xscreensaver_function_table], @"blaster",
+ [NSValue valueWithPointer:&blinkbox_xscreensaver_function_table], @"blinkbox",
+ [NSValue valueWithPointer:&blitspin_xscreensaver_function_table], @"blitspin",
+ [NSValue valueWithPointer:&blocktube_xscreensaver_function_table], @"blocktube",
+ [NSValue valueWithPointer:&boing_xscreensaver_function_table], @"boing",
+ [NSValue valueWithPointer:&bouboule_xscreensaver_function_table], @"bouboule",
+ [NSValue valueWithPointer:&bouncingcow_xscreensaver_function_table], @"bouncingcow",
+ [NSValue valueWithPointer:&boxed_xscreensaver_function_table], @"boxed",
+ [NSValue valueWithPointer:&boxfit_xscreensaver_function_table], @"boxfit",
+ [NSValue valueWithPointer:&braid_xscreensaver_function_table], @"braid",
+ [NSValue valueWithPointer:&bsod_xscreensaver_function_table], @"bsod",
+ [NSValue valueWithPointer:&bubble3d_xscreensaver_function_table], @"bubble3d",
+ [NSValue valueWithPointer:&bumps_xscreensaver_function_table], @"bumps",
+ [NSValue valueWithPointer:&cage_xscreensaver_function_table], @"cage",
+ [NSValue valueWithPointer:&carousel_xscreensaver_function_table], @"carousel",
+ [NSValue valueWithPointer:&ccurve_xscreensaver_function_table], @"ccurve",
+ [NSValue valueWithPointer:&celtic_xscreensaver_function_table], @"celtic",
+ [NSValue valueWithPointer:&circuit_xscreensaver_function_table], @"circuit",
+ [NSValue valueWithPointer:&cloudlife_xscreensaver_function_table], @"cloudlife",
+ [NSValue valueWithPointer:&companioncube_xscreensaver_function_table], @"companioncube",
+ [NSValue valueWithPointer:&compass_xscreensaver_function_table], @"compass",
+ [NSValue valueWithPointer:&coral_xscreensaver_function_table], @"coral",
+ [NSValue valueWithPointer:&crackberg_xscreensaver_function_table], @"crackberg",
+ [NSValue valueWithPointer:&crystal_xscreensaver_function_table], @"crystal",
+ [NSValue valueWithPointer:&cube21_xscreensaver_function_table], @"cube21",
+ [NSValue valueWithPointer:&cubenetic_xscreensaver_function_table], @"cubenetic",
+ [NSValue valueWithPointer:&cubestorm_xscreensaver_function_table], @"cubestorm",
+ [NSValue valueWithPointer:&cubicgrid_xscreensaver_function_table], @"cubicgrid",
+ [NSValue valueWithPointer:&cwaves_xscreensaver_function_table], @"cwaves",
+ [NSValue valueWithPointer:&cynosure_xscreensaver_function_table], @"cynosure",
+ [NSValue valueWithPointer:&dangerball_xscreensaver_function_table], @"dangerball",
+ [NSValue valueWithPointer:&decayscreen_xscreensaver_function_table], @"decayscreen",
+ [NSValue valueWithPointer:&deco_xscreensaver_function_table], @"deco",
+ [NSValue valueWithPointer:&deluxe_xscreensaver_function_table], @"deluxe",
+ [NSValue valueWithPointer:&demon_xscreensaver_function_table], @"demon",
+ [NSValue valueWithPointer:&discrete_xscreensaver_function_table], @"discrete",
+ [NSValue valueWithPointer:&distort_xscreensaver_function_table], @"distort",
+ [NSValue valueWithPointer:&dnalogo_xscreensaver_function_table], @"dnalogo",
+ [NSValue valueWithPointer:&drift_xscreensaver_function_table], @"drift",
+ [NSValue valueWithPointer:&endgame_xscreensaver_function_table], @"endgame",
+ [NSValue valueWithPointer:&engine_xscreensaver_function_table], @"engine",
+ [NSValue valueWithPointer:&epicycle_xscreensaver_function_table], @"epicycle",
+ [NSValue valueWithPointer:&eruption_xscreensaver_function_table], @"eruption",
+ [NSValue valueWithPointer:&euler2d_xscreensaver_function_table], @"euler2d",
+ [NSValue valueWithPointer:&fadeplot_xscreensaver_function_table], @"fadeplot",
+ [NSValue valueWithPointer:&fiberlamp_xscreensaver_function_table], @"fiberlamp",
+ [NSValue valueWithPointer:&fireworkx_xscreensaver_function_table], @"fireworkx",
+ [NSValue valueWithPointer:&flame_xscreensaver_function_table], @"flame",
+ [NSValue valueWithPointer:&flipflop_xscreensaver_function_table], @"flipflop",
+ [NSValue valueWithPointer:&flipscreen3d_xscreensaver_function_table], @"flipscreen3d",
+ [NSValue valueWithPointer:&fliptext_xscreensaver_function_table], @"fliptext",
+ [NSValue valueWithPointer:&flow_xscreensaver_function_table], @"flow",
+ [NSValue valueWithPointer:&fluidballs_xscreensaver_function_table], @"fluidballs",
+ [NSValue valueWithPointer:&flyingtoasters_xscreensaver_function_table], @"flyingtoasters",
+ [NSValue valueWithPointer:&fontglide_xscreensaver_function_table], @"fontglide",
+ [NSValue valueWithPointer:&fuzzyflakes_xscreensaver_function_table], @"fuzzyflakes",
+ [NSValue valueWithPointer:&galaxy_xscreensaver_function_table], @"galaxy",
+ [NSValue valueWithPointer:&gears_xscreensaver_function_table], @"gears",
+ [NSValue valueWithPointer:&gflux_xscreensaver_function_table], @"gflux",
+ [NSValue valueWithPointer:&glblur_xscreensaver_function_table], @"glblur",
+ [NSValue valueWithPointer:&glcells_xscreensaver_function_table], @"glcells",
+ [NSValue valueWithPointer:&gleidescope_xscreensaver_function_table], @"gleidescope",
+ [NSValue valueWithPointer:&glhanoi_xscreensaver_function_table], @"glhanoi",
+ [NSValue valueWithPointer:&glknots_xscreensaver_function_table], @"glknots",
+ [NSValue valueWithPointer:&glmatrix_xscreensaver_function_table], @"glmatrix",
+ [NSValue valueWithPointer:&glplanet_xscreensaver_function_table], @"glplanet",
+ [NSValue valueWithPointer:&glschool_xscreensaver_function_table], @"glschool",
+ [NSValue valueWithPointer:&glslideshow_xscreensaver_function_table], @"glslideshow",
+ [NSValue valueWithPointer:&glsnake_xscreensaver_function_table], @"glsnake",
+ [NSValue valueWithPointer:&gltext_xscreensaver_function_table], @"gltext",
+ [NSValue valueWithPointer:&goop_xscreensaver_function_table], @"goop",
+ [NSValue valueWithPointer:&grav_xscreensaver_function_table], @"grav",
+ [NSValue valueWithPointer:&greynetic_xscreensaver_function_table], @"greynetic",
+ [NSValue valueWithPointer:&halftone_xscreensaver_function_table], @"halftone",
+ [NSValue valueWithPointer:&halo_xscreensaver_function_table], @"halo",
+ [NSValue valueWithPointer:&helix_xscreensaver_function_table], @"helix",
+ [NSValue valueWithPointer:&hexadrop_xscreensaver_function_table], @"hexadrop",
+ [NSValue valueWithPointer:&hilbert_xscreensaver_function_table], @"hilbert",
+ [NSValue valueWithPointer:&hopalong_xscreensaver_function_table], @"hopalong",
+ [NSValue valueWithPointer:&hypertorus_xscreensaver_function_table], @"hypertorus",
+ [NSValue valueWithPointer:&hypnowheel_xscreensaver_function_table], @"hypnowheel",
+ [NSValue valueWithPointer:&ifs_xscreensaver_function_table], @"ifs",
+ [NSValue valueWithPointer:&imsmap_xscreensaver_function_table], @"imsmap",
+ [NSValue valueWithPointer:&interaggregate_xscreensaver_function_table], @"interaggregate",
+ [NSValue valueWithPointer:&interference_xscreensaver_function_table], @"interference",
+ [NSValue valueWithPointer:&intermomentary_xscreensaver_function_table], @"intermomentary",
+ [NSValue valueWithPointer:&jigglypuff_xscreensaver_function_table], @"jigglypuff",
+ [NSValue valueWithPointer:&jigsaw_xscreensaver_function_table], @"jigsaw",
+ [NSValue valueWithPointer:&juggler3d_xscreensaver_function_table], @"juggler3d",
+ [NSValue valueWithPointer:&julia_xscreensaver_function_table], @"julia",
+ [NSValue valueWithPointer:&kaleidescope_xscreensaver_function_table], @"kaleidescope",
+ [NSValue valueWithPointer:&kaleidocycle_xscreensaver_function_table], @"kaleidocycle",
+ [NSValue valueWithPointer:&klein_xscreensaver_function_table], @"klein",
+ [NSValue valueWithPointer:&kumppa_xscreensaver_function_table], @"kumppa",
+ [NSValue valueWithPointer:&lament_xscreensaver_function_table], @"lament",
+ [NSValue valueWithPointer:&lavalite_xscreensaver_function_table], @"lavalite",
+ [NSValue valueWithPointer:&loop_xscreensaver_function_table], @"loop",
+ [NSValue valueWithPointer:&m6502_xscreensaver_function_table], @"m6502",
+ [NSValue valueWithPointer:&maze_xscreensaver_function_table], @"maze",
+ [NSValue valueWithPointer:&memscroller_xscreensaver_function_table], @"memscroller",
+ [NSValue valueWithPointer:&menger_xscreensaver_function_table], @"menger",
+ [NSValue valueWithPointer:&metaballs_xscreensaver_function_table], @"metaballs",
+ [NSValue valueWithPointer:&mirrorblob_xscreensaver_function_table], @"mirrorblob",
+ [NSValue valueWithPointer:&moebius_xscreensaver_function_table], @"moebius",
+ [NSValue valueWithPointer:&moebiusgears_xscreensaver_function_table], @"moebiusgears",
+ [NSValue valueWithPointer:&moire_xscreensaver_function_table], @"moire",
+ [NSValue valueWithPointer:&moire2_xscreensaver_function_table], @"moire2",
+ [NSValue valueWithPointer:&molecule_xscreensaver_function_table], @"molecule",
+ [NSValue valueWithPointer:&morph3d_xscreensaver_function_table], @"morph3d",
+ [NSValue valueWithPointer:&mountain_xscreensaver_function_table], @"mountain",
+ [NSValue valueWithPointer:&munch_xscreensaver_function_table], @"munch",
+ [NSValue valueWithPointer:&nerverot_xscreensaver_function_table], @"nerverot",
+ [NSValue valueWithPointer:&noof_xscreensaver_function_table], @"noof",
+ [NSValue valueWithPointer:&noseguy_xscreensaver_function_table], @"noseguy",
+ [NSValue valueWithPointer:&pacman_xscreensaver_function_table], @"pacman",
+ [NSValue valueWithPointer:&pedal_xscreensaver_function_table], @"pedal",
+ [NSValue valueWithPointer:&penetrate_xscreensaver_function_table], @"penetrate",
+ [NSValue valueWithPointer:&penrose_xscreensaver_function_table], @"penrose",
+ [NSValue valueWithPointer:&petri_xscreensaver_function_table], @"petri",
+ [NSValue valueWithPointer:&phosphor_xscreensaver_function_table], @"phosphor",
+ [NSValue valueWithPointer:&photopile_xscreensaver_function_table], @"photopile",
+ [NSValue valueWithPointer:&piecewise_xscreensaver_function_table], @"piecewise",
+ [NSValue valueWithPointer:&pinion_xscreensaver_function_table], @"pinion",
+ [NSValue valueWithPointer:&pipes_xscreensaver_function_table], @"pipes",
+ [NSValue valueWithPointer:&polyhedra_xscreensaver_function_table], @"polyhedra",
+ [NSValue valueWithPointer:&polyominoes_xscreensaver_function_table], @"polyominoes",
+ [NSValue valueWithPointer:&polytopes_xscreensaver_function_table], @"polytopes",
+ [NSValue valueWithPointer:&pong_xscreensaver_function_table], @"pong",
+ [NSValue valueWithPointer:&popsquares_xscreensaver_function_table], @"popsquares",
+ [NSValue valueWithPointer:&providence_xscreensaver_function_table], @"providence",
+ [NSValue valueWithPointer:&pulsar_xscreensaver_function_table], @"pulsar",
+ [NSValue valueWithPointer:&pyro_xscreensaver_function_table], @"pyro",
+ [NSValue valueWithPointer:&qix_xscreensaver_function_table], @"qix",
+ [NSValue valueWithPointer:&quasicrystal_xscreensaver_function_table], @"quasicrystal",
+ [NSValue valueWithPointer:&queens_xscreensaver_function_table], @"queens",
+ [NSValue valueWithPointer:&rdbomb_xscreensaver_function_table], @"rdbomb",
+ [NSValue valueWithPointer:&ripples_xscreensaver_function_table], @"ripples",
+ [NSValue valueWithPointer:&rocks_xscreensaver_function_table], @"rocks",
+ [NSValue valueWithPointer:&rorschach_xscreensaver_function_table], @"rorschach",
+ [NSValue valueWithPointer:&rotzoomer_xscreensaver_function_table], @"rotzoomer",
+ [NSValue valueWithPointer:&rubik_xscreensaver_function_table], @"rubik",
+ [NSValue valueWithPointer:&rubikblocks_xscreensaver_function_table], @"rubikblocks",
+ [NSValue valueWithPointer:&sballs_xscreensaver_function_table], @"sballs",
+ [NSValue valueWithPointer:&shadebobs_xscreensaver_function_table], @"shadebobs",
+ [NSValue valueWithPointer:&sierpinski_xscreensaver_function_table], @"sierpinski",
+ [NSValue valueWithPointer:&sierpinski3d_xscreensaver_function_table], @"sierpinski3d",
+ [NSValue valueWithPointer:&skytentacles_xscreensaver_function_table], @"skytentacles",
+ [NSValue valueWithPointer:&slidescreen_xscreensaver_function_table], @"slidescreen",
+ [NSValue valueWithPointer:&slip_xscreensaver_function_table], @"slip",
+ [NSValue valueWithPointer:&sonar_xscreensaver_function_table], @"sonar",
+ [NSValue valueWithPointer:&speedmine_xscreensaver_function_table], @"speedmine",
+ [NSValue valueWithPointer:&spheremonics_xscreensaver_function_table], @"spheremonics",
+ [NSValue valueWithPointer:&spotlight_xscreensaver_function_table], @"spotlight",
+ [NSValue valueWithPointer:&sproingies_xscreensaver_function_table], @"sproingies",
+ [NSValue valueWithPointer:&squiral_xscreensaver_function_table], @"squiral",
+ [NSValue valueWithPointer:&stairs_xscreensaver_function_table], @"stairs",
+ [NSValue valueWithPointer:&starfish_xscreensaver_function_table], @"starfish",
+ [NSValue valueWithPointer:&starwars_xscreensaver_function_table], @"starwars",
+ [NSValue valueWithPointer:&stonerview_xscreensaver_function_table], @"stonerview",
+ [NSValue valueWithPointer:&strange_xscreensaver_function_table], @"strange",
+ [NSValue valueWithPointer:&substrate_xscreensaver_function_table], @"substrate",
+ [NSValue valueWithPointer:&superquadrics_xscreensaver_function_table], @"superquadrics",
+ [NSValue valueWithPointer:&surfaces_xscreensaver_function_table], @"surfaces",
+ [NSValue valueWithPointer:&swirl_xscreensaver_function_table], @"swirl",
+ [NSValue valueWithPointer:&tangram_xscreensaver_function_table], @"tangram",
+ [NSValue valueWithPointer:þbird_xscreensaver_function_table], @"thornbird",
+ [NSValue valueWithPointer:&timetunnel_xscreensaver_function_table], @"timetunnel",
+ [NSValue valueWithPointer:&topblock_xscreensaver_function_table], @"topblock",
+ [NSValue valueWithPointer:&triangle_xscreensaver_function_table], @"triangle",
+ [NSValue valueWithPointer:&tronbit_xscreensaver_function_table], @"tronbit",
+ [NSValue valueWithPointer:&truchet_xscreensaver_function_table], @"truchet",
+ [NSValue valueWithPointer:&twang_xscreensaver_function_table], @"twang",
+ [NSValue valueWithPointer:&unknownpleasures_xscreensaver_function_table], @"unknownpleasures",
+ [NSValue valueWithPointer:&vermiculate_xscreensaver_function_table], @"vermiculate",
+ [NSValue valueWithPointer:&voronoi_xscreensaver_function_table], @"voronoi",
+ [NSValue valueWithPointer:&wander_xscreensaver_function_table], @"wander",
+ [NSValue valueWithPointer:&whirlwindwarp_xscreensaver_function_table], @"whirlwindwarp",
+ [NSValue valueWithPointer:&wormhole_xscreensaver_function_table], @"wormhole",
+ [NSValue valueWithPointer:&xanalogtv_xscreensaver_function_table], @"xanalogtv",
+ [NSValue valueWithPointer:&xflame_xscreensaver_function_table], @"xflame",
+ [NSValue valueWithPointer:&xjack_xscreensaver_function_table], @"xjack",
+ [NSValue valueWithPointer:&xlyap_xscreensaver_function_table], @"xlyap",
+ [NSValue valueWithPointer:&xmatrix_xscreensaver_function_table], @"xmatrix",
+ [NSValue valueWithPointer:&xrayswarm_xscreensaver_function_table], @"xrayswarm",
+ [NSValue valueWithPointer:&xspirograph_xscreensaver_function_table], @"xspirograph",
+ [NSValue valueWithPointer:&zoom_xscreensaver_function_table], @"zoom",
+#endif
+ nil];
+}
+
+++ /dev/null
-extern struct xscreensaver_function_table
- *abstractile_xscreensaver_function_table,
- *anemone_xscreensaver_function_table,
- *anemotaxis_xscreensaver_function_table,
- *antinspect_xscreensaver_function_table,
- *antmaze_xscreensaver_function_table,
- *antspotlight_xscreensaver_function_table,
- *apollonian_xscreensaver_function_table,
- *apple2_xscreensaver_function_table,
- *atlantis_xscreensaver_function_table,
- *attraction_xscreensaver_function_table,
- *atunnel_xscreensaver_function_table,
- *barcode_xscreensaver_function_table,
- *blaster_xscreensaver_function_table,
- *blinkbox_xscreensaver_function_table,
- *blitspin_xscreensaver_function_table,
- *blocktube_xscreensaver_function_table,
- *boing_xscreensaver_function_table,
- *bouboule_xscreensaver_function_table,
- *bouncingcow_xscreensaver_function_table,
- *boxed_xscreensaver_function_table,
- *boxfit_xscreensaver_function_table,
- *braid_xscreensaver_function_table,
- *bsod_xscreensaver_function_table,
- *bubble3d_xscreensaver_function_table,
- *bumps_xscreensaver_function_table,
- *cage_xscreensaver_function_table,
- *carousel_xscreensaver_function_table,
- *ccurve_xscreensaver_function_table,
- *celtic_xscreensaver_function_table,
- *circuit_xscreensaver_function_table,
- *cloudlife_xscreensaver_function_table,
- *companioncube_xscreensaver_function_table,
- *compass_xscreensaver_function_table,
- *coral_xscreensaver_function_table,
- *crackberg_xscreensaver_function_table,
- *crystal_xscreensaver_function_table,
- *cube21_xscreensaver_function_table,
- *cubenetic_xscreensaver_function_table,
- *cubestorm_xscreensaver_function_table,
- *cubicgrid_xscreensaver_function_table,
- *cwaves_xscreensaver_function_table,
- *cynosure_xscreensaver_function_table,
- *dangerball_xscreensaver_function_table,
- *decayscreen_xscreensaver_function_table,
- *deco_xscreensaver_function_table,
- *deluxe_xscreensaver_function_table,
- *demon_xscreensaver_function_table,
- *discrete_xscreensaver_function_table,
- *distort_xscreensaver_function_table,
- *dnalogo_xscreensaver_function_table,
- *drift_xscreensaver_function_table,
- *endgame_xscreensaver_function_table,
- *engine_xscreensaver_function_table,
- *epicycle_xscreensaver_function_table,
- *eruption_xscreensaver_function_table,
- *euler2d_xscreensaver_function_table,
- *fadeplot_xscreensaver_function_table,
- *fiberlamp_xscreensaver_function_table,
- *fireworkx_xscreensaver_function_table,
- *flame_xscreensaver_function_table,
- *flipflop_xscreensaver_function_table,
- *flipscreen3d_xscreensaver_function_table,
- *fliptext_xscreensaver_function_table,
- *flow_xscreensaver_function_table,
- *fluidballs_xscreensaver_function_table,
- *flyingtoasters_xscreensaver_function_table,
- *fontglide_xscreensaver_function_table,
- *fuzzyflakes_xscreensaver_function_table,
- *galaxy_xscreensaver_function_table,
- *gears_xscreensaver_function_table,
- *gflux_xscreensaver_function_table,
- *glblur_xscreensaver_function_table,
- *glcells_xscreensaver_function_table,
- *gleidescope_xscreensaver_function_table,
- *glhanoi_xscreensaver_function_table,
- *glknots_xscreensaver_function_table,
- *glmatrix_xscreensaver_function_table,
- *glplanet_xscreensaver_function_table,
- *glschool_xscreensaver_function_table,
- *glslideshow_xscreensaver_function_table,
- *glsnake_xscreensaver_function_table,
- *gltext_xscreensaver_function_table,
- *goop_xscreensaver_function_table,
- *grav_xscreensaver_function_table,
- *greynetic_xscreensaver_function_table,
- *halftone_xscreensaver_function_table,
- *halo_xscreensaver_function_table,
- *helix_xscreensaver_function_table,
- *hilbert_xscreensaver_function_table,
- *hopalong_xscreensaver_function_table,
- *hypertorus_xscreensaver_function_table,
- *hypnowheel_xscreensaver_function_table,
- *ifs_xscreensaver_function_table,
- *imsmap_xscreensaver_function_table,
- *interaggregate_xscreensaver_function_table,
- *interference_xscreensaver_function_table,
- *intermomentary_xscreensaver_function_table,
- *jigglypuff_xscreensaver_function_table,
- *jigsaw_xscreensaver_function_table,
- *juggler3d_xscreensaver_function_table,
- *julia_xscreensaver_function_table,
- *kaleidescope_xscreensaver_function_table,
- *klein_xscreensaver_function_table,
- *kumppa_xscreensaver_function_table,
- *lament_xscreensaver_function_table,
- *lavalite_xscreensaver_function_table,
- *loop_xscreensaver_function_table,
- *m6502_xscreensaver_function_table,
- *maze_xscreensaver_function_table,
- *memscroller_xscreensaver_function_table,
- *menger_xscreensaver_function_table,
- *metaballs_xscreensaver_function_table,
- *mirrorblob_xscreensaver_function_table,
- *moebius_xscreensaver_function_table,
- *moebiusgears_xscreensaver_function_table,
- *moire_xscreensaver_function_table,
- *moire2_xscreensaver_function_table,
- *molecule_xscreensaver_function_table,
- *morph3d_xscreensaver_function_table,
- *mountain_xscreensaver_function_table,
- *munch_xscreensaver_function_table,
- *nerverot_xscreensaver_function_table,
- *noof_xscreensaver_function_table,
- *noseguy_xscreensaver_function_table,
- *pacman_xscreensaver_function_table,
- *pedal_xscreensaver_function_table,
- *penetrate_xscreensaver_function_table,
- *penrose_xscreensaver_function_table,
- *petri_xscreensaver_function_table,
- *phosphor_xscreensaver_function_table,
- *photopile_xscreensaver_function_table,
- *piecewise_xscreensaver_function_table,
- *pinion_xscreensaver_function_table,
- *pipes_xscreensaver_function_table,
- *polyhedra_xscreensaver_function_table,
- *polyominoes_xscreensaver_function_table,
- *polytopes_xscreensaver_function_table,
- *pong_xscreensaver_function_table,
- *popsquares_xscreensaver_function_table,
- *providence_xscreensaver_function_table,
- *pulsar_xscreensaver_function_table,
- *pyro_xscreensaver_function_table,
- *qix_xscreensaver_function_table,
- *queens_xscreensaver_function_table,
- *rdbomb_xscreensaver_function_table,
- *ripples_xscreensaver_function_table,
- *rocks_xscreensaver_function_table,
- *rorschach_xscreensaver_function_table,
- *rotzoomer_xscreensaver_function_table,
- *rubik_xscreensaver_function_table,
- *rubikblocks_xscreensaver_function_table,
- *sballs_xscreensaver_function_table,
- *shadebobs_xscreensaver_function_table,
- *sierpinski_xscreensaver_function_table,
- *sierpinski3d_xscreensaver_function_table,
- *skytentacles_xscreensaver_function_table,
- *slidescreen_xscreensaver_function_table,
- *slip_xscreensaver_function_table,
- *sonar_xscreensaver_function_table,
- *speedmine_xscreensaver_function_table,
- *spheremonics_xscreensaver_function_table,
- *spotlight_xscreensaver_function_table,
- *sproingies_xscreensaver_function_table,
- *squiral_xscreensaver_function_table,
- *stairs_xscreensaver_function_table,
- *starfish_xscreensaver_function_table,
- *starwars_xscreensaver_function_table,
- *stonerview_xscreensaver_function_table,
- *strange_xscreensaver_function_table,
- *substrate_xscreensaver_function_table,
- *superquadrics_xscreensaver_function_table,
- *surfaces_xscreensaver_function_table,
- *swirl_xscreensaver_function_table,
- *tangram_xscreensaver_function_table,
- *thornbird_xscreensaver_function_table,
- *timetunnel_xscreensaver_function_table,
- *topblock_xscreensaver_function_table,
- *triangle_xscreensaver_function_table,
- *tronbit_xscreensaver_function_table,
- *truchet_xscreensaver_function_table,
- *twang_xscreensaver_function_table,
- *vermiculate_xscreensaver_function_table,
- *voronoi_xscreensaver_function_table,
- *wander_xscreensaver_function_table,
- *whirlwindwarp_xscreensaver_function_table,
- *wormhole_xscreensaver_function_table,
- *xanalogtv_xscreensaver_function_table,
- *xflame_xscreensaver_function_table,
- *xjack_xscreensaver_function_table,
- *xlyap_xscreensaver_function_table,
- *xmatrix_xscreensaver_function_table,
- *xrayswarm_xscreensaver_function_table,
- *xspirograph_xscreensaver_function_table,
- *zoom_xscreensaver_function_table;
-
-static NSDictionary *make_function_tables_dict(void)
-{
- return
- [NSDictionary dictionaryWithObjectsAndKeys:
- [NSValue valueWithPointer:&abstractile_xscreensaver_function_table], @"abstractile",
- [NSValue valueWithPointer:&anemone_xscreensaver_function_table], @"anemone",
- [NSValue valueWithPointer:&anemotaxis_xscreensaver_function_table], @"anemotaxis",
- [NSValue valueWithPointer:&antinspect_xscreensaver_function_table], @"antinspect",
- [NSValue valueWithPointer:&antmaze_xscreensaver_function_table], @"antmaze",
- [NSValue valueWithPointer:&antspotlight_xscreensaver_function_table], @"antspotlight",
- [NSValue valueWithPointer:&apollonian_xscreensaver_function_table], @"apollonian",
- [NSValue valueWithPointer:&apple2_xscreensaver_function_table], @"apple2",
- [NSValue valueWithPointer:&atlantis_xscreensaver_function_table], @"atlantis",
- [NSValue valueWithPointer:&attraction_xscreensaver_function_table], @"attraction",
- [NSValue valueWithPointer:&atunnel_xscreensaver_function_table], @"atunnel",
- [NSValue valueWithPointer:&barcode_xscreensaver_function_table], @"barcode",
- [NSValue valueWithPointer:&blaster_xscreensaver_function_table], @"blaster",
- [NSValue valueWithPointer:&blinkbox_xscreensaver_function_table], @"blinkbox",
- [NSValue valueWithPointer:&blitspin_xscreensaver_function_table], @"blitspin",
- [NSValue valueWithPointer:&blocktube_xscreensaver_function_table], @"blocktube",
- [NSValue valueWithPointer:&boing_xscreensaver_function_table], @"boing",
- [NSValue valueWithPointer:&bouboule_xscreensaver_function_table], @"bouboule",
- [NSValue valueWithPointer:&bouncingcow_xscreensaver_function_table], @"bouncingcow",
- [NSValue valueWithPointer:&boxed_xscreensaver_function_table], @"boxed",
- [NSValue valueWithPointer:&boxfit_xscreensaver_function_table], @"boxfit",
- [NSValue valueWithPointer:&braid_xscreensaver_function_table], @"braid",
- [NSValue valueWithPointer:&bsod_xscreensaver_function_table], @"bsod",
- [NSValue valueWithPointer:&bubble3d_xscreensaver_function_table], @"bubble3d",
- [NSValue valueWithPointer:&bumps_xscreensaver_function_table], @"bumps",
- [NSValue valueWithPointer:&cage_xscreensaver_function_table], @"cage",
- [NSValue valueWithPointer:&carousel_xscreensaver_function_table], @"carousel",
- [NSValue valueWithPointer:&ccurve_xscreensaver_function_table], @"ccurve",
- [NSValue valueWithPointer:&celtic_xscreensaver_function_table], @"celtic",
- [NSValue valueWithPointer:&circuit_xscreensaver_function_table], @"circuit",
- [NSValue valueWithPointer:&cloudlife_xscreensaver_function_table], @"cloudlife",
- [NSValue valueWithPointer:&companioncube_xscreensaver_function_table], @"companioncube",
- [NSValue valueWithPointer:&compass_xscreensaver_function_table], @"compass",
- [NSValue valueWithPointer:&coral_xscreensaver_function_table], @"coral",
- [NSValue valueWithPointer:&crackberg_xscreensaver_function_table], @"crackberg",
- [NSValue valueWithPointer:&crystal_xscreensaver_function_table], @"crystal",
- [NSValue valueWithPointer:&cube21_xscreensaver_function_table], @"cube21",
- [NSValue valueWithPointer:&cubenetic_xscreensaver_function_table], @"cubenetic",
- [NSValue valueWithPointer:&cubestorm_xscreensaver_function_table], @"cubestorm",
- [NSValue valueWithPointer:&cubicgrid_xscreensaver_function_table], @"cubicgrid",
- [NSValue valueWithPointer:&cwaves_xscreensaver_function_table], @"cwaves",
- [NSValue valueWithPointer:&cynosure_xscreensaver_function_table], @"cynosure",
- [NSValue valueWithPointer:&dangerball_xscreensaver_function_table], @"dangerball",
- [NSValue valueWithPointer:&decayscreen_xscreensaver_function_table], @"decayscreen",
- [NSValue valueWithPointer:&deco_xscreensaver_function_table], @"deco",
- [NSValue valueWithPointer:&deluxe_xscreensaver_function_table], @"deluxe",
- [NSValue valueWithPointer:&demon_xscreensaver_function_table], @"demon",
- [NSValue valueWithPointer:&discrete_xscreensaver_function_table], @"discrete",
- [NSValue valueWithPointer:&distort_xscreensaver_function_table], @"distort",
- [NSValue valueWithPointer:&dnalogo_xscreensaver_function_table], @"dnalogo",
- [NSValue valueWithPointer:&drift_xscreensaver_function_table], @"drift",
- [NSValue valueWithPointer:&endgame_xscreensaver_function_table], @"endgame",
- [NSValue valueWithPointer:&engine_xscreensaver_function_table], @"engine",
- [NSValue valueWithPointer:&epicycle_xscreensaver_function_table], @"epicycle",
- [NSValue valueWithPointer:&eruption_xscreensaver_function_table], @"eruption",
- [NSValue valueWithPointer:&euler2d_xscreensaver_function_table], @"euler2d",
- [NSValue valueWithPointer:&fadeplot_xscreensaver_function_table], @"fadeplot",
- [NSValue valueWithPointer:&fiberlamp_xscreensaver_function_table], @"fiberlamp",
- [NSValue valueWithPointer:&fireworkx_xscreensaver_function_table], @"fireworkx",
- [NSValue valueWithPointer:&flame_xscreensaver_function_table], @"flame",
- [NSValue valueWithPointer:&flipflop_xscreensaver_function_table], @"flipflop",
- [NSValue valueWithPointer:&flipscreen3d_xscreensaver_function_table], @"flipscreen3d",
- [NSValue valueWithPointer:&fliptext_xscreensaver_function_table], @"fliptext",
- [NSValue valueWithPointer:&flow_xscreensaver_function_table], @"flow",
- [NSValue valueWithPointer:&fluidballs_xscreensaver_function_table], @"fluidballs",
- [NSValue valueWithPointer:&flyingtoasters_xscreensaver_function_table], @"flyingtoasters",
- [NSValue valueWithPointer:&fontglide_xscreensaver_function_table], @"fontglide",
- [NSValue valueWithPointer:&fuzzyflakes_xscreensaver_function_table], @"fuzzyflakes",
- [NSValue valueWithPointer:&galaxy_xscreensaver_function_table], @"galaxy",
- [NSValue valueWithPointer:&gears_xscreensaver_function_table], @"gears",
- [NSValue valueWithPointer:&gflux_xscreensaver_function_table], @"gflux",
- [NSValue valueWithPointer:&glblur_xscreensaver_function_table], @"glblur",
- [NSValue valueWithPointer:&glcells_xscreensaver_function_table], @"glcells",
- [NSValue valueWithPointer:&gleidescope_xscreensaver_function_table], @"gleidescope",
- [NSValue valueWithPointer:&glhanoi_xscreensaver_function_table], @"glhanoi",
- [NSValue valueWithPointer:&glknots_xscreensaver_function_table], @"glknots",
- [NSValue valueWithPointer:&glmatrix_xscreensaver_function_table], @"glmatrix",
- [NSValue valueWithPointer:&glplanet_xscreensaver_function_table], @"glplanet",
- [NSValue valueWithPointer:&glschool_xscreensaver_function_table], @"glschool",
- [NSValue valueWithPointer:&glslideshow_xscreensaver_function_table], @"glslideshow",
- [NSValue valueWithPointer:&glsnake_xscreensaver_function_table], @"glsnake",
- [NSValue valueWithPointer:&gltext_xscreensaver_function_table], @"gltext",
- [NSValue valueWithPointer:&goop_xscreensaver_function_table], @"goop",
- [NSValue valueWithPointer:&grav_xscreensaver_function_table], @"grav",
- [NSValue valueWithPointer:&greynetic_xscreensaver_function_table], @"greynetic",
- [NSValue valueWithPointer:&halftone_xscreensaver_function_table], @"halftone",
- [NSValue valueWithPointer:&halo_xscreensaver_function_table], @"halo",
- [NSValue valueWithPointer:&helix_xscreensaver_function_table], @"helix",
- [NSValue valueWithPointer:&hilbert_xscreensaver_function_table], @"hilbert",
- [NSValue valueWithPointer:&hopalong_xscreensaver_function_table], @"hopalong",
- [NSValue valueWithPointer:&hypertorus_xscreensaver_function_table], @"hypertorus",
- [NSValue valueWithPointer:&hypnowheel_xscreensaver_function_table], @"hypnowheel",
- [NSValue valueWithPointer:&ifs_xscreensaver_function_table], @"ifs",
- [NSValue valueWithPointer:&imsmap_xscreensaver_function_table], @"imsmap",
- [NSValue valueWithPointer:&interaggregate_xscreensaver_function_table], @"interaggregate",
- [NSValue valueWithPointer:&interference_xscreensaver_function_table], @"interference",
- [NSValue valueWithPointer:&intermomentary_xscreensaver_function_table], @"intermomentary",
- [NSValue valueWithPointer:&jigglypuff_xscreensaver_function_table], @"jigglypuff",
- [NSValue valueWithPointer:&jigsaw_xscreensaver_function_table], @"jigsaw",
- [NSValue valueWithPointer:&juggler3d_xscreensaver_function_table], @"juggler3d",
- [NSValue valueWithPointer:&julia_xscreensaver_function_table], @"julia",
- [NSValue valueWithPointer:&kaleidescope_xscreensaver_function_table], @"kaleidescope",
- [NSValue valueWithPointer:&klein_xscreensaver_function_table], @"klein",
- [NSValue valueWithPointer:&kumppa_xscreensaver_function_table], @"kumppa",
- [NSValue valueWithPointer:&lament_xscreensaver_function_table], @"lament",
- [NSValue valueWithPointer:&lavalite_xscreensaver_function_table], @"lavalite",
- [NSValue valueWithPointer:&loop_xscreensaver_function_table], @"loop",
- [NSValue valueWithPointer:&m6502_xscreensaver_function_table], @"m6502",
- [NSValue valueWithPointer:&maze_xscreensaver_function_table], @"maze",
- [NSValue valueWithPointer:&memscroller_xscreensaver_function_table], @"memscroller",
- [NSValue valueWithPointer:&menger_xscreensaver_function_table], @"menger",
- [NSValue valueWithPointer:&metaballs_xscreensaver_function_table], @"metaballs",
- [NSValue valueWithPointer:&mirrorblob_xscreensaver_function_table], @"mirrorblob",
- [NSValue valueWithPointer:&moebius_xscreensaver_function_table], @"moebius",
- [NSValue valueWithPointer:&moebiusgears_xscreensaver_function_table], @"moebiusgears",
- [NSValue valueWithPointer:&moire_xscreensaver_function_table], @"moire",
- [NSValue valueWithPointer:&moire2_xscreensaver_function_table], @"moire2",
- [NSValue valueWithPointer:&molecule_xscreensaver_function_table], @"molecule",
- [NSValue valueWithPointer:&morph3d_xscreensaver_function_table], @"morph3d",
- [NSValue valueWithPointer:&mountain_xscreensaver_function_table], @"mountain",
- [NSValue valueWithPointer:&munch_xscreensaver_function_table], @"munch",
- [NSValue valueWithPointer:&nerverot_xscreensaver_function_table], @"nerverot",
- [NSValue valueWithPointer:&noof_xscreensaver_function_table], @"noof",
- [NSValue valueWithPointer:&noseguy_xscreensaver_function_table], @"noseguy",
- [NSValue valueWithPointer:&pacman_xscreensaver_function_table], @"pacman",
- [NSValue valueWithPointer:&pedal_xscreensaver_function_table], @"pedal",
- [NSValue valueWithPointer:&penetrate_xscreensaver_function_table], @"penetrate",
- [NSValue valueWithPointer:&penrose_xscreensaver_function_table], @"penrose",
- [NSValue valueWithPointer:&petri_xscreensaver_function_table], @"petri",
- [NSValue valueWithPointer:&phosphor_xscreensaver_function_table], @"phosphor",
- [NSValue valueWithPointer:&photopile_xscreensaver_function_table], @"photopile",
- [NSValue valueWithPointer:&piecewise_xscreensaver_function_table], @"piecewise",
- [NSValue valueWithPointer:&pinion_xscreensaver_function_table], @"pinion",
- [NSValue valueWithPointer:&pipes_xscreensaver_function_table], @"pipes",
- [NSValue valueWithPointer:&polyhedra_xscreensaver_function_table], @"polyhedra",
- [NSValue valueWithPointer:&polyominoes_xscreensaver_function_table], @"polyominoes",
- [NSValue valueWithPointer:&polytopes_xscreensaver_function_table], @"polytopes",
- [NSValue valueWithPointer:&pong_xscreensaver_function_table], @"pong",
- [NSValue valueWithPointer:&popsquares_xscreensaver_function_table], @"popsquares",
- [NSValue valueWithPointer:&providence_xscreensaver_function_table], @"providence",
- [NSValue valueWithPointer:&pulsar_xscreensaver_function_table], @"pulsar",
- [NSValue valueWithPointer:&pyro_xscreensaver_function_table], @"pyro",
- [NSValue valueWithPointer:&qix_xscreensaver_function_table], @"qix",
- [NSValue valueWithPointer:&queens_xscreensaver_function_table], @"queens",
- [NSValue valueWithPointer:&rdbomb_xscreensaver_function_table], @"rdbomb",
- [NSValue valueWithPointer:&ripples_xscreensaver_function_table], @"ripples",
- [NSValue valueWithPointer:&rocks_xscreensaver_function_table], @"rocks",
- [NSValue valueWithPointer:&rorschach_xscreensaver_function_table], @"rorschach",
- [NSValue valueWithPointer:&rotzoomer_xscreensaver_function_table], @"rotzoomer",
- [NSValue valueWithPointer:&rubik_xscreensaver_function_table], @"rubik",
- [NSValue valueWithPointer:&rubikblocks_xscreensaver_function_table], @"rubikblocks",
- [NSValue valueWithPointer:&sballs_xscreensaver_function_table], @"sballs",
- [NSValue valueWithPointer:&shadebobs_xscreensaver_function_table], @"shadebobs",
- [NSValue valueWithPointer:&sierpinski_xscreensaver_function_table], @"sierpinski",
- [NSValue valueWithPointer:&sierpinski3d_xscreensaver_function_table], @"sierpinski3d",
- [NSValue valueWithPointer:&skytentacles_xscreensaver_function_table], @"skytentacles",
- [NSValue valueWithPointer:&slidescreen_xscreensaver_function_table], @"slidescreen",
- [NSValue valueWithPointer:&slip_xscreensaver_function_table], @"slip",
- [NSValue valueWithPointer:&sonar_xscreensaver_function_table], @"sonar",
- [NSValue valueWithPointer:&speedmine_xscreensaver_function_table], @"speedmine",
- [NSValue valueWithPointer:&spheremonics_xscreensaver_function_table], @"spheremonics",
- [NSValue valueWithPointer:&spotlight_xscreensaver_function_table], @"spotlight",
- [NSValue valueWithPointer:&sproingies_xscreensaver_function_table], @"sproingies",
- [NSValue valueWithPointer:&squiral_xscreensaver_function_table], @"squiral",
- [NSValue valueWithPointer:&stairs_xscreensaver_function_table], @"stairs",
- [NSValue valueWithPointer:&starfish_xscreensaver_function_table], @"starfish",
- [NSValue valueWithPointer:&starwars_xscreensaver_function_table], @"starwars",
- [NSValue valueWithPointer:&stonerview_xscreensaver_function_table], @"stonerview",
- [NSValue valueWithPointer:&strange_xscreensaver_function_table], @"strange",
- [NSValue valueWithPointer:&substrate_xscreensaver_function_table], @"substrate",
- [NSValue valueWithPointer:&superquadrics_xscreensaver_function_table], @"superquadrics",
- [NSValue valueWithPointer:&surfaces_xscreensaver_function_table], @"surfaces",
- [NSValue valueWithPointer:&swirl_xscreensaver_function_table], @"swirl",
- [NSValue valueWithPointer:&tangram_xscreensaver_function_table], @"tangram",
- [NSValue valueWithPointer:þbird_xscreensaver_function_table], @"thornbird",
- [NSValue valueWithPointer:&timetunnel_xscreensaver_function_table], @"timetunnel",
- [NSValue valueWithPointer:&topblock_xscreensaver_function_table], @"topblock",
- [NSValue valueWithPointer:&triangle_xscreensaver_function_table], @"triangle",
- [NSValue valueWithPointer:&tronbit_xscreensaver_function_table], @"tronbit",
- [NSValue valueWithPointer:&truchet_xscreensaver_function_table], @"truchet",
- [NSValue valueWithPointer:&twang_xscreensaver_function_table], @"twang",
- [NSValue valueWithPointer:&vermiculate_xscreensaver_function_table], @"vermiculate",
- [NSValue valueWithPointer:&voronoi_xscreensaver_function_table], @"voronoi",
- [NSValue valueWithPointer:&wander_xscreensaver_function_table], @"wander",
- [NSValue valueWithPointer:&whirlwindwarp_xscreensaver_function_table], @"whirlwindwarp",
- [NSValue valueWithPointer:&wormhole_xscreensaver_function_table], @"wormhole",
- [NSValue valueWithPointer:&xanalogtv_xscreensaver_function_table], @"xanalogtv",
- [NSValue valueWithPointer:&xflame_xscreensaver_function_table], @"xflame",
- [NSValue valueWithPointer:&xjack_xscreensaver_function_table], @"xjack",
- [NSValue valueWithPointer:&xlyap_xscreensaver_function_table], @"xlyap",
- [NSValue valueWithPointer:&xmatrix_xscreensaver_function_table], @"xmatrix",
- [NSValue valueWithPointer:&xrayswarm_xscreensaver_function_table], @"xrayswarm",
- [NSValue valueWithPointer:&xspirograph_xscreensaver_function_table], @"xspirograph",
- [NSValue valueWithPointer:&zoom_xscreensaver_function_table], @"zoom",
- nil];
-}
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<screensaver name="phosphor" _label="Phosphor">
+
+ <command arg="-root"/>
+
+ <hgroup>
+ <vgroup>
+ <number id="delay" type="slider" arg="-delay %"
+ _label="Frame rate" _low-label="Low" _high-label="High"
+ low="0" high="100000" default="50000"
+ convert="invert"/>
+
+ <number id="scale" type="spinbutton" arg="-scale %"
+ _label="Font scale" low="1" high="20" default="6"/>
+
+ <number id="fade" type="slider" arg="-ticks %"
+ _label="Fade" _low-label="Slow" _high-label="Fast"
+ low="1" high="100" default="20"
+ convert="invert"/>
+ </vgroup>
+ </hgroup>
+
+ <_description>
+A fully-functional VT100 terminal emulator simulating an old terminal,
+with large pixels and long-sustain phosphor.
+
+Written by Jamie Zawinski; 1999.
+ </_description>
+</screensaver>
#!/usr/bin/perl -w
-# Copyright © 2006-2013 Jamie Zawinski <jwz@jwz.org>
+# Copyright © 2006-2013 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
my ($exec_dir, $progname) = ($0 =~ m@^(.*?)/([^/]+)$@);
-my $version = q{ $Revision: 1.23 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.24 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
$ENV{PATH} = "/usr/local/bin:$ENV{PATH}"; # for seticon
} else {
error ("$file: $!");
}
+ print STDERR "$progname: read $file\n" if ($verbose > 2);
local $/ = undef; # read entire file
my $body = <$in>;
close $in;
} else {
error ("$file: $!");
}
+ print STDERR "$progname: read $file\n" if ($verbose > 2);
local $/ = undef; # read entire file
my $body = <$in>;
close $in;
#!/usr/bin/perl -w
-# Copyright © 2006-2012 Jamie Zawinski <jwz@jwz.org>
+# Copyright © 2006-2013 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
use strict;
my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.1 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.2 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
my $verbose = 1;
+$ENV{PATH} = "/opt/local/bin:$ENV{PATH}"; # MacPorts, for ImageMagick
+
sub safe_system(@) {
my @cmd = @_;
===============================================================================
+Changes since 5.21: * New hacks, `kaleidocycle', `quasicrystal',
+ `unknownpleasures' and `hexadrop'.
+ * Performance improvements for `interference'.
+ * Fixed possible crashes in `apple2', `maze', `pacman',
+ `polyominoes', `fireworkx', `engine'.
+ * Fix for `bumps' in 64 bit.
+ * Fixed preferences crash on old iOS 5 devices.
+ * Fixed "Shake to Randomize"; display name of saver.
+ * Fixed weirdness with "Frame Rate" sliders on iOS.
+ * Fixed rotation problems with `pacman', `decayscreen'.
+ * Better dragging in `fluidballs'.
+ * Ignore rotation in hacks that don't benefit from it.
+ * Ignore DEACTIVATE messages when locked, instead of
+ popping up the password dialog box.
Changes since 5.20: * Changed default text source from Twitter to Wikipedia,
since Twitter now requires a login to get any feeds.
* New version of `fireworkx'.
! a screen saver and locker for the X window system
! by Jamie Zawinski
!
-! version 5.21
-! 04-Feb-2013
+! version 5.22
+! 16-Jul-2013
!
! See "man xscreensaver" for more info. The latest version is always
! available at http://www.jwz.org/xscreensaver/
@GL_KLUDGE@ GL: rubikblocks -root \n\
@GL_KLUDGE@ GL: companioncube -root \n\
@GL_KLUDGE@ GL: hilbert -root \n\
-@GL_KLUDGE@ GL: tronbit -root \n
+@GL_KLUDGE@ GL: tronbit -root \n\
+ hexadrop -root \n\
+@GL_KLUDGE@ GL: kaleidocycle -root \n\
+@GL_KLUDGE@ GL: quasicrystal -root \n\
+@GL_KLUDGE@ GL: unknownpleasures -root \n
*hacks.nerverot.name: NerveRot
*hacks.noseguy.name: NoseGuy
*hacks.popsquares.name: PopSquares
+*hacks.quasicrystal.name: QuasiCrystal
*hacks.rd-bomb.name: RDbomb
*hacks.rdbomb.name: RDbomb
*hacks.rotzoomer.name: RotZoomer
*hacks.timetunnel.name: TimeTunnel
*hacks.topblock.name: TopBlock
*hacks.tronbit.name: TronBit
+*hacks.unknownpleasures.name:UnknownPleasures
*hacks.vidwhacker.name: VidWhacker
*hacks.webcollage.name: WebCollage
*hacks.whirlwindwarp.name: WhirlWindWarp
GL: rubikblocks -root \\n\
GL: companioncube -root \\n\
GL: hilbert -root \\n\
- GL: tronbit -root \\n",
+ GL: tronbit -root \\n\
+ hexadrop -root \\n\
+ GL: kaleidocycle -root \\n\
+ GL: quasicrystal -root \\n\
+ GL: unknownpleasures -root \\n",
"XScreenSaver.pointerPollTime: 0:00:05",
"XScreenSaver.pointerHysteresis: 10",
"XScreenSaver.initialDelay: 0:00:00",
"*hacks.nerverot.name: NerveRot",
"*hacks.noseguy.name: NoseGuy",
"*hacks.popsquares.name: PopSquares",
+"*hacks.quasicrystal.name: QuasiCrystal",
"*hacks.rd-bomb.name: RDbomb",
"*hacks.rdbomb.name: RDbomb",
"*hacks.rotzoomer.name: RotZoomer",
"*hacks.timetunnel.name: TimeTunnel",
"*hacks.topblock.name: TopBlock",
"*hacks.tronbit.name: TronBit",
+"*hacks.unknownpleasures.name:UnknownPleasures",
"*hacks.vidwhacker.name: VidWhacker",
"*hacks.webcollage.name: WebCollage",
"*hacks.whirlwindwarp.name: WhirlWindWarp",
/* exec.c --- executes a program in *this* pid, without an intervening process.
- * xscreensaver, Copyright (c) 1991-2008 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1991-2013 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
strcat (p2, "/");
strcat (p2, cmd);
result = (0 == stat (p2, &st));
+ free (p2);
if (result)
goto DONE;
token = strtok (0, ":");
#!/usr/bin/perl -w
-# Copyright © 2001-2012 Jamie Zawinski <jwz@jwz.org>.
+# Copyright © 2001-2013 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
my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.34 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.35 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
my $verbose = 0;
sub html_unquote($) {
my ($h) = @_;
+
+ # This only needs to handle entities that occur in RSS, not full HTML.
my %ent = ( 'amp' => '&', 'lt' => '<', 'gt' => '>',
'quot' => '"', 'apos' => "'" );
$h =~ s/(&(\#)?([[:alpha:]\d]+);?)/
-/* xscreensaver, Copyright (c) 2001-2012 by Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2001-2013 by 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
draw_colorbars (screen, xgwa.visual, drawable, xgwa.colormap,
0, 0, 0, 0);
XSync (dpy, False);
+ if (! file_prop) file_prop = "";
+
}
break;
{
Atom a = XInternAtom (dpy, XA_XSCREENSAVER_IMAGE_FILENAME, False);
if (file_prop && *file_prop)
- XChangeProperty (dpy, window, a, XA_STRING, 8, PropModeReplace,
- (unsigned char *) file_prop, strlen(file_prop));
+ {
+ char *f2 = strdup (file_prop);
+
+ /* Take the extension off of the file name. */
+ /* Duplicated in utils/grabclient.c. */
+ char *slash = strrchr (f2, '/');
+ char *dot = strrchr ((slash ? slash : f2), '.');
+ if (dot) *dot = 0;
+ /* Replace slashes with newlines */
+ /* while ((dot = strchr(f2, '/'))) *dot = '\n'; */
+ /* Replace slashes with spaces */
+ while ((dot = strchr(f2, '/'))) *dot = ' ';
+
+ XChangeProperty (dpy, window, a, XA_STRING, 8, PropModeReplace,
+ (unsigned char *) f2, strlen(f2));
+ free (f2);
+ }
else
XDeleteProperty (dpy, window, a);
}
else if (type == XA_DEACTIVATE)
{
- if (! until_idle_p)
- {
- if (si->throttled_p && p->verbose_p)
- fprintf (stderr, "%s: unthrottled.\n", blurb());
- si->throttled_p = False;
+ if (si->locked_p)
+ {
+ clientmessage_response(si, window, False,
+ "DEACTIVATE ClientMessage received while locked: ignored.",
+ "screen is locked.");
+ }
+ else
+ {
+ if (! until_idle_p)
+ {
+ if (si->throttled_p && p->verbose_p)
+ fprintf (stderr, "%s: unthrottled.\n", blurb());
+ si->throttled_p = False;
- clientmessage_response(si, window, False,
- "DEACTIVATE ClientMessage received.",
- "deactivating.");
- if (si->using_mit_saver_extension || si->using_sgi_saver_extension)
- {
- XForceScreenSaver (si->dpy, ScreenSaverReset);
- return False;
- }
- else
- {
- return True;
- }
- }
- clientmessage_response(si, window, False,
- "ClientMessage DEACTIVATE received while inactive: resetting idle timer.",
- "not active: idle timer reset.");
- reset_timers (si);
+ clientmessage_response(si, window, False,
+ "DEACTIVATE ClientMessage received.",
+ "deactivating.");
+ if (si->using_mit_saver_extension ||
+ si->using_sgi_saver_extension)
+ {
+ XForceScreenSaver (si->dpy, ScreenSaverReset);
+ return False;
+ }
+ else
+ {
+ return True;
+ }
+ }
+ clientmessage_response(si, window, False,
+ "ClientMessage DEACTIVATE received while inactive: "
+ "resetting idle timer.",
+ "not active: idle timer reset.");
+ reset_timers (si);
+ }
}
else if (type == XA_CYCLE)
{
fuzzyflakes.c anemotaxis.c memscroller.c substrate.c \
intermomentary.c fireworkx.c fiberlamp.c \
boxfit.c interaggregate.c celtic.c cwaves.c m6502.c \
- asm6502.c abstractile.c lcdscrub.c \
+ asm6502.c abstractile.c lcdscrub.c hexadrop.c \
webcollage-cocoa.m webcollage-helper-cocoa.m
SCRIPTS = vidwhacker webcollage ljlatest
intermomentary.o fireworkx.o fiberlamp.o boxfit.o \
interaggregate.o celtic.o cwaves.o webcollage-cocoa.o \
webcollage-helper-cocoa.o m6502.o asm6502.o abstractile.o \
- lcdscrub.o
+ lcdscrub.o hexadrop.o
EXES = attraction blitspin bouboule braid decayscreen deco \
drift flame galaxy grav greynetic halo \
fontglide apple2 xanalogtv pong wormhole \
pacman fuzzyflakes anemotaxis memscroller substrate \
intermomentary fireworkx fiberlamp boxfit interaggregate \
- celtic cwaves m6502 abstractile lcdscrub \
+ celtic cwaves m6502 abstractile lcdscrub hexadrop \
@JPEG_EXES@
JPEG_EXES = webcollage-helper
anemotaxis.man memscroller.man substrate.man \
intermomentary.man fireworkx.man fiberlamp.man boxfit.man \
interaggregate.man celtic.man cwaves.man abstractile.man \
- lcdscrub.man
+ lcdscrub.man hexadrop.man
RETIRED_MEN = ant.man bubbles.man critical.man flag.man forest.man \
laser.man lightning.man lisa.man lissie.man lmorph.man \
lcdscrub: lcdscrub.o $(HACK_OBJS)
$(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS)
+hexadrop: hexadrop.o $(HACK_OBJS) $(COL)
+ $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(HACK_LIBS)
+
# The rules for those hacks which follow the `xlockmore' API.
#
helix.o: $(UTILS_SRC)/usleep.h
helix.o: $(UTILS_SRC)/visual.h
helix.o: $(UTILS_SRC)/yarandom.h
+hexadrop.o: ../config.h
+hexadrop.o: $(srcdir)/fps.h
+hexadrop.o: $(srcdir)/screenhackI.h
+hexadrop.o: $(srcdir)/screenhack.h
+hexadrop.o: $(UTILS_SRC)/colors.h
+hexadrop.o: $(UTILS_SRC)/grabscreen.h
+hexadrop.o: $(UTILS_SRC)/hsv.h
+hexadrop.o: $(UTILS_SRC)/resources.h
+hexadrop.o: $(UTILS_SRC)/usleep.h
+hexadrop.o: $(UTILS_SRC)/visual.h
+hexadrop.o: $(UTILS_SRC)/yarandom.h
hopalong.o: ../config.h
hopalong.o: $(srcdir)/fps.h
hopalong.o: $(srcdir)/screenhackI.h
-/*
+/*
* Copyright (c) 2004-2009 Steve Sundstrom
*
* Permission to use, copy, modify, distribute, and sell this software and its
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation. No representations are made about the suitability of this
- * software for any purpose. It is provided "as is" without express or
+ * software for any purpose. It is provided "as is" without express or
* implied warranty.
*/
#define PT_NL 3
#define D3D_NONE 0
-#define D3D_BLOCK 1
+#define D3D_BLOCK 1
#define D3D_NEON 2
#define D3D_TILED 3
unsigned int line, hl, hr, vu, vd, dhl, dhr, dvu, dvd;
};
-/* basically the same as global variables, but used to keep them in a bucket
+/* basically the same as global variables, but used to keep them in a bucket
and pass them around easier like the original C++ implementation */
struct state {
/* window values */
int round;
int outline;
/* layered draw variables */
- int pattern[LAYERS], shape[LAYERS], mix[LAYERS];
- int csw[LAYERS], wsx[LAYERS], wsy[LAYERS], sec[LAYERS];
- int cs1[LAYERS], cs2[LAYERS], cs3[LAYERS]; int cs4[LAYERS];
- int wave[LAYERS], waveh[LAYERS], wavel[LAYERS];
+ int pattern[LAYERS], shape[LAYERS], mix[LAYERS];
+ int csw[LAYERS], wsx[LAYERS], wsy[LAYERS], sec[LAYERS];
+ int cs1[LAYERS], cs2[LAYERS], cs3[LAYERS]; int cs4[LAYERS];
+ int wave[LAYERS], waveh[LAYERS], wavel[LAYERS];
int rx1[LAYERS], rx2[LAYERS], rx3[LAYERS];
int ry1[LAYERS], ry2[LAYERS], ry3[LAYERS];
/* misc variables */
struct timeval time;
};
-static int
-_min(int a, int b)
+static int
+_min(int a, int b)
{
if (a<=b)
return(a);
return(b);
}
-static int
-_max(int a, int b)
+static int
+_max(int a, int b)
{
if (a>=b)
return(a);
return(b);
}
-static int
-_dist(struct state *st, int x1, int x2, int y1, int y2, int s)
+static int
+_dist(struct state *st, int x1, int x2, int y1, int y2, int s)
{
double xd=x1-x2;
double yd=y1-y2;
}
}
-static int
-_wave(struct state *st, int x, int h, int l, int wave)
+static int
+_wave(struct state *st, int x, int h, int l, int wave)
{
- l+=1;
+ l+=1;
switch(wave) {
case 0: /* cos wave*/
return((int)(cos((double)x*M_PI/l)*h));
case 4: /* giant zig zag */
return(abs((x%(l*4)-l*2))*h*3/l);
case 5: /* sawtooth */
- return((x%(l))*h/l);
+ return((x%(l))*h/l);
default: /* no wave */
return(0);
- }
+ }
}
-static int
-_triangle(struct state *st, int x, int y, int rx, int ry, int t)
+static int
+_triangle(struct state *st, int x, int y, int rx, int ry, int t)
{
switch(t) {
case 1:
return(_min(_min(x+y+rx-(st->gridx/2),st->gridx-x+y),(st->gridy-y+(ry/2))*3/2));
case 2:
- return(_min(_min(x-rx,y-ry),(rx+ry-x-y)*2/3));
+ return(_min(_min(x-rx,y-ry),(rx+ry-x-y)*2/3));
case 3:
return(_min(_min(st->gridx-x-rx,y-ry),(rx+ry-st->gridx+x-y)*2/3));
case 4:
return(_min(_min(x-rx,st->gridy-y-ry),(rx+ry-x-st->gridy+y)*2/3));
- }
+ }
return(_min(_min(st->gridx-x-rx,st->gridy-y-ry),(rx+ry-st->gridx+x-st->gridy+y)*2/3));
}
-static void
-_init_zlist(struct state *st)
+static void
+_init_zlist(struct state *st)
{
unsigned int tmp, y, z;
st->grid[z].line=st->grid[z].hl=st->grid[z].hr=st->grid[z].vu=st->grid[z].vd=st->grid[z].dhl=st->grid[z].dhr=st->grid[z].dvu=st->grid[z].dvd=0;
st->zlist[z]=z;
}
- /* rather than pull x,y points randomly and wait to hit final empy cells a
+ /* rather than pull x,y points randomly and wait to hit final empy cells a
list of all points is created and mixed so empty cells do get hit last */
for (z=0; z<st->gridn; z++) {
y=random()%st->gridn;
}
static void
-make_color_ramp_rgb (Display *dpy, Colormap cmap,
+make_color_ramp_rgb (Screen *screen, Visual *visual, Colormap cmap,
int r1, int g1, int b1, int r2, int g2, int b2,
- XColor *colors, int *ncolorsP,
- Bool closed_p, Bool allocate_p, Bool writable_p)
+ XColor *colors, int *ncolorsP, Bool closed_p)
{
int h1, h2;
double s1, s2, v1, v2;
rgb_to_hsv(r1, g1, b1, &h1, &s1, &v1);
rgb_to_hsv(r2, g2, b2, &h2, &s2, &v2);
- make_color_ramp(dpy, cmap, h1, s1, v1, h2, s2, v2,
- colors, ncolorsP, False, allocate_p, writable_p);
+ make_color_ramp(screen, visual, cmap, h1, s1, v1, h2, s2, v2,
+ colors, ncolorsP, False, True, 0);
}
-static void
+static void
_init_colors(struct state *st)
{
int col[BASECOLORS];
- int c1, c2, c3, h1, h2, h3;
+ int c1, c2, c3, h1, h2, h3;
int r1, g1, b1, r2, g2, b2, r3, g3, b3;
double s1, s2, s3, v1, v2, v3;
XColor tmp_col1[16], tmp_col2[16], tmp_col3[16];
/* 29 pink */ {0xFFFF,0x9999,0xFFFF}};
if (st->d3d) {
- st->shades = (st->d3d==D3D_TILED) ? 5 : st->lwid/2+1;
+ st->shades = (st->d3d==D3D_TILED) ? 5 : st->lwid/2+1;
st->ncolors=4+random()%4;
if (st->cmap>0) { /* tint the basecolors a bit */
for (c1=0; c1<BASECOLORS; c1++)
}
switch(st->cmap%4) {
case 0: /* all */
- for (c1=0; c1<st->ncolors; c1++)
+ for (c1=0; c1<st->ncolors; c1++)
col[c1]=random()%BASECOLORS;
break;
case 1: /* darks */
- for (c1=0; c1<st->ncolors; c1++)
+ for (c1=0; c1<st->ncolors; c1++)
col[c1]=random()%15;
break;
case 2: /* semi consecutive darks */
col[0]=random()%15;
- for (c1=1; c1<st->ncolors; c1++)
+ for (c1=1; c1<st->ncolors; c1++)
col[c1]=(col[c1-1]+1+random()%2)%15;
break;
case 3: /* consecutive darks */
col[0]=random()%(15-st->ncolors);
- for (c1=1; c1<st->ncolors; c1++)
+ for (c1=1; c1<st->ncolors; c1++)
col[c1]=col[c1-1]+1;
break;
}
for (c1=0; c1<st->ncolors; c1++) {
/* adjust colors already set */
- for (h1=c1*st->shades-1; h1>=0; h1--)
+ for (h1=c1*st->shades-1; h1>=0; h1--)
st->colors[h1+st->shades]=st->colors[h1];
- make_color_ramp_rgb(st->display, st->xgwa.colormap,
- basecol[col[c1]][0], basecol[col[c1]][1], basecol[col[c1]][2],
- 0xFFFF, 0xFFFF, 0xFFFF, st->colors, &st->shades,
- False, True, False);
+ make_color_ramp_rgb(st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
+ basecol[col[c1]][0], basecol[col[c1]][1], basecol[col[c1]][2],
+ 0xFFFF, 0xFFFF, 0xFFFF, st->colors, &st->shades,
+ False);
}
return;
}
/* not 3d */
st->shades=1;
if (st->cmap%2) { /* basecolors */
- if (random()%3) {
- c1=random()%15;
+ if (random()%3) {
+ c1=random()%15;
c2=(c1+3+(random()%5))%15;
c3=(c2+3+(random()%5))%15;
} else {
- c1=random()%BASECOLORS;
+ c1=random()%BASECOLORS;
c2=(c1+5+(random()%10))%BASECOLORS;
c3=(c2+5+(random()%10))%BASECOLORS;
}
st->ncolors=5+random()%5;
if (st->cmap>1)
r2=g2=b2=0xFFFF;
- make_color_ramp_rgb(st->display, st->xgwa.colormap,
- r1, g1, b1, r2, g2, b2,
- st->colors, &st->ncolors, random()%2, True, False);
+ make_color_ramp_rgb(st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
+ r1, g1, b1, r2, g2, b2,
+ st->colors, &st->ncolors, random()%2);
break;
case 4: /* 3 color make_color_loop */
case 5:
rgb_to_hsv(r2, g2, b2, &h2, &s2, &v2);
rgb_to_hsv(r3, g3, b3, &h3, &s3, &v3);
- make_color_loop(st->display, st->xgwa.colormap,
+ make_color_loop(st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
h1, s1, v1, h2, s2, v2, h3, s3, v3,
st->colors, &st->ncolors, True, False);
break;
case 8: /* random smooth */
case 9:
st->ncolors=(random()%4)*6+12;
- make_smooth_colormap (st->display, st->xgwa.visual,
- st->xgwa.colormap, st->colors, &st->ncolors,
+ make_smooth_colormap (st->xgwa.screen, st->xgwa.visual,
+ st->xgwa.colormap, st->colors, &st->ncolors,
True, False, True);
break;
case 10: /* rainbow */
st->ncolors=(random()%4)*6+12;
- make_uniform_colormap (st->display, st->xgwa.visual,
- st->xgwa.colormap, st->colors, &st->ncolors,
+ make_uniform_colormap (st->xgwa.screen, st->xgwa.visual,
+ st->xgwa.colormap, st->colors, &st->ncolors,
True, False, True);
break;
case 11: /* dark to light blend */
case 13:
case 14:
st->ncolors=7;
- make_color_ramp_rgb(st->display, st->xgwa.colormap,
- r1, g1, b1, 0xFFFF, 0xFFFF, 0xFFFF,
- tmp_col1, &st->ncolors, False, True, False);
- make_color_ramp_rgb(st->display, st->xgwa.colormap,
- r2, g2, b2, 0xFFFF, 0xFFFF, 0xFFFF,
- tmp_col2, &st->ncolors, False, True, False);
+ make_color_ramp_rgb(st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
+ r1, g1, b1, 0xFFFF, 0xFFFF, 0xFFFF,
+ tmp_col1, &st->ncolors, False);
+ make_color_ramp_rgb(st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
+ r2, g2, b2, 0xFFFF, 0xFFFF, 0xFFFF,
+ tmp_col2, &st->ncolors, False);
if (st->cmap<13) {
for(c1=0; c1<=4; c1++) {
st->colors[c1*2]=tmp_col1[c1];
}
st->ncolors=10;
} else {
- make_color_ramp_rgb(st->display, st->xgwa.colormap,
- r3, g3, b3, 0xFFFF, 0xFFFF, 0xFFFF,
- tmp_col3, &st->ncolors, False, True, False);
+ make_color_ramp_rgb(st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
+ r3, g3, b3, 0xFFFF, 0xFFFF, 0xFFFF,
+ tmp_col3, &st->ncolors, False);
for(c1=0; c1<=4; c1++) {
st->colors[c1*3]=tmp_col1[c1];
st->colors[c1*3+1]=tmp_col2[c1];
break;
default: /* random */
st->ncolors=(random()%4)*6+12;
- make_random_colormap (st->display, st->xgwa.visual,
- st->xgwa.colormap, st->colors, &st->ncolors,
+ make_random_colormap (st->xgwa.screen, st->xgwa.visual,
+ st->xgwa.colormap, st->colors, &st->ncolors,
False, True, False, True);
break;
}
static int _comparedeo(const void *i, const void *j)
{
struct lineStruct *h1, *h2;
-
+
h1=(struct lineStruct *)i;
h2=(struct lineStruct *)j;
if (h1->deo > h2->deo)
return(0);
}
-static int
+static int
_hv(struct state *st, int x, int y, int d1, int d2, int pn, Bool de)
{
int v1, v2, r;
return(r);
}
-static int
+static int
_getdeo(struct state *st, int x, int y, int map, int de)
{
int cr;
case 1: /* vertical one side */
return(y);
case 2: /* horizontal two side */
- return(_min(x,st->gridx-x)+1);
+ return(_min(x,st->gridx-x)+1);
case 3: /* vertical two side */
- return(_min(y,st->gridy-y)+1);
+ return(_min(y,st->gridy-y)+1);
case 4: /* square */
return(_max(abs(x-st->rx3[de]),abs(y-st->ry3[de]))+1);
case 5: /* two squares */
- return(_min(_max(abs(x-(st->rx3[de]/2)),abs(y-st->ry3[de])),_max(abs(x-(st->gridx-(st->rx2[de]/2))),abs(y-st->ry2[de])))+1);
+ return(_min(_max(abs(x-(st->rx3[de]/2)),abs(y-st->ry3[de])),_max(abs(x-(st->gridx-(st->rx2[de]/2))),abs(y-st->ry2[de])))+1);
case 6: /* horizontal rectangle */
- return(_max(abs(x-st->rx3[de]),abs(y-(st->ry3[de]))*st->cs1[de])+1);
+ return(_max(abs(x-st->rx3[de]),abs(y-(st->ry3[de]))*st->cs1[de])+1);
case 7: /* vertical rectangle */
- return(_max(abs(x-st->rx3[de])*st->cs1[de],abs(y-(st->ry3[de])))+1);
+ return(_max(abs(x-st->rx3[de])*st->cs1[de],abs(y-(st->ry3[de])))+1);
case 8: /* + cross */
- return(_min(abs(x-st->rx3[de]),abs(y-(st->ry3[de])))+1);
+ return(_min(abs(x-st->rx3[de]),abs(y-(st->ry3[de])))+1);
case 9: /* diagonal */
return((x*3/4+y)+1);
case 10: /* opposite diagonal */
- return((x*3/4+st->gridy-y)+1);
+ return((x*3/4+st->gridy-y)+1);
case 11: /* diamond */
- return((abs(x-st->rx3[de])+abs(y-st->ry3[de]))/2+1);
+ return((abs(x-st->rx3[de])+abs(y-st->ry3[de]))/2+1);
case 12: /* two diamonds */
return(_min(abs(x-(st->rx3[de]/2))+abs(y-st->ry3[de]),abs(x-(st->gridx-(st->rx2[de]/2)))+abs(y-st->ry2[de]))/2+1);
case 13: /* circle */
- return(_dist(st,x,st->rx3[de],y,st->ry3[de],0)+1);
+ return(_dist(st,x,st->rx3[de],y,st->ry3[de],0)+1);
case 14: /* horizontal ellipse */
- return(_dist(st,x,st->rx3[de],y,st->ry3[de],1)+1);
+ return(_dist(st,x,st->rx3[de],y,st->ry3[de],1)+1);
case 15: /* vertical ellipse */
- return(_dist(st,x,st->rx3[de],y,st->ry3[de],2)+1);
+ return(_dist(st,x,st->rx3[de],y,st->ry3[de],2)+1);
case 16: /* two circles */
- return(_min(_dist(st,x,st->rx3[de]/2,y,st->ry3[de],0),_dist(st,x,st->gridx-(st->rx2[de]/2),y,st->ry2[de],0))+1);
+ return(_min(_dist(st,x,st->rx3[de]/2,y,st->ry3[de],0),_dist(st,x,st->gridx-(st->rx2[de]/2),y,st->ry2[de],0))+1);
case 17: /* horizontal straight wave */
return(x+_wave(st,st->gridy+y,st->csw[0]*st->cs1[0],st->csw[0]*st->cs2[0],st->wave[de]));
case 18: /* vertical straight wave */
- return(y+_wave(st,st->gridx+x,st->csw[0]*st->cs1[0],st->csw[0]*st->cs2[0],st->wave[de]));
+ return(y+_wave(st,st->gridx+x,st->csw[0]*st->cs1[0],st->csw[0]*st->cs2[0],st->wave[de]));
case 19: /* horizontal wavey wave */
return(x+_wave(st,st->gridy+y+((x/5)*st->edir),st->csw[de]*st->cs1[de],st->csw[de]*st->cs2[de],st->wave[de])+1);
case 20: /* vertical wavey wave */
case 21: /* simultaneous directional */
return(_hv(st,x,y,st->cs1[0]%2,st->cs2[0]%2,1,de));
case 22: /* reverse directional */
- return(_hv(st,x,y,st->cs1[0]%2,st->cs2[0]%2,-1,de));
+ return(_hv(st,x,y,st->cs1[0]%2,st->cs2[0]%2,-1,de));
case 23: /* length */
- if (de)
- return(st->dline[st->li].len*1000+random()%5000);
- else
+ if (de)
+ return(st->dline[st->li].len*1000+random()%5000);
+ else
return(st->eline[st->li].len*1000+random()%5000);
case 24: /* object */
- case 25:
- case 26:
- case 27:
- if (de)
- return(st->dline[st->li].obj*100);
- else
+ case 25:
+ case 26:
+ case 27:
+ if (de)
+ return(st->dline[st->li].obj*100);
+ else
return(st->eline[st->li].obj*100);
default: /* color */
cr = (de) ? st->dline[st->li].color : st->eline[st->li].color;
return(1);
}
-static void
+static void
_init_screen(struct state *st)
{
int nstr, x;
st->zlist = calloc(st->narray, sizeof(unsigned int));
st->fdol = calloc(st->narray, sizeof(unsigned int));
st->odi = calloc(st->narray, sizeof(Bool));
- if ((st->dline == NULL) || (st->eline == NULL) ||
+ if ((st->dline == NULL) || (st->eline == NULL) ||
(st->grid == NULL) || (st->zlist == NULL) ||
(st->fdol == NULL) || (st->odi == NULL)) {
fprintf(stderr, "not enough memory\n");
st->egridy=st->gridy;
/* create new erase order */
- for (st->li=1; st->li<=st->eli; st->li++)
+ for (st->li=1; st->li<=st->eli; st->li++)
st->eline[st->li].deo=(_getdeo(st,st->eline[st->li].x,st->eline[st->li].y,st->emap,0) + (random()%st->evar) + (random()%st->evar))*st->edir;
qsort(st->eline, st->eli+1, sizeof(struct lineStruct), _comparedeo);
}
st->di=st->ei=st->fi=st->li=st->oi=st->zi=0;
st->grid_full=False;
/* li starts from 1 */
- st->dline[0].x=st->dline[0].y=st->dline[0].len=0;
+ st->dline[0].x=st->dline[0].y=st->dline[0].len=0;
/* to keep it first after sorting so di is never null */
- st->dline[0].deo=-999999999;
+ st->dline[0].deo=-999999999;
/* set random screen variables */
st->lwid = (st->ii==1) ? 3 : 2+((random()%6)%4);
(st->tile==TILE_OUTLINE)) ? D3D_NONE :
(st->tile==TILE_BLOCK) ? D3D_BLOCK :
(st->tile==TILE_NEON) ? D3D_NEON :
- (st->tile==TILE_TILED) ? D3D_TILED :
+ (st->tile==TILE_TILED) ? D3D_TILED :
/* force TILE_D3D on first screen to properly load all shades */
- ((st->ii==1) && (!st->newcols)) ? D3D_TILED : (random()%5)%4;
+ ((st->ii==1) && (!st->newcols)) ? D3D_TILED : (random()%5)%4;
/* st->d3d=D3D_BLOCK; st->lwid=2; */
st->outline = (st->tile==TILE_OUTLINE) ? 1 :
- ((st->tile!=TILE_RANDOM) || (random()%5)) ? 0 : 1;
- st->round = (st->d3d==D3D_NEON) ? 1 :
+ ((st->tile!=TILE_RANDOM) || (random()%5)) ? 0 : 1;
+ st->round = (st->d3d==D3D_NEON) ? 1 :
((st->d3d==D3D_BLOCK) || (st->outline) || (random()%6)) ? 0 : 1;
if ((st->d3d) || (st->outline) || (st->round))
st->lwid+=2;
st->lwid++;
if (st->tile==TILE_THIN)
st->lwid=2;
-
+
_init_zlist(st);
st->maxlen=(st->lwid>6) ? 2+(random()%4) :
st->dmap = (st->emap+5+(random()%5))%DRAWORDERS;
st->dmap=20+random()%20;
-
+
st->dvar = (st->dmap>22) ? 100 : 10+(st->csw[0]*(random()%5));
st->ddir= (random()%2) ? 1 : -1;
-
+
st->emap = (st->dmap+10+(random()%10))%20;
st->evar = (st->emap>22) ? 100 : 10+(st->csw[0]*(random()%5));
st->edir= (random()%2) ? 1 : -1;
st->shape[x]=random()%SHAPES;
st->mix[x]=random()%20;
nstr = (st->lwid==2) ? 20+random()%12 :
- (st->lwid==3) ? 16+random()%8 :
- (st->lwid==4) ? 12+random()%6 :
- (st->lwid==5) ? 10+random()%5 :
- (st->lwid==6) ? 8+random()%4 :
+ (st->lwid==3) ? 16+random()%8 :
+ (st->lwid==4) ? 12+random()%6 :
+ (st->lwid==5) ? 10+random()%5 :
+ (st->lwid==6) ? 8+random()%4 :
5+random()%5;
st->csw[x] = _max(5,st->gridy/nstr);
st->wsx[x] = (st->wsx[x]+3+(random()%3))%STRETCHES;
st->cs3[x] = (st->dialog) ? 1+random()%3 : 2+random()%5;
st->cs4[x] = (st->dialog) ? 1+random()%3 : 2+random()%5;
st->wave[x]=random()%WAVES;
- st->wavel[x]=st->csw[x]*(2+random()%6);
+ st->wavel[x]=st->csw[x]*(2+random()%6);
st->waveh[x]=st->csw[x]*(1+random()%3);
st->rx1[x]=(st->gridx/10+random()%(st->gridx*8/10));
st->ry1[x]=(st->gridy/10+random()%(st->gridy*8/10));
}
}
-static int
+static int
_shape(struct state *st, int x, int y, int rx, int ry, int n)
{
switch(st->shape[n]) {
case 8:
return(1+_dist(st,x,rx,y,ry,st->cs1[n]));
case 9: /* black hole circle */
- return(1+(st->gridx*st->gridy/(1+(_dist(st,x,rx,y,ry,st->cs2[n])))));
+ return(1+(st->gridx*st->gridy/(1+(_dist(st,x,rx,y,ry,st->cs2[n])))));
case 10: /* sun */
return(1+_min(abs(x-rx)*st->gridx/(abs(y-ry)+1),abs(y-ry)*st->gridx/(abs(x-rx)+1)));
case 11: /* 2 circles+inverted circle */
- return(1+(_dist(st,x,rx,y,ry,st->cs1[n])*_dist(st,x,(rx*3)%st->gridx,y,(ry*5)%st->gridy,st->cs1[n])/(1+_dist(st,x,(rx*4)%st->gridx,y,(ry*7)%st->gridy,st->cs1[n]))));
+ return(1+(_dist(st,x,rx,y,ry,st->cs1[n])*_dist(st,x,(rx*3)%st->gridx,y,(ry*5)%st->gridy,st->cs1[n])/(1+_dist(st,x,(rx*4)%st->gridx,y,(ry*7)%st->gridy,st->cs1[n]))));
case 12: /* star */
return(1+(int)sqrt(abs((x-rx)*(y-ry))));
case 13: /* centered ellipse */
return(1+_dist(st,x,rx,y,ry,0)+_dist(st,x,st->gridx-rx,y,st->gridy-ry,0));
default: /* triangle */
return(1+_triangle(st,x,y,rx,ry,st->cs4[n]));
- }
+ }
return(1+_triangle(st,x,y,rx,ry,st->cs4[n]));
}
-static int
+static int
_pattern(struct state *st, int x, int y, int n)
{
int v=0, ox;
v=y+(y+st->csw[n]*st->cs3[n])+_wave(st,x,st->csw[n]/3*st->cs3[n],st->csw[n]/3*st->cs2[n],st->wave[n])+_wave(st,x,st->csw[n]/3*st->cs4[n],st->csw[n]/3*st->cs1[n]*3/2,st->wave[n]);
break;
case 19: /* double vwave */
- v=x+(x+st->csw[n]*st->cs1[n])+_wave(st,y,st->csw[n]/3*st->cs1[n],st->csw[n]/3*st->cs3[n],st->wave[n])+_wave(st,y,st->csw[n]/3*st->cs2[n],st->csw[n]/3*st->cs4[n]*3/2,st->wave[n]);
+ v=x+(x+st->csw[n]*st->cs1[n])+_wave(st,y,st->csw[n]/3*st->cs1[n],st->csw[n]/3*st->cs3[n],st->wave[n])+_wave(st,y,st->csw[n]/3*st->cs2[n],st->csw[n]/3*st->cs4[n]*3/2,st->wave[n]);
break;
case 20: /* one shape */
case 21:
v=(_min(_shape(st,x, y, st->rx2[n], st->ry2[n], n),_shape(st,x, y, st->gridx-st->rx2[n], st->gridy-st->ry2[n], n)),_min(_shape(st,x, y, st->gridx-st->rx2[n], st->ry2[n], n),_shape(st,x, y, st->rx2[n], st->gridy-st->ry2[n], n)));
break;
case 39: /* four rainbows */
- v=(_min(_shape(st,x, y, st->gridx-st->rx2[n]/2, st->csw[n], n),_shape(st,x, y, st->csw[n], st->ry2[n]/2, n)),_min(_shape(st,x, y, st->rx2[n]/2, st->gridy-st->csw[n], n),_shape(st,x, y, st->gridx-st->csw[n], st->gridy-(st->ry2[n]/2), n)));
+ v=(_min(_shape(st,x, y, st->gridx-st->rx2[n]/2, st->csw[n], n),_shape(st,x, y, st->csw[n], st->ry2[n]/2, n)),_min(_shape(st,x, y, st->rx2[n]/2, st->gridy-st->csw[n], n),_shape(st,x, y, st->gridx-st->csw[n], st->gridy-(st->ry2[n]/2), n)));
break;
}
/* stretch or contract stripe */
return (abs(v));
}
-static int
+static int
_getcolor(struct state *st, int x, int y)
{
int n, cv[LAYERS];
-
+
for (n=0; n<st->layers; n++) {
cv[n]=_pattern(st,x,y,n);
/* first wave/shape */
- cv[0] = (!n) ? cv[0]/st->csw[0] :
+ cv[0] = (!n) ? cv[0]/st->csw[0] :
/* checkerboard+1 */
- (st->mix[n]<5) ? (cv[0]*st->csw[0]+cv[n])/st->csw[n] :
+ (st->mix[n]<5) ? (cv[0]*st->csw[0]+cv[n])/st->csw[n] :
/* checkerboard+ncol/2 */
- (st->mix[n]<12) ? cv[0]+(cv[n]/st->csw[n]*st->ncolors/2) :
+ (st->mix[n]<12) ? cv[0]+(cv[n]/st->csw[n]*st->ncolors/2) :
/* add mix */
- (st->mix[n]<16) ? cv[0]+(cv[n]/st->csw[n]) :
+ (st->mix[n]<16) ? cv[0]+(cv[n]/st->csw[n]) :
/* subtract mix */
- (st->mix[n]<18) ? cv[0]-(cv[n]/st->csw[n]) :
+ (st->mix[n]<18) ? cv[0]-(cv[n]/st->csw[n]) :
/* r to l morph mix */
- (st->mix[n]==18) ? ((cv[0]*x)+(cv[n]*(st->gridx-x)/st->csw[n]))/st->gridx :
+ (st->mix[n]==18) ? ((cv[0]*x)+(cv[n]*(st->gridx-x)/st->csw[n]))/st->gridx :
/* u to d morph mix */
- ((cv[0]*y)+(cv[n]*(st->gridy-y)/st->csw[n]))/st->gridy;
+ ((cv[0]*y)+(cv[n]*(st->gridy-y)/st->csw[n]))/st->gridy;
}
return(cv[0]);
}
/* return value=line direction
st->olen=open space to edge or next blocking line
st->bln=blocking line number or -1 if edge blocks */
-static int
+static int
_findopen(struct state *st, int x, int y, int z)
{
int dir, od[4], no=0;
- if (((st->grid[z].hl) || (st->grid[z].hr)) &&
- ((st->grid[z].vu) || (st->grid[z].vd)))
+ if (((st->grid[z].hl) || (st->grid[z].hr)) &&
+ ((st->grid[z].vu) || (st->grid[z].vd)))
return(DIR_NONE);
- if ((z>st->gridx) && (!st->grid[z].hl) && (!st->grid[z].hr) &&
- (!st->grid[z-st->gridx].line)) {
- od[no]=DIR_UP;
- no++;
+ if ((z>st->gridx) && (!st->grid[z].hl) && (!st->grid[z].hr) &&
+ (!st->grid[z-st->gridx].line)) {
+ od[no]=DIR_UP;
+ no++;
}
- if ((z<st->gridn-st->gridx) && (!st->grid[z].hl) &&
- (!st->grid[z].hr) && (!st->grid[z+st->gridx].line)) {
- od[no]=DIR_DOWN;
- no++;
+ if ((z<st->gridn-st->gridx) && (!st->grid[z].hl) &&
+ (!st->grid[z].hr) && (!st->grid[z+st->gridx].line)) {
+ od[no]=DIR_DOWN;
+ no++;
}
- if ((x) && (!st->grid[z].hl) && (!st->grid[z].hr) &&
+ if ((x) && (!st->grid[z].hl) && (!st->grid[z].hr) &&
(!st->grid[z-1].line)) {
- od[no]=DIR_LEFT;
- no++;
+ od[no]=DIR_LEFT;
+ no++;
}
- if (((z+1)%st->gridx) && (!st->grid[z].hl) && (!st->grid[z].hr) &&
- (!st->grid[z+1].line)) {
- od[no]=DIR_RIGHT;
- no++;
+ if (((z+1)%st->gridx) && (!st->grid[z].hl) && (!st->grid[z].hr) &&
+ (!st->grid[z+1].line)) {
+ od[no]=DIR_RIGHT;
+ no++;
}
- if (!no)
+ if (!no)
return(DIR_NONE);
dir=od[random()%no];
st->olen=st->bln=0;
while ((st->olen<=st->maxlen) && (!st->bln)) {
st->olen++;
- if (dir==DIR_UP)
- st->bln = (y-st->olen<0) ? -1 :
+ if (dir==DIR_UP)
+ st->bln = (y-st->olen<0) ? -1 :
st->grid[z-(st->olen*st->gridx)].line;
- if (dir==DIR_DOWN)
- st->bln = (y+st->olen>=st->gridy) ? -1 :
+ if (dir==DIR_DOWN)
+ st->bln = (y+st->olen>=st->gridy) ? -1 :
st->grid[z+(st->olen*st->gridx)].line;
- if (dir==DIR_LEFT)
- st->bln = (x-st->olen<0) ? -1 :
+ if (dir==DIR_LEFT)
+ st->bln = (x-st->olen<0) ? -1 :
st->grid[z-st->olen].line;
- if (dir==DIR_RIGHT)
- st->bln = (x+st->olen>=st->gridx) ? -1 :
+ if (dir==DIR_RIGHT)
+ st->bln = (x+st->olen>=st->gridx) ? -1 :
st->grid[z+st->olen].line;
}
- st->olen--;
+ st->olen--;
return(dir);
}
-static void
+static void
_fillgrid(struct state *st)
{
unsigned int gridc, n, add;
st->grid[gridc].line=st->li;
}
if (st->dline[st->li].hv) {
- if (n)
+ if (n)
st->grid[gridc].hr=st->li;
if (n<st->dline[st->li].len)
st->grid[gridc].hl=st->li;
} else {
- if (n)
+ if (n)
st->grid[gridc].vd=st->li;
- if (n<st->dline[st->li].len)
+ if (n<st->dline[st->li].len)
st->grid[gridc].vu=st->li;
}
if (st->fi>=st->gridn) {
}
}
-static void
+static void
_newline(struct state *st)
{
int bl, bz, dir, lt, x, y, z;
st->zi++;
dir=_findopen(st,x,y,z);
- if (!st->grid[z].line) {
+ if (!st->grid[z].line) {
/* this is an empty space, make a new line unless nothing is open around it */
if (dir==DIR_NONE) {
/* nothing is open, force a len 1 branch in any direction */
- lt=LINE_FORCE;
- while ((dir==DIR_NONE) ||
- ((dir==DIR_UP) && (!y)) ||
+ lt=LINE_FORCE;
+ while ((dir==DIR_NONE) ||
+ ((dir==DIR_UP) && (!y)) ||
((dir==DIR_DOWN) && (y+1==st->gridy)) ||
- ((dir==DIR_LEFT) && (!x)) ||
+ ((dir==DIR_LEFT) && (!x)) ||
((dir==DIR_RIGHT) && (x+1==st->gridx))) {
dir=random()%4;
}
bz = (dir==DIR_UP) ? z-st->gridx : (dir==DIR_DOWN) ? z+st->gridx : (dir==DIR_LEFT) ? z-1 : z+1;
bl = st->grid[bz].line;
- } else if ((st->bnratio>1) && (st->bln>0) &&
- (st->olen<st->maxlen) && (random()%st->bnratio)) {
+ } else if ((st->bnratio>1) && (st->bln>0) &&
+ (st->olen<st->maxlen) && (random()%st->bnratio)) {
/* branch into blocking line */
- lt=LINE_BRIN;
+ lt=LINE_BRIN;
bl = st->bln;
- } else {
+ } else {
/* make a new line and new object */
- lt=LINE_NEW;
+ lt=LINE_NEW;
st->oi++;
- }
- } else {
+ }
+ } else {
/* this is a filled space, make a branch unless nothing is open around it */
- if (dir==DIR_NONE)
+ if (dir==DIR_NONE)
return;
/* make a branch out of this line */
- lt=LINE_BROUT;
+ lt=LINE_BROUT;
bl=st->grid[z].line;
}
st->li++;
- st->dline[st->li].len = (lt==LINE_FORCE) ? 1 : (lt==LINE_BRIN) ?
+ st->dline[st->li].len = (lt==LINE_FORCE) ? 1 : (lt==LINE_BRIN) ?
st->olen+1 : (!st->forcemax) ? st->olen : 1+random()%st->olen;
st->dline[st->li].x=x;
- if (dir==DIR_LEFT)
+ if (dir==DIR_LEFT)
st->dline[st->li].x-=st->dline[st->li].len;
st->dline[st->li].y=y;
- if (dir==DIR_UP)
+ if (dir==DIR_UP)
st->dline[st->li].y-=st->dline[st->li].len;
- st->dline[st->li].hv = ((dir==DIR_LEFT) || (dir==DIR_RIGHT)) ?
+ st->dline[st->li].hv = ((dir==DIR_LEFT) || (dir==DIR_RIGHT)) ?
True : False;
- st->dline[st->li].obj = (lt==LINE_NEW) ? st->oi :
+ st->dline[st->li].obj = (lt==LINE_NEW) ? st->oi :
st->dline[bl].obj;
- st->dline[st->li].color = (lt==LINE_NEW) ?
+ st->dline[st->li].color = (lt==LINE_NEW) ?
(_getcolor(st,x,y))%st->ncolors : st->dline[bl].color;
- st->dline[st->li].deo=(_getdeo(st,x,y,st->dmap,1) +
+ st->dline[st->li].deo=(_getdeo(st,x,y,st->dmap,1) +
(random()%st->dvar) + (random()%st->dvar))*st->ddir;
st->dline[st->li].ndol=0;
_fillgrid(st);
}
-static void
+static void
_create_screen(struct state *st)
{
while(!st->grid_full)
qsort(st->dline, st->li+1, sizeof(struct lineStruct), _comparedeo);
/*st->lpu=st->li/20/((6-st->speed)*3);
Used to use a computed lpu, lines per update to control draw speed
- draw 1/lpu of the lines before each XSync which takes a split second
+ draw 1/lpu of the lines before each XSync which takes a split second
the higher the lpu, the quicker the screen draws. This worked somewhat
after the 4->5 update, however with the Mac updating so much more slowly,
values tuned for it draw the screen in a blink on Linux. Therefore we
draw 1/200th of the screen with each update and sleep, if necessary */
- st->lpu = (st->dialog) ? st->li/50 : st->li/200;
+ st->lpu = (st->dialog) ? st->li/50 : st->li/200;
if (!st->lpu) st->lpu = 1;
st->bi=1;
st->mode=MODE_ERASE;
}
-static void
+static void
_fill_outline(struct state *st, int di)
{
int x, y, h, w;
w=(st->dline[di].len+1)*st->lwid-3;
h=st->lwid-3;
} else {
- w=st->lwid-3;
+ w=st->lwid-3;
h=(st->dline[di].len+1)*st->lwid-3;
}
XFillRectangle (st->display, st->window, st->bgc, x, y, w, h);
}
-static void
+static void
_XFillRectangle(struct state *st, int di, int adj)
{
int a, b, x, y, w, h;
w=(st->dline[di].len+1)*st->lwid-1;
h=st->lwid-1;
} else {
- w=st->lwid-1;
+ w=st->lwid-1;
h=(st->dline[di].len+1)*st->lwid-1;
}
switch (st->d3d) {
h-=st->lwid/2-1;
break;
}
- if (!st->round) {
+ if (!st->round) {
XFillRectangle(st->display, st->window, st->fgc, x, y, w, h);
} else {
if (h<st->lwid) { /* horizontal */
a=(h-1)/2;
for (b=0; b<=a; b++)
- XFillRectangle(st->display, st->window, st->fgc,
+ XFillRectangle(st->display, st->window, st->fgc,
x+b, y+a-b, w-b*2, h-((a-b)*2));
} else { /* vertical */
a=(w-1)/2;
for (b=0; b<=a; b++)
- XFillRectangle(st->display, st->window, st->fgc,
+ XFillRectangle(st->display, st->window, st->fgc,
x+a-b, y+b, w-((a-b)*2), h-b*2);
}
}
}
-static void
-_XFillTriangle(struct state *st, int color, int x1, int y1, int x2, int y2,
+static void
+_XFillTriangle(struct state *st, int color, int x1, int y1, int x2, int y2,
int x3, int y3)
{
XPoint points[3];
points[2].x=x3;
points[2].y=y3;
XSetForeground(st->display, st->fgc, st->colors[color].pixel);
- XFillPolygon (st->display, st->window, st->fgc, points, 3, Convex,
+ XFillPolygon (st->display, st->window, st->fgc, points, 3, Convex,
CoordModeOrigin);
}
-static void
-_XFillPolygon4(struct state *st, int color, int x1, int y1, int x2, int y2,
+static void
+_XFillPolygon4(struct state *st, int color, int x1, int y1, int x2, int y2,
int x3, int y3, int x4, int y4)
{
XPoint points[4];
points[3].x=x4;
points[3].y=y4;
XSetForeground(st->display, st->fgc, st->colors[color].pixel);
- XFillPolygon (st->display, st->window, st->fgc, points, 4, Convex,
+ XFillPolygon (st->display, st->window, st->fgc, points, 4, Convex,
CoordModeOrigin);
}
-static void
+static void
_draw_tiled(struct state *st, int color)
{
int a, c, d, x, y, z, m1, m2, lr, nl, w, h;
if (st->dline[st->di].hv) {
x = (st->dline[st->di].x+c)*st->lwid;
y = st->dline[st->di].y*st->lwid;
- if (c)
+ if (c)
st->grid[z].dhr=st->di;
- if (c<st->dline[st->di].len)
+ if (c<st->dline[st->di].len)
st->grid[z].dhl=st->di;
} else {
x = st->dline[st->di].x*st->lwid;
y = (st->dline[st->di].y+c)*st->lwid;
- if (c)
+ if (c)
st->grid[z].dvd=st->di;
- if (c<st->dline[st->di].len)
+ if (c<st->dline[st->di].len)
st->grid[z].dvu=st->di;
}
d=0;
- if (st->grid[z].dhl)
+ if (st->grid[z].dhl)
d+=8;
- if (st->grid[z].dhr)
+ if (st->grid[z].dhr)
d+=4;
- if (st->grid[z].dvu)
+ if (st->grid[z].dvu)
d+=2;
- if (st->grid[z].dvd)
+ if (st->grid[z].dvd)
d++;
/* draw line base */
switch (d) {
case 11:
case 15:
h = ((d==1) || (d==5)) ? lr : nl;
- XSetForeground(st->display, st->fgc,
+ XSetForeground(st->display, st->fgc,
st->colors[color].pixel);
- XFillRectangle (st->display, st->window, st->fgc,
+ XFillRectangle (st->display, st->window, st->fgc,
x, y, m2, h);
- XSetForeground(st->display, st->fgc,
+ XSetForeground(st->display, st->fgc,
st->colors[color+3].pixel);
- XFillRectangle (st->display, st->window, st->fgc,
+ XFillRectangle (st->display, st->window, st->fgc,
x+m2, y, m1, h);
break;
case 4:
case 13:
case 14:
w = (d==4) ? lr : nl;
- XSetForeground(st->display, st->fgc,
+ XSetForeground(st->display, st->fgc,
st->colors[color+1].pixel);
- XFillRectangle (st->display, st->window, st->fgc,
+ XFillRectangle (st->display, st->window, st->fgc,
x, y, w, m2);
- XSetForeground(st->display, st->fgc,
+ XSetForeground(st->display, st->fgc,
st->colors[color+2].pixel);
- XFillRectangle (st->display, st->window, st->fgc,
+ XFillRectangle (st->display, st->window, st->fgc,
x, y+m2, w, m1);
break;
}
}
}
-static long
+static long
_mselapsed(struct state *st)
{
struct timeval t;
return ((long)t.tv_sec*1000000+t.tv_usec);
}
-static void
+static void
_draw_lines(struct state *st)
{
int n, z, a, color, sh, di;
st->dline[st->di].ndol=st->fdol[st->dline[st->di].obj];
st->fdol[st->dline[st->di].obj]=st->di;
for (sh=0; sh<st->lwid/2; sh++) {
- XSetForeground(st->display, st->fgc,
+ XSetForeground(st->display, st->fgc,
st->colors[color+sh].pixel);
di=st->di;
while(di>0) {
st->dline[st->di].ndol=st->fdol[st->dline[st->di].obj];
st->fdol[st->dline[st->di].obj]=st->di;
for (sh=0; sh<st->lwid/2; sh++) {
- XSetForeground(st->display, st->fgc,
+ XSetForeground(st->display, st->fgc,
st->colors[color+(st->lwid/2)-sh-1].pixel);
di=st->di;
while(di>0) {
_fill_outline(st, st->grid[z].dvu);
_fill_outline(st, st->grid[z].dvd);
if (st->dline[st->di].hv) {
- if (n)
+ if (n)
st->grid[z].dhr=st->di;
- if (n<st->dline[st->di].len)
+ if (n<st->dline[st->di].len)
st->grid[z].dhl=st->di;
} else {
- if (n)
+ if (n)
st->grid[z].dvd=st->di;
- if (n<st->dline[st->di].len)
+ if (n<st->dline[st->di].len)
st->grid[z].dvu=st->di;
}
z+=a;
}
}
-static void
+static void
_erase_lines(struct state *st)
{
if (!st->ii)
return;
for (st->di=st->bi; st->di<_min(st->eli+1,st->bi+st->elpu); st->di++) {
if (st->eline[st->di].hv) {
- XFillRectangle (st->display, st->window, st->bgc,
- st->eline[st->di].x*st->elwid,
+ XFillRectangle (st->display, st->window, st->bgc,
+ st->eline[st->di].x*st->elwid,
st->eline[st->di].y*st->elwid,
(st->eline[st->di].len+1)*st->elwid, st->elwid);
} else {
- XFillRectangle (st->display, st->window, st->bgc,
- st->eline[st->di].x*st->elwid,
+ XFillRectangle (st->display, st->window, st->bgc,
+ st->eline[st->di].x*st->elwid,
st->eline[st->di].y*st->elwid,
st->elwid, (st->eline[st->di].len+1)*st->elwid);
}
if (st->di==st->eli) /* clear just in case */
- XFillRectangle(st->display, st->window, st->bgc, 0, 0,
+ XFillRectangle(st->display, st->window, st->bgc, 0, 0,
st->xgwa.width, st->xgwa.height);
}
if (st->di>st->eli) {
/* get screen size and create Graphics Contexts */
XGetWindowAttributes (display, window, &st->xgwa);
- gcv.foreground = get_pixel_resource(display, st->xgwa.colormap,
+ gcv.foreground = get_pixel_resource(display, st->xgwa.colormap,
"foreground", "Foreground");
st->fgc = XCreateGC (display, window, GCForeground, &gcv);
gcv.foreground = get_pixel_resource(display, st->xgwa.colormap,
return st;
}
-static unsigned long
+static unsigned long
abstractile_draw (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
int mse, usleep;
-
+
gettimeofday(&st->time, NULL);
/* If the window is too small, do nothing, sorry! */
}
mse=_mselapsed(st);
usleep = ((!st->ii) && (st->mode==MODE_CREATE)) ? 0 :
- (st->mode==MODE_CREATE) ? st->sleep*1000000-mse :
+ (st->mode==MODE_CREATE) ? st->sleep*1000000-mse :
/* speed=0-5, goal is 10,8,6,4,2,0 sec normal and 5,4,3,2,1,0 dialog */
- (5-st->speed)*(2-st->dialog)*100000/st->lpu-mse;
+ (5-st->speed)*(2-st->dialog)*100000/st->lpu-mse;
if (usleep>=0)
return usleep;
return 0;
st->ncolors = get_integer_resource (st->dpy, "colors", "Colors");
st->ncolors += 3;
st->colors = (XColor *) malloc(sizeof(*st->colors) * (st->ncolors+1));
- make_smooth_colormap (st->dpy, wa.visual, st->cmap, st->colors, &st->ncolors,
+ make_smooth_colormap (wa.screen, wa.visual, st->cmap,
+ st->colors, &st->ncolors,
True, 0, True);
st->gcDraw = XCreateGC(st->dpy, window, 0, &st->gcv);
st->ncolors = get_integer_resource (st->dpy, "colors", "Colors");
st->ncolors++;
st->colors = (XColor *) malloc(sizeof(*st->colors) * (st->ncolors+1));
- make_random_colormap (st->dpy, wa.visual, wa.colormap, st->colors, &st->ncolors,
+ make_random_colormap (wa.screen, wa.visual, wa.colormap,
+ st->colors, &st->ncolors,
True, True, 0, True);
st->delay = get_integer_resource(st->dpy, "delay", "Integer");
-/* xscreensaver, Copyright (c) 1998-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1998-2013 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
unsigned int w, unsigned int h)
{
struct state *st = (struct state *) closure;
- analogtv_reconfigure (st->sim->dec);
+ if (st->sim)
+ analogtv_reconfigure (st->sim->dec);
}
static Bool
{
struct state *st = (struct state *) closure;
- if (st->controller == terminal_controller &&
+ if (st->sim &&
+ st->controller == terminal_controller &&
event->xany.type == KeyPress) {
terminal_keypress_handler (dpy, event, st->sim->controller_data);
return True;
-/* xscreensaver, Copyright (c) 1992-2008 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-2013 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
/* Simulation of a pair of quasi-gravitational fields, maybe sorta kinda
a little like the strong and weak electromagnetic forces. Derived from
- a Lispm screensaver by John Pezaris <pz@mit.edu>. Mouse control and
- viscosity added by "Philip Edward Cutone, III" <pc2d+@andrew.cmu.edu>.
+ a Lispm screensaver by John Pezaris <pz@mit.edu>. Viscosity added by
+ Philip Edward Cutone, III <pc2d+@andrew.cmu.edu>.
John sez:
int color_shift;
int xlim, ylim;
Bool no_erase_yet; /* for tail mode fix */
-
- /*flip mods for mouse interaction*/
- Bool mouse_p;
- int mouse_x, mouse_y, mouse_mass, root_x, root_y;
double viscosity;
+ int mouse_ball; /* index of ball being dragged, or 0 if none. */
+ unsigned long mouse_pixel;
+
enum object_mode mode;
enum graph_mode graph_mode;
st->color_shift = get_integer_resource (dpy, "colorShift", "Integer");
if (st->color_shift <= 0) st->color_shift = 5;
- /*flip mods for mouse interaction*/
- st->mouse_p = get_boolean_resource (dpy, "mouse", "Boolean");
- st->mouse_mass = get_integer_resource (dpy, "mouseSize", "Integer");
- st->mouse_mass = st->mouse_mass * st->mouse_mass *10;
-
st->viscosity = get_float_resource (dpy, "viscosity", "Float");
mode_str = get_string_resource (dpy, "mode", "Mode");
double S2 = 1.00;
double V = frand(0.25) + 0.75;
st->colors = (XColor *) malloc(sizeof(*st->colors) * (st->ncolors+1));
- make_color_ramp (dpy, cmap, H, S1, V, H, S2, V, st->colors, &st->ncolors,
+ make_color_ramp (xgwa.screen, xgwa.visual, cmap,
+ H, S1, V, H, S2, V, st->colors, &st->ncolors,
False, True, False);
}
else
{
st->ncolors = st->npoints;
st->colors = (XColor *) malloc(sizeof(*st->colors) * (st->ncolors+1));
- make_random_colormap (dpy, xgwa.visual, cmap, st->colors, &st->ncolors,
+ make_random_colormap (xgwa.screen, xgwa.visual, cmap,
+ st->colors, &st->ncolors,
True, True, False, True);
}
break;
case spline_filled_mode:
case tail_mode:
st->colors = (XColor *) malloc(sizeof(*st->colors) * (st->ncolors+1));
- make_smooth_colormap (dpy, xgwa.visual, cmap, st->colors, &st->ncolors,
+ make_smooth_colormap (xgwa.screen, xgwa.visual, cmap,
+ st->colors, &st->ncolors,
True, False, True);
break;
default:
mono_p = True;
}
+ st->mouse_pixel =
+ get_pixel_resource (dpy, cmap, "mouseForeground", "MouseForeground");
+ st->mouse_ball = -1;
+
if (st->mode != ball_mode)
{
int size = (st->segments ? st->segments : 1);
*dy_ret += (frand (10.0) - 5.0);
}
}
-
- if (st->mouse_p)
- {
- x_dist = st->mouse_x - st->balls [i].x;
- y_dist = st->mouse_y - st->balls [i].y;
- dist2 = (x_dist * x_dist) + (y_dist * y_dist);
- dist = sqrt (dist2);
-
- if (dist > 0.1) /* the balls are not overlapping */
- {
- double new_acc = ((st->mouse_mass / dist2) *
- ((dist < st->threshold) ? -1.0 : 1.0));
- double new_acc_dist = new_acc / dist;
- *dx_ret += new_acc_dist * x_dist;
- *dy_ret += new_acc_dist * y_dist;
- }
- else
- { /* the balls are overlapping; move randomly */
- *dx_ret += (frand (10.0) - 5.0);
- *dy_ret += (frand (10.0) - 5.0);
- }
- }
}
XDrawRectangle(dpy,window,st->draw_gc, x2,y,w2,h);
}
+/* Returns the position of the mouse relative to the root window.
+ */
+static void
+query_mouse (Display *dpy, Window win, int *x, int *y)
+{
+ Window root1, child1;
+ int mouse_x, mouse_y, root_x, root_y;
+ unsigned int mask;
+ if (XQueryPointer (dpy, win, &root1, &child1,
+ &root_x, &root_y, &mouse_x, &mouse_y, &mask))
+ {
+ *x = mouse_x;
+ *y = mouse_y;
+ }
+ else
+ {
+ *x = -9999;
+ *y = -9999;
+ }
+}
+
static unsigned long
attraction_draw (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
int last_point_stack_fp = st->point_stack_fp;
- Window root1, child1; /*flip mods for mouse interaction*/
- unsigned int mask;
-
int i, radius = st->global_size/2;
st->total_ticks++;
}
- if (st->mouse_p)
- {
- XQueryPointer(dpy, window, &root1, &child1,
- &st->root_x, &st->root_y, &st->mouse_x, &st->mouse_y, &mask);
- }
-
/* compute the force of attraction/repulsion among all balls */
for (i = 0; i < st->npoints; i++)
compute_force (st, i, &st->balls[i].dx, &st->balls[i].dy);
double old_y = st->balls[i].y;
double new_x, new_y;
int size = st->balls[i].size;
+
st->balls[i].vx += st->balls[i].dx;
st->balls[i].vy += st->balls[i].dy;
}
}
}
+
+ if (i == st->mouse_ball)
+ {
+ int x, y;
+ query_mouse (dpy, window, &x, &y);
+ if (st->mode == ball_mode)
+ {
+ x -= st->balls[i].size / 2;
+ y -= st->balls[i].size / 2;
+ }
+
+ st->balls[i].x = x;
+ st->balls[i].y = y;
+ }
+
new_x = st->balls[i].x;
new_y = st->balls[i].y;
st->balls[i].pixel_index = (st->ncolors * s);
}
XSetForeground (dpy, st->draw_gc,
- st->colors[st->balls[i].pixel_index].pixel);
+ (i == st->mouse_ball
+ ? st->mouse_pixel
+ : st->colors[st->balls[i].pixel_index].pixel));
}
}
static Bool
attraction_event (Display *dpy, Window window, void *closure, XEvent *event)
{
+ struct state *st = (struct state *) closure;
+
+ if (event->xany.type == ButtonPress)
+ {
+ int i;
+ if (st->mouse_ball != -1) /* second down-click? drop the ball. */
+ {
+ st->mouse_ball = -1;
+ return True;
+ }
+ else
+ {
+ /* When trying to pick up a ball, first look for a click directly
+ inside the ball; but if we don't find it, expand the radius
+ outward until we find something nearby.
+ */
+ int x = event->xbutton.x;
+ int y = event->xbutton.y;
+ float max = 10 * (st->global_size ? st->global_size : MAX_SIZE);
+ float step = max / 100;
+ float r2;
+ for (r2 = step; r2 < max; r2 += step)
+ {
+ for (i = 0; i < st->npoints; i++)
+ {
+ float d = ((st->balls[i].x - x) * (st->balls[i].x - x) +
+ (st->balls[i].y - y) * (st->balls[i].y - y));
+ float r = st->balls[i].size;
+ if (r2 > r) r = r2;
+ if (d < r*r)
+ {
+ st->mouse_ball = i;
+ return True;
+ }
+ }
+ }
+ }
+ return True;
+ }
+ else if (event->xany.type == ButtonRelease) /* drop the ball */
+ {
+ st->mouse_ball = -1;
+ return True;
+ }
+
+
+
return False;
}
"*threshold: 200",
"*delay: 10000",
"*glow: false",
- "*mouseSize: 10",
"*walls: true",
"*maxspeed: true",
"*cbounce: true",
- "*mouse: false",
"*viscosity: 1.0",
"*orbit: false",
"*colorShift: 3",
"*radius: 0",
"*vx: 0",
"*vy: 0",
+ "*mouseForeground: white",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
{ "-vx", ".vx", XrmoptionSepArg, 0 },
{ "-vy", ".vy", XrmoptionSepArg, 0 },
{ "-vmult", ".vMult", XrmoptionSepArg, 0 },
- { "-mouse-size", ".mouseSize", XrmoptionSepArg, 0 },
{ "-viscosity", ".viscosity", XrmoptionSepArg, 0 },
- { "-mouse", ".mouse", XrmoptionNoArg, "true" },
- { "-nomouse", ".mouse", XrmoptionNoArg, "false" },
{ "-glow", ".glow", XrmoptionNoArg, "true" },
{ "-noglow", ".glow", XrmoptionNoArg, "false" },
{ "-orbit", ".orbit", XrmoptionNoArg, "true" },
[\-size \fIint\fP] [\-segments \fIint\fP] [\-delay \fIusecs\fP]
[\-color-shift \fIint\fP] [\-radius \fIint\fP]
[\-vx \fIint\fP] [\-vy \fIint\fP] [\-glow] [\-noglow]
-[\-orbit] [\-viscosity \fIfloat\fP] [\-mouse] [\-no-mouse] [\-mouse-size]
+[\-orbit] [\-viscosity \fIfloat\fP]
[\-walls] [\-nowalls] [\-maxspeed] [\-nomaxspeed]
[\-correct-bounce] [\-fast-bounce]
[\-fps]
One interesting thing to try is
.EX
-attraction -viscosity 0.8 -points 75 \\
- -mouse -geometry =500x500
+attraction -viscosity 0.8 -points 300 -size 10 -geometry =500x500
.EE
Give it a few seconds to settle down into a stable clump, and then move
-the mouse through it to make "waves".
-.TP 8
-.B \-mouse
-This will cause the mouse to be considered a control point; it will not be
-drawn, but it will influence the other points, so you can wave the mouse
-and influence the images being created.
-.TP 8
-.B \-no-mouse
-Turns off \fB\-mouse\fP.
-.TP 8
-.B \-mouse-size integer
-In \fB\-mouse\fP mode, this sets the mass of the mouse (analogously to the
-\fB\-size\fP parameter.)
+the drag the mouse through it to make "waves".
.TP 8
.B \-nowalls
This will cause the balls to continue on past the edge of the
.SH AUTHOR
Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
-Viscosity and mouse support by Philip Edward Cutone, III.
+Viscosity support by Philip Edward Cutone, III.
Walls, speed limit options, new bouncing, graphs, and tail mode fix by
Matthew Strait. 31 March 2001
"*move_stars_x: 2",
"*move_stars_y: 1",
"*move_stars_random: 0",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*duration: 120",
"*bitmap: (default)",
"*geometry: 512x512",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*left3d: blue \n" \
"*both3d: magenta \n" \
"*none3d: black \n" \
- "*fpsSolid: true \n"
+ "*fpsSolid: true \n" \
+ "*ignoreRotation: True \n"
# define SMOOTH_COLORS
# define bouboule_handle_event 0
-/* xscreensaver, Copyright (c) 2005-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2005-2013 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
st->color_horiz_p = random() & 1;
if (st->done_once && st->colors)
- free_colors (st->dpy, st->xgwa.colormap, st->colors, st->ncolors);
+ free_colors (st->xgwa.screen, st->xgwa.colormap, st->colors, st->ncolors);
if (!st->done_once)
{
{
st->ncolors = get_integer_resource (st->dpy, "colors", "Colors"); /* re-get */
if (st->ncolors < 1) st->ncolors = 1;
- make_smooth_colormap (st->dpy, st->xgwa.visual, st->xgwa.colormap,
+ make_smooth_colormap (st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
st->colors, &st->ncolors, True, 0, False);
if (st->ncolors < 1) abort();
XClearWindow (st->dpy, st->window);
"*peek: False",
"*grabDesktopImages: False", /* HAVE_COCOA */
"*chooseRandomImages: True", /* HAVE_COCOA */
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*size: -7 \n" \
"*ncolors: 64 \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True" \
# define UNIFORM_COLORS
# define braid_handle_event 0
#include <math.h>
+#include <stdint.h>
#include "screenhack.h"
#ifdef HAVE_XSHM_EXTENSION
/* #define VERBOSE */
#define RANDOM() ((int) (random() & 0X7FFFFFFFL))
-typedef signed char int8_;
-typedef unsigned char uint8_;
-typedef short int16_;
-typedef unsigned short uint16_;
-typedef long int32_;
-typedef unsigned long uint32_;
typedef unsigned char BOOL;
#ifdef HAVE_XSHM_EXTENSION
"*useSHM: True",
#endif /* HAVE_XSHM_EXTENSION */
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
* a member of TBumps. */
typedef struct
{
- uint8_ *aLightMap;
- uint16_ nFalloffDiameter, nFalloffRadius;
- uint16_ nLightDiameter, nLightRadius;
+ uint8_t *aLightMap;
+ uint16_t nFalloffDiameter, nFalloffRadius;
+ uint16_t nLightDiameter, nLightRadius;
float nAccelX, nAccelY;
float nAccelMax;
float nVelocityX, nVelocityY;
Pixmap source;
GC GraphicsContext;
XColor *xColors;
- uint32_ *aColors;
+ unsigned long *aColors;
XImage *pXImage;
#ifdef HAVE_XSHM_EXTENSION
XShmSegmentInfo XShmInfo;
Bool bUseShm;
#endif /* HAVE_XSHM_EXTENSION */
- uint8_ nColorCount; /* Number of colors used. */
- uint8_ bytesPerPixel;
- uint16_ iWinWidth, iWinHeight;
- uint16_ *aBumpMap; /* The actual bump map. */
+ uint8_t nColorCount; /* Number of colors used. */
+ uint8_t bytesPerPixel;
+ uint16_t iWinWidth, iWinHeight;
+ uint16_t *aBumpMap; /* The actual bump map. */
SSpotLight SpotLight;
int delay;
/* This function pointer will point to the appropriate PutPixel*() function below. */
-static void (*MyPutPixel)( int8_ *, uint32_ );
+static void (*MyPutPixel)( int8_t *, uint32_t );
-static void PutPixel32( int8_ *pData, uint32_ pixel )
+static void PutPixel32( int8_t *pData, uint32_t pixel )
{
- *(uint32_ *)pData = pixel;
+ *(uint32_t *)pData = pixel;
}
-static void PutPixel24( int8_ *pData, uint32_ pixel )
+static void PutPixel24( int8_t *pData, uint32_t pixel )
{
pData[ 2 ] = ( pixel & 0x00FF0000 ) >> 16;
pData[ 1 ] = ( pixel & 0x0000FF00 ) >> 8;
pData[ 0 ] = ( pixel & 0x000000FF );
}
-static void PutPixel16( int8_ *pData, uint32_ pixel )
+static void PutPixel16( int8_t *pData, uint32_t pixel )
{
- *(uint16_ *)pData = (uint16_)pixel;
+ *(uint16_t *)pData = (uint16_t)pixel;
}
-static void PutPixel8( int8_ *pData, uint32_ pixel )
+static void PutPixel8( int8_t *pData, uint32_t pixel )
{
- *(uint8_ *)pData = (uint8_)pixel;
+ *(uint8_t *)pData = (uint8_t)pixel;
}
/* Creates the light map, which is a circular image... going from black around the edges
* to white in the center. */
-static void CreateSpotLight( SSpotLight *pSpotLight, uint16_ iDiameter, uint16_ nColorCount )
+static void CreateSpotLight( SSpotLight *pSpotLight, uint16_t iDiameter, uint16_t nColorCount )
{
double nDist;
- int16_ iDistX, iDistY;
- uint8_ *pLOffset;
+ int16_t iDistX, iDistY;
+ uint8_t *pLOffset;
pSpotLight->nFalloffDiameter = iDiameter;
pSpotLight->nFalloffRadius = pSpotLight->nFalloffDiameter / 2;
printf( "%s: Spot Light Diameter: %d\n", progclass, pSpotLight->nLightDiameter );
#endif
- pSpotLight->aLightMap = malloc( pSpotLight->nLightDiameter * pSpotLight->nLightDiameter * sizeof(uint8_) );
+ pSpotLight->aLightMap = malloc( pSpotLight->nLightDiameter * pSpotLight->nLightDiameter * sizeof(uint8_t) );
pLOffset = pSpotLight->aLightMap;
for( iDistY=-pSpotLight->nLightRadius; iDistY<pSpotLight->nLightRadius; ++iDistY )
{
nDist = sqrt( pow( iDistX+0.5F, 2 ) + pow( iDistY+0.5F, 2 ) );
if( nDist / pSpotLight->nLightRadius <= 1.0f )
- *pLOffset = (uint8_)(nColorCount - ( ( nDist / pSpotLight->nLightRadius ) * ( nColorCount - 1 ) ));
+ *pLOffset = (uint8_t)(nColorCount - ( ( nDist / pSpotLight->nLightRadius ) * ( nColorCount - 1 ) ));
else
*pLOffset = 0;
{
XWindowAttributes XWinAttribs;
XGCValues GCValues;
- int32_ nGCFlags;
- uint16_ iDiameter;
+ int32_t nGCFlags;
+ uint16_t iDiameter;
/* Make size and velocity a function of window size, so it appears the same at 100x60 as it does in 3200x1200. */
XGetWindowAttributes( dpy, NewWin, &XWinAttribs );
{
pBumps->pXImage = XCreateImage( pBumps->dpy, XWinAttribs.visual, XWinAttribs.depth,
ZPixmap, 0, NULL, iDiameter, iDiameter, BitmapPad( pBumps->dpy ), 0 );
- pBumps->pXImage->data = malloc( pBumps->pXImage->bytes_per_line * pBumps->pXImage->height * sizeof(int8_) );
+ pBumps->pXImage->data = malloc( pBumps->pXImage->bytes_per_line * pBumps->pXImage->height * sizeof(int8_t) );
}
/* For speed, access the XImage data directly using my own PutPixel routine. */
XColor BaseColor;
XColor Color;
char *sColor; /* Spotlight Color */
- int16_ iColor;
+ int16_t iColor;
sColor = get_string_resource(dpy, "color", "Color" );
if( pBumps->nColorCount < 2 ) pBumps->nColorCount = 2;
if( pBumps->nColorCount > 128 ) pBumps->nColorCount = 128;
- pBumps->aColors = malloc( pBumps->nColorCount * sizeof(uint32_ ) );
+ pBumps->aColors = malloc( pBumps->nColorCount * sizeof(unsigned long) );
/* Creates a phong shade: / BaseColor \ Index/ColorCount
* PhongShade = | ------------ | Index + ( 65535 - BaseColor )^
pBumps->nColorCount--;
for( iColor=0; iColor<=pBumps->nColorCount; iColor++ )
{
- Color.red = (uint16_)( ( ( BaseColor.red / (double)pBumps->nColorCount ) * iColor ) + pow( 0xFFFF - BaseColor.red, iColor/(double)pBumps->nColorCount ) );
- Color.green = (uint16_)( ( ( BaseColor.green / (double)pBumps->nColorCount ) * iColor ) + pow( 0xFFFF - BaseColor.green, iColor/(double)pBumps->nColorCount ) );
- Color.blue = (uint16_)( ( ( BaseColor.blue / (double)pBumps->nColorCount ) * iColor ) + pow( 0xFFFF - BaseColor.blue, iColor/(double)pBumps->nColorCount ) );
+ Color.red = (uint16_t)( ( ( BaseColor.red / (double)pBumps->nColorCount ) * iColor ) + pow( 0xFFFF - BaseColor.red, iColor/(double)pBumps->nColorCount ) );
+ Color.green = (uint16_t)( ( ( BaseColor.green / (double)pBumps->nColorCount ) * iColor ) + pow( 0xFFFF - BaseColor.green, iColor/(double)pBumps->nColorCount ) );
+ Color.blue = (uint16_t)( ( ( BaseColor.blue / (double)pBumps->nColorCount ) * iColor ) + pow( 0xFFFF - BaseColor.blue, iColor/(double)pBumps->nColorCount ) );
if( !XAllocColor( pBumps->dpy, pXWinAttribs->colormap, &Color ) )
{
XFreeColors( pBumps->dpy, pXWinAttribs->colormap, pBumps->aColors, iColor, 0 );
free( pBumps->aColors );
- pBumps->aColors = malloc( pBumps->nColorCount * sizeof(uint32_) );
+ pBumps->aColors = malloc( pBumps->nColorCount * sizeof(unsigned long) );
pBumps->nColorCount--;
iColor = -1;
}
{
XImage *pScreenImage;
XColor *pColor;
- uint8_ nSoften;
- uint16_ iWidth, iHeight;
- uint32_ nAverager;
- uint16_ *pBump;
- uint16_ maxHeight;
+ uint8_t nSoften;
+ uint16_t iWidth, iHeight;
+ uint32_t nAverager;
+ uint16_t *pBump;
+ uint16_t maxHeight;
double softenMultiplier = 1.0f;
BOOL bInvert = (BOOL)get_boolean_resource(dpy, "invert", "Boolean" );
XWindowAttributes XWinAttribs;
XClearWindow (pBumps->dpy, pBumps->Win);
XSync (pBumps->dpy, 0);
- pBumps->aBumpMap = malloc( pBumps->iWinWidth * pBumps->iWinHeight * sizeof(uint16_) );
+ pBumps->aBumpMap = malloc( pBumps->iWinWidth * pBumps->iWinHeight * sizeof(uint16_t) );
nSoften = get_integer_resource(dpy, "soften", "Integer" );
while( nSoften-- )
*/
static void SoftenBumpMap( SBumps *pBumps )
{
- uint16_ *pOffset, *pTOffset;
- uint32_ nHeight;
- uint32_ iWidth, iHeight;
- uint16_ *aTempBuffer = malloc( pBumps->iWinWidth * pBumps->iWinHeight * sizeof(uint16_) );
+ uint16_t *pOffset, *pTOffset;
+ uint32_t nHeight;
+ uint32_t iWidth, iHeight;
+ uint16_t *aTempBuffer = malloc( pBumps->iWinWidth * pBumps->iWinHeight * sizeof(uint16_t) );
pOffset = pBumps->aBumpMap;
pTOffset = aTempBuffer;
}
}
- memcpy( pBumps->aBumpMap, aTempBuffer, pBumps->iWinWidth * pBumps->iWinHeight * sizeof(uint16_) );
+ memcpy( pBumps->aBumpMap, aTempBuffer, pBumps->iWinWidth * pBumps->iWinHeight * sizeof(uint16_t) );
free( aTempBuffer );
}
/* This is where we slap down some pixels... */
static void Execute( SBumps *pBumps )
{
- int32_ nLightXPos, nLightYPos;
- int32_ iScreenX, iScreenY;
- int32_ iLightX, iLightY;
- uint16_ *pBOffset;
- int8_ *pDOffset;
- int32_ nX, nY;
- uint16_ nColor;
- int32_ nLightOffsetFar = pBumps->SpotLight.nFalloffDiameter - pBumps->SpotLight.nLightRadius;
+ int32_t nLightXPos, nLightYPos;
+ int32_t iScreenX, iScreenY;
+ int32_t iLightX, iLightY;
+ uint16_t *pBOffset;
+ int8_t *pDOffset;
+ int32_t nX, nY;
+ uint16_t nColor;
+ int32_t nLightOffsetFar = pBumps->SpotLight.nFalloffDiameter - pBumps->SpotLight.nLightRadius;
CalcLightPos( pBumps );
/* warning: pointer targets in assignment differ in signedness
Should pDOffset be a int8? I can't tell. -jwz, 22-Jul-2003 */
- pDOffset = (int8_ *) &pBumps->pXImage->data[ (iLightY+pBumps->SpotLight.nLightRadius) * pBumps->pXImage->bytes_per_line ];
+ pDOffset = (int8_t *) &pBumps->pXImage->data[ (iLightY+pBumps->SpotLight.nLightRadius) * pBumps->pXImage->bytes_per_line ];
pBOffset = pBumps->aBumpMap + ( iScreenY * pBumps->iWinWidth ) + nLightXPos;
for( iScreenX=nLightXPos, iLightX=-pBumps->SpotLight.nLightRadius; iLightX<nLightOffsetFar; ++iScreenX, ++iLightX, ++pBOffset, pDOffset+=pBumps->bytesPerPixel )
{
#ifdef VERBOSE
time_t Time = time( NULL );
- uint16_ iFrame = 0;
+ uint16_t iFrame = 0;
#endif /* VERBOSE */
CreateBumps( Bumps, dpy, Win );
st->context = XCreateGC (st->dpy, st->window, GCForeground | GCBackground,
&values);
st->color_count = MAXIMUM_COLOR_COUNT;
- make_color_loop (st->dpy, st->color_map,
+ make_color_loop (hack_attributes.screen, hack_attributes.visual,
+ st->color_map,
0, 1, 1,
120, 1, 1,
240, 1, 1,
".delay: 3",
".pause: 0.4",
".limit: 200000",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*delay: 10000",
"*delay2: 5",
"*showGraph: False",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
else
{
#if 0
- make_random_colormap (st->dpy, st->xgwa.visual, st->xgwa.colormap,
+ make_random_colormap (st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
st->colors, &st->ncolors, True, True, 0, True);
#else
- make_smooth_colormap (st->dpy, st->xgwa.visual, st->xgwa.colormap,
+ make_smooth_colormap (st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
st->colors, &st->ncolors, True, 0, True);
#endif
if (st->ncolors < 2)
/* recolor each time */
st->ncolors = get_integer_resource (st->dpy, "ncolors", "Integer");
if (st->ncolors > 2)
- make_smooth_colormap (st->dpy, st->xgwa.visual, st->xgwa.colormap,
+ make_smooth_colormap (st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
st->colors, &st->ncolors, True, 0, True);
st->eraser = erase_window (st->dpy, st->window, st->eraser);
if (st->cycle_colors) {
st->colors = (XColor *) xrealloc(st->colors, sizeof(XColor) * (st->ncolors+1));
- make_smooth_colormap (st->dpy, st->xgwa.visual, st->xgwa.colormap, st->colors, &st->ncolors,
+ make_smooth_colormap (st->xgwa.screen, st->xgwa.visual,
+ st->xgwa.colormap, st->colors, &st->ncolors,
True, &tmp, True);
}
"*maxAge: 64",
"*initialDensity: 30",
"*cellSize: 3",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HALFTONE.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HALO.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HELIX.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HEXADROP.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HOPALONG.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HYPERBALL.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HYPERCUBE.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HALFTONE.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HALO.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HELIX.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HEXADROP.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HOPALONG.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HYPERBALL.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) HYPERCUBE.C
a screen saver and locker for the X window system
by Jamie Zawinski
- version 5.21
- 04-Feb-2013
+ version 5.22
+ 16-Jul-2013
http://www.jwz.org/xscreensaver/
<xscreensaver-text />
</vgroup>
<vgroup>
+ <number id="duration" type="slider" arg="-duration %"
+ _label="Duration" _low-label="10 seconds" _high-label="10 minutes"
+ low="10" high="600" default="60"/>
+
<xscreensaver-image />
<boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
</vgroup>
<command arg="-root"/>
- <number id="delay" type="slider" arg="-delay %"
- _label="Frame rate" _low-label="Low" _high-label="High"
- low="0" high="100000" default="10000"
- convert="invert"/>
-
- <number id="speed" type="slider" arg="-speed %"
- _label="Speed" _low-label="Slow" _high-label="Fast"
- low="0.1" high="10.0" default="1.0"/>
+ <hgroup>
+ <vgroup>
+ <number id="delay" type="slider" arg="-delay %"
+ _label="Frame rate" _low-label="Low" _high-label="High"
+ low="0" high="100000" default="10000"
+ convert="invert"/>
+ </vgroup>
+ <vgroup>
+ <number id="speed" type="slider" arg="-speed %"
+ _label="Speed" _low-label="Slow" _high-label="Fast"
+ low="0.1" high="10.0" default="1.0"/>
+ </vgroup>
+ </hgroup>
<hgroup>
<vgroup>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<screensaver name="hexadrop" _label="Hexadrop">
+
+ <command arg="-root"/>
+
+ <hgroup>
+ <vgroup>
+ <number id="delay" type="slider" arg="-delay %"
+ _label="Frame rate" _low-label="Low" _high-label="High"
+ low="0" high="50000" default="30000"
+ convert="invert"/>
+
+ <number id="speed" type="slider" arg="-speed %"
+ _label="Speed" _low-label="Slow" _high-label="Fast"
+ low="0.1" high="4.0" default="1.0"/>
+
+ <number id="size" type="slider" arg="-size %"
+ _label="Tile size" _low-label="Small" _high-label="Large"
+ low="5" high="50" default="15"
+ convert="invert"/>
+ </vgroup>
+
+ <vgroup>
+ <select id="sides">
+ <option id="0" _label="Random shape"/>
+ <option id="3" _label="Triangles" arg-set="-sides 3"/>
+ <option id="4" _label="Squares" arg-set="-sides 4"/>
+ <option id="6" _label="Hexagons" arg-set="-sides 6"/>
+ <option id="5" _label="Octagons" arg-set="-sides 8"/>
+ </select>
+
+ <select id="uniform">
+ <option id="r-uniform" _label="Random speed"/>
+ <option id="uniform" _label="Uniform speed" arg-set="-uniform-speed"/>
+ <option id="no-uniform" _label="Non-uniform speed" arg-set="-no-uniform-speed"/>
+ </select>
+
+ <select id="lockstep">
+ <option id="r-lockstep" _label="Random sync"/>
+ <option id="lockstep" _label="Synchronized" arg-set="-lockstep"/>
+ <option id="no-lockstep" _label="Non-synchronized" arg-set="-no-lockstep"/>
+ </select>
+
+ <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ </vgroup>
+ </hgroup>
+
+ <_description>
+Draws a grid of hexagons or other shapes and drops them out.
+
+http://en.wikipedia.org/wiki/Tiling_by_regular_polygons
+
+Written by Jamie Zawinski; 2013.
+ </_description>
+</screensaver>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<screensaver name="kaleidocycle" _label="Kaleidocycle" gl="yes">
+
+ <command arg="-root"/>
+
+ <number id="delay" type="slider" arg="-delay %"
+ _label="Frame rate" _low-label="Low" _high-label="High"
+ low="0" high="100000" default="30000"
+ convert="invert"/>
+
+ <number id="count" type="slider" arg="-count %"
+ _label="Count" _low-label="8" _high-label="64"
+ low="8" high="64" default="16"/>
+
+ <number id="speed" type="slider" arg="-speed %"
+ _label="Speed" _low-label="Slow" _high-label="Fast"
+ low="0.1" high="8.0" default="1.0"/>
+
+ <boolean id="wander" _label="Wander" arg-set="-wander"/>
+
+ <select id="rotation">
+ <option id="no" _label="Don't rotate" arg-set="-spin 0"/>
+ <option id="x" _label="Rotate around X axis" arg-set="-spin X"/>
+ <option id="y" _label="Rotate around Y axis" arg-set="-spin Y"/>
+ <option id="z" _label="Rotate around Z axis"/>
+ <option id="xy" _label="Rotate around X and Y axes" arg-set="-spin XY"/>
+ <option id="xz" _label="Rotate around X and Z axes" arg-set="-spin XZ"/>
+ <option id="yz" _label="Rotate around Y and Z axes" arg-set="-spin YZ"/>
+ <option id="xyz" _label="Rotate around all three axes" arg-set="-spin YZ"/>
+ </select>
+
+ <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+
+ <_description>
+Draw a ring composed of tetrahedra connected at the edges that twists
+and rotates toroidally.
+
+When a series of tetrahedra are joined at the edges in a loop, it is
+possible for them to rotate continously through the center without
+deforming. This only works with an even number of tetrahedra, and
+there must be eight or more, or they don't fit.
+
+Written by Jamie Zawinski; 2013.
+ </_description>
+</screensaver>
<screensaver name="phosphor" _label="Phosphor">
- <command arg="-root"/>
+ <command arg="-root"/>
<hgroup>
<vgroup>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<screensaver name="quasicrystal" _label="QuasiCrystal" gl="yes">
+
+ <command arg="-root"/>
+
+ <hgroup>
+ <vgroup>
+ <number id="delay" type="slider" arg="-delay %"
+ _label="Frame rate" _low-label="Low" _high-label="High"
+ low="0" high="100000" default="30000"
+ convert="invert"/>
+
+ <number id="speed" type="slider" arg="-speed %"
+ _label="Speed" _low-label="Slow" _high-label="Fast"
+ low="0.1" high="5.0" default="1.0"/>
+ </vgroup>
+ <vgroup>
+ <number id="count" type="slider" arg="-count %"
+ _label="Density" _low-label="Low" _high-label="High"
+ low="7" high="37" default="17"/>
+
+ <number id="contrast" type="slider" arg="-contrast %"
+ _label="Contrast" _low-label="Low" _high-label="High"
+ low="0" high="100" default="30"/>
+ </vgroup>
+ </hgroup>
+
+ <hgroup>
+ <boolean id="wander" _label="Displacement" arg-unset="-no-wander"/>
+ <boolean id="spin" _label="Rotation" arg-unset="-no-spin"/>
+ <boolean id="symmetric" _label="Symmetry" arg-unset="-no-symmetry"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ </hgroup>
+
+ <_description>
+A quasicrystal is a structure that is ordered but aperiodic.
+Two-dimensional quasicrystals can be generated by adding a set of
+planes where x is the sine of y. Different complex aperiodic plane
+tilings are produced depending on the period, position, and rotation
+of the component planes, and whether the rotation of the planes is
+evenly distributed around the circle (the "symmetry" option, above)
+or random.
+
+See also the "RD-Bomb", "CWaves" and "Penrose" screen savers.
+
+http://en.wikipedia.org/wiki/Quasicrystal
+
+Written by Jamie Zawinski; 2013.
+ </_description>
+</screensaver>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<screensaver name="unknownpleasures" _label="UnknownPleasures" gl="yes">
+
+ <command arg="-root"/>
+
+ <number id="delay" type="slider" arg="-delay %"
+ _label="Frame rate" _low-label="Low" _high-label="High"
+ low="0" high="100000" default="30000"
+ convert="invert"/>
+
+ <number id="speed" type="slider" arg="-speed %"
+ _label="Speed" _low-label="Slow" _high-label="Fast"
+ low="0.1" high="3.0" default="1.0"/>
+
+ <number id="count" type="slider" arg="-count %"
+ _label="Scanlines" _low-label="Few" _high-label="Many"
+ low="3" high="200" default="80"/>
+
+ <number id="resolution" type="slider" arg="-resolution %"
+ _label="Resolution" _low-label="Low" _high-label="High"
+ low="5" high="300" default="100"/>
+
+ <hgroup>
+ <boolean id="ortho" _label="Orthographic Projection" arg-unset="-no-ortho"/>
+ <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ </hgroup>
+
+ <_description>
+PSR B1919+21 (AKA CP 1919) was the first pulsar ever discovered:
+a spinning neutron star emitting a periodic lighthouse-like beacon.
+An illustration of the signal received from it was published in
+Scientific American in 1971, and later in The Cambridge Encyclopedia
+of Astronomy in 1977, where it was seen by Stephen Morris, the
+drummer of Joy Division, and was consequently appropriated by
+Peter Saville for the cover of the band's album "Unknown Pleasures".
+
+http://en.wikipedia.org/wiki/Pulsar
+http://en.wikipedia.org/wiki/PSR_B1919%2B21
+http://en.wikipedia.org/wiki/Unknown_Pleasures
+http://en.wikipedia.org/wiki/Peter_Saville_%28graphic_designer%29
+http://en.wikipedia.org/wiki/Joy_Division
+
+Written by Jamie Zawinski; 2013.
+ </_description>
+</screensaver>
if(!st->board) exit(1);
cmap = xgwa.colormap;
if( st->ncolors ) {
- free_colors(st->dpy, cmap, st->colors, st->ncolors);
+ free_colors(xgwa.screen, cmap, st->colors, st->ncolors);
st->ncolors = 0;
}
gcv.foreground = st->default_fg_pixel = get_pixel_resource(st->dpy, cmap, "foreground", "Foreground");
gcv.foreground = get_pixel_resource (st->dpy, cmap, "background", "Background");
st->erase_gc = XCreateGC (st->dpy, st->window, GCForeground, &gcv);
st->ncolors = NCOLORSMAX;
- make_uniform_colormap(st->dpy, xgwa.visual, cmap, st->colors, &st->ncolors, True, &writeable, False);
+ make_uniform_colormap(xgwa.screen, xgwa.visual, cmap,
+ st->colors, &st->ncolors, True, &writeable, False);
if (st->ncolors <= 0) {
st->ncolors = 2;
st->colors[0].red = st->colors[0].green = st->colors[0].blue = 0;
"*seeds: 20", /* too many for 640x480, too few for 1280x1024 */
"*delay: 5",
"*delay2: 20000",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
if (!strcmp (color_scheme, "random"))
{
- make_random_colormap (st->dpy, st->wattr.visual,
+ make_random_colormap (st->wattr.screen, st->wattr.visual,
st->wattr.colormap,
*colors, n_colors,
True, True, &writable, True);
}
else if (!strcmp (color_scheme, "smooth"))
{
- make_smooth_colormap (st->dpy, st->wattr.visual,
+ make_smooth_colormap (st->wattr.screen, st->wattr.visual,
st->wattr.colormap,
*colors, n_colors,
True, &writable, True);
}
else
{
- make_uniform_colormap (st->dpy, st->wattr.visual,
+ make_uniform_colormap (st->wattr.screen, st->wattr.visual,
st->wattr.colormap,
*colors, n_colors, True,
&writable, True);
static void
free_colormap (struct state *st, XColor **colors, int n_colors)
{
- free_colors (st->dpy, st->wattr.colormap, *colors, n_colors);
+ free_colors (st->wattr.screen, st->wattr.colormap, *colors, n_colors);
free (*colors);
}
"*cycles: 200 \n" \
"*size: -15 \n" \
"*ncolors: 100 \n" \
- "*fpsSolid: true \n" \
+ "*fpsSolid: True \n" \
+ "*ignoreRotation: True \n" \
# define crystal_handle_event 0
# include "xlockmore.h" /* in xscreensaver distribution */
/* Rotate colours */
if (cryst->cycle_p) {
- rotate_colors(display, cryst->cmap, cryst->colors, cryst->ncolors,
+ rotate_colors(mi->xgwa.screen, cryst->cmap,
+ cryst->colors, cryst->ncolors,
cryst->direction);
if (!(LRAND() % 1000))
cryst->direction = -cryst->direction;
MI_BG_PIXEL(mi) = cryst->bg;
#endif
if (cryst->colors && cryst->ncolors && !cryst->no_colors)
- free_colors(display, cryst->cmap, cryst->colors, cryst->ncolors);
+ free_colors(mi->xgwa.screen, cryst->cmap, cryst->colors,
+ cryst->ncolors);
if (cryst->colors)
(void) free((void *) cryst->colors);
#if 0 /* #### wrong! -jwz */
if (MI_IS_INSTALL(mi) && MI_NPIXELS(mi) > 2) {
/* Set up colour map */
if (cryst->colors && cryst->ncolors && !cryst->no_colors)
- free_colors(display, cryst->cmap, cryst->colors, cryst->ncolors);
+ free_colors(mi->xgwa.screen, cryst->cmap,
+ cryst->colors, cryst->ncolors);
if (cryst->colors)
(void) free((void *) cryst->colors);
cryst->colors = 0;
}
if (!cryst->mono_p) {
if (!(LRAND() % 10))
- make_random_colormap(MI_DISPLAY(mi), MI_VISUAL(mi), cryst->cmap, cryst->colors, &cryst->ncolors,
- True, True, &cryst->cycle_p, True);
+ make_random_colormap(mi->xgwa.screen, MI_VISUAL(mi),
+ cryst->cmap, cryst->colors,
+ &cryst->ncolors,
+ True, True, &cryst->cycle_p, True);
else if (!(LRAND() % 2))
- make_uniform_colormap(MI_DISPLAY(mi), MI_VISUAL(mi), cryst->cmap, cryst->colors, &cryst->ncolors,
- True, &cryst->cycle_p, True);
+ make_uniform_colormap(mi->xgwa.screen, MI_VISUAL(mi),
+ cryst->cmap, cryst->colors,
+ &cryst->ncolors, True,
+ &cryst->cycle_p, True);
else
- make_smooth_colormap(MI_DISPLAY(mi), MI_VISUAL(mi), cryst->cmap, cryst->colors, &cryst->ncolors,
- True, &cryst->cycle_p, True);
+ make_smooth_colormap(mi->xgwa.screen, MI_VISUAL(mi),
+ cryst->cmap, cryst->colors,
+ &cryst->ncolors,
+ True, &cryst->cycle_p, True);
}
#if 0 /* #### wrong! -jwz */
XInstallColormap(display, cryst->cmap);
-/* xscreensaver, Copyright (c) 2007 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2007-2013 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
st->ncolors = get_integer_resource (dpy, "ncolors", "Integer");
if (st->ncolors < 4) st->ncolors = 4;
st->colors = (XColor *) malloc (sizeof(*st->colors) * (st->ncolors+1));
- make_smooth_colormap (st->dpy, st->xgwa.visual, st->xgwa.colormap,
+ make_smooth_colormap (st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
st->colors, &st->ncolors,
True, 0, False);
state *st = (state *) closure;
if (event->type == ButtonPress)
{
- make_smooth_colormap (st->dpy, st->xgwa.visual, st->xgwa.colormap,
+ make_smooth_colormap (st->xgwa.screen, st->xgwa.visual,
+ st->xgwa.colormap,
st->colors, &st->ncolors,
True, 0, False);
return True;
"*scale: 2",
"*debug: False",
"*delay: 20000",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
if (mono_p)
;
else {
- make_smooth_colormap (st->dpy, st->xgwa.visual, st->xgwa.colormap, st->colors, &st->ncolors,
+ make_smooth_colormap (st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
+ st->colors, &st->ncolors,
True, 0, True);
if (st->ncolors <= 2) {
mono_p = True;
"*sway: 30",
"*tweak: 20",
"*gridSize: 12",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
-/* xscreensaver, Copyright (c) 1992-2008 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-2013 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
XClearWindow (st->dpy, st->window);
XCopyArea (st->dpy, st->saved, st->window, st->gc,
0, 0, st->saved_w, st->saved_h,
- (w - st->saved_w) / 2,
- (h - st->saved_h) / 2);
+ ((int)w - st->saved_w) / 2,
+ ((int)h - st->saved_h) / 2);
st->sizex = w;
st->sizey = h;
}
"*delay: 10000",
"*mode: random",
"*duration: 120",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
-/* xscreensaver, Copyright (c) 1997, 1998, 2002, 2006
- * Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1997-2013 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
/* copied from make_random_colormap in colors.c */
static void
-make_mondrian_colormap (Display *dpy, Visual *visual, Colormap cmap,
+make_mondrian_colormap (Screen *screen, Visual *visual, Colormap cmap,
XColor *colors, int *ncolorsP,
Bool allocate_p,
Bool *writable_pP,
Bool verbose_p)
{
+ Display *dpy = DisplayOfScreen (screen);
Bool wanted_writable = (allocate_p && writable_pP && *writable_pP);
int ncolors = 8;
int i;
- Screen *screen = (dpy ? DefaultScreenOfDisplay(dpy) : 0); /* #### WRONG! */
if (*ncolorsP <= 0) return;
unsigned long *pixels = (unsigned long *)
malloc(sizeof(*pixels) * (ncolors + 1));
- allocate_writable_colors (dpy, cmap, pixels, &ncolors);
+ allocate_writable_colors (screen, cmap, pixels, &ncolors);
if (ncolors > 0)
for (i = 0; i < ncolors; i++)
colors[i].pixel = pixels[i];
mondrian_set_sizes(st, st->xgwa.width, st->xgwa.height);
/** set up red-yellow-blue-black-white colormap and fgc **/
- make_mondrian_colormap(dpy, st->xgwa.visual, st->xgwa.colormap,
+ make_mondrian_colormap(st->xgwa.screen, st->xgwa.visual,
+ st->xgwa.colormap,
st->colors, &st->ncolors, True, 0, True);
/** put white in several cells **/
/** set min-height and min-width to about 10% of total w/h **/
}
else if (st->smoothColors)
- make_smooth_colormap (dpy, st->xgwa.visual, st->xgwa.colormap,
+ make_smooth_colormap (st->xgwa.screen, st->xgwa.visual,
+ st->xgwa.colormap,
st->colors, &st->ncolors, True, 0, True);
else
- make_random_colormap (dpy, st->xgwa.visual, st->xgwa.colormap,
+ make_random_colormap (st->xgwa.screen, st->xgwa.visual,
+ st->xgwa.colormap,
st->colors, &st->ncolors, False, True, 0, True);
gcv.line_width = st->old_line_width = st->line_width;
"*goldenRatio: False",
"*smoothColors: False",
"*mondrian: False",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
-/* xscreensaver, Copyright (c) 1999-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1999-2013 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
XPoint points[11];
int x = t->x;
int y = t->y;
- int s = t->size / 0.383; /* trial and error, I forget how to derive this */
+
+ /*
+ The following constant is really:
+ sqrt(5 - sqrt(5)) / sqrt(25 - 11 * sqrt(5))
+
+ Reference: http://mathworld.wolfram.com/Pentagram.html
+ */
+ int s = t->size * 2.6180339887498985;
int s2 = t->size;
double c = M_PI * 2;
double o = -M_PI / 2;
#ifndef HAVE_COCOA
COLOR:
#endif
- make_random_colormap (st->dpy, st->xgwa.visual, st->xgwa.colormap,
+ make_random_colormap (st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
st->colors, &st->ncolors, True, True, 0, True);
if (st->ncolors < 2)
goto MONO;
"*useDBE: True",
"*useDBEClear: True",
#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*size: -7 \n" \
"*ncolors: 64 \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
# define demon_handle_event 0
# define UNIFORM_COLORS
"*cycles: 2500 \n" \
"*ncolors: 100 \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
# define SMOOTH_COLORS
# define discrete_handle_event 0
#ifdef HAVE_XSHM_EXTENSION
"*useSHM: False", /* xshm turns out not to help. */
#endif /* HAVE_XSHM_EXTENSION */
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*count: 30 \n" \
"*ncolors: 200 \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
# define SMOOTH_COLORS
# define drift_handle_event 0
"*divisorPoisson: 0.4",
"*sizeFactorMin: 1.05",
"*sizeFactorMax: 2.05",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
*/
if (st->colors)
{
- free_colors(st->dpy, st->cmap, st->colors, st->ncolors);
+ free_colors(pxgwa->screen, st->cmap, st->colors, st->ncolors);
st->colors = 0;
st->ncolors = 0;
}
st->colors = (XColor *) malloc(sizeof(*st->colors) * (st->ncolors+1));
if (!st->colors) abort();
- make_smooth_colormap (st->dpy, pxgwa->visual, st->cmap, st->colors, &st->ncolors,
+ make_smooth_colormap (pxgwa->screen, pxgwa->visual, st->cmap,
+ st->colors, &st->ncolors,
True, /* allocate */
False, /* not writable */
True); /* verbose (complain about failure) */
"*cycles: 3000 \n" \
"*ncolors: 64 \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
# define euler2d_handle_event 0
# define SMOOTH_COLORS
"*cycles: 1500 \n" \
"*ncolors: 64 \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
# define BRIGHT_COLORS
# define UNIFORM_COLORS
#define HEIGHT 632 /* 548 */
#define SHELLCOUNT 4 /* FIXED NUMBER; for SSE optimization */
#define PIXCOUNT 500 /* 500 */
-#define SHELL_LIFE_DEFAULT 3200 /* 3200 */
+#define SHELL_LIFE_DEFAULT 32 /* 32 */
#define SHELL_LIFE_RATIO 6 /* 6 */
#define POWDER 5.0 /* 5.0 */
#define FTWEAK 12 /* 12 */
st->shoot = get_boolean_resource(st->dpy, "shoot" , "Boolean");
st->verbose = get_boolean_resource(st->dpy, "verbose" , "Boolean");
st->max_shell_life = get_integer_resource(st->dpy, "maxlife" , "Integer");
+ /* transition from xscreensaver <= 5.20 */
+ if (st->max_shell_life > 100) st->max_shell_life = 100;
+
st->delay = get_integer_resource(st->dpy, "delay" , "Integer");
st->max_shell_life = pow(10.0,(st->max_shell_life/50.0)+2.7);
{
st->colors = (XColor *) calloc(sizeof(XColor),st->ncolors+1);
writable = False;
- make_smooth_colormap(st->dpy, vi, cmap, st->colors, &st->ncolors,
+ make_smooth_colormap(xwa.screen, vi, cmap,
+ st->colors, &st->ncolors,
False, &writable, True);
}
st->gc = XCreateGC(st->dpy, win, 0, &gcv);
-/* xscreensaver, Copyright (c) 1993-2008 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1993-2013 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
st->ncolors = get_integer_resource (st->dpy, "colors", "Integer");
if (st->ncolors <= 0) st->ncolors = 128;
st->colors = (XColor *) malloc ((st->ncolors+1) * sizeof (*st->colors));
- make_smooth_colormap (st->dpy, xgwa.visual, xgwa.colormap, st->colors, &st->ncolors,
+ make_smooth_colormap (xgwa.screen, xgwa.visual, xgwa.colormap,
+ st->colors, &st->ncolors,
True, 0, True);
if (st->ncolors <= 2)
mono_p = True, st->ncolors = 0;
"*delay: 50000",
"*delay2: 2000000",
"*points: 10000",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
state->shake_p = get_boolean_resource (dpy, "shake", "Shake");
state->shake_threshold = get_float_resource (dpy, "shakeThreshold",
"ShakeThreshold");
+ state->time_tick = 999999;
+
+# ifdef USE_IPHONE /* Always obey real-world gravity */
+ state->shake_p = False;
+# endif
+
state->fps_p = get_boolean_resource (dpy, "doFPS", "DoFPS");
if (state->fps_p)
state->time_since_shake += (now.tv_sec - state->last_time.tv_sec);
+# ifdef USE_IPHONE /* Always obey real-world gravity */
+ {
+ float a = fabs (fabs(state->accx) > fabs(state->accy)
+ ? state->accx : state->accy);
+ switch ((int) current_device_rotation ()) {
+ case 0: case 360: state->accx = 0; state->accy = a; break;
+ case -90: state->accx = -a; state->accy = 0; break;
+ case 90: state->accx = a; state->accy = 0; break;
+ case 180: case -180: state->accx = 0; state->accy = -a; break;
+ default: break;
+ }
+ }
+# endif /* USE_IPHONE */
+
if (state->fps_p)
{
float elapsed = ((now.tv_sec + (now.tv_usec / 1000000.0)) -
return True;
}
else
- for (i=1; i <= state->count; i++)
- {
- float d = ((state->px[i] - rx) * (state->px[i] - rx) +
- (state->py[i] - ry) * (state->py[i] - ry));
- float r = state->r[i];
- if (d < r*r)
+ {
+ /* When trying to pick up a ball, first look for a click directly
+ inside the ball; but if we don't find it, expand the radius
+ outward until we find something nearby.
+ */
+ float max = state->max_radius * 4;
+ float step = max / 10;
+ float r2;
+ for (r2 = step; r2 < max; r2 += step) {
+ for (i = 1; i <= state->count; i++)
{
- state->mouse_ball = i;
- return True;
+ float d = ((state->px[i] - rx) * (state->px[i] - rx) +
+ (state->py[i] - ry) * (state->py[i] - ry));
+ float r = state->r[i];
+ if (r2 > r) r = r2;
+ if (d < r*r)
+ {
+ state->mouse_ball = i;
+ return True;
+ }
}
}
+ }
return True;
}
else if (event->xany.type == ButtonRelease) /* drop the ball */
"*useDBE: True",
"*useDBEClear: True",
#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*cycles: 250 \n" \
"*ncolors: 64 \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
# define UNIFORM_COLORS
# define galaxy_handle_event 0
jigsaw.c photopile.c dropshadow.c rubikblocks.c surfaces.c \
hilbert.c companion.c companion_quad.c companion_disc.c \
companion_heart.c tronbit.c tronbit_idle1.c tronbit_idle2.c \
- tronbit_no.c tronbit_yes.c jwzgles.c
+ tronbit_no.c tronbit_yes.c jwzgles.c kaleidocycle.c \
+ quasicrystal.c unknownpleasures.c
OBJS = xscreensaver-gl-helper.o normals.o glxfonts.o fps-gl.o \
atlantis.o b_draw.o b_lockglue.o b_sphere.o bubble3d.o \
jigsaw.o photopile.o dropshadow.o rubikblocks.o surfaces.o \
hilbert.o companion.o companion_quad.o companion_disc.o \
companion_heart.o tronbit.o tronbit_idle1.o tronbit_idle2.o \
- tronbit_no.o tronbit_yes.o jwzgles.o
+ tronbit_no.o tronbit_yes.o jwzgles.o kaleidocycle.o \
+ quasicrystal.o unknownpleasures.o
GL_EXES = cage gears moebius pipes sproingies stairs superquadrics \
morph3d rubik atlantis lament bubble3d glplanet pulsar \
antmaze tangram crackberg glhanoi cube21 timetunnel \
juggler3d topblock glschool glcells voronoi moebiusgears \
lockward cubicgrid hypnowheel skytentacles jigsaw photopile \
- rubikblocks surfaces hilbert companioncube tronbit
+ rubikblocks surfaces hilbert companioncube tronbit \
+ kaleidocycle quasicrystal unknownpleasures
GLE_EXES = extrusion
SUID_EXES = sonar
GL_UTIL_EXES = xscreensaver-gl-helper
voronoi.man moebiusgears.man lockward.man cubicgrid.man \
hypnowheel.man skytentacles.man sonar.man jigsaw.man \
photopile.man rubikblocks.man surfaces.man hilbert.man \
- companioncube.man tronbit.man
+ companioncube.man tronbit.man kaleidocycle.man \
+ quasicrystal.man unknownpleasures.man
MEN = @GL_MEN@
RETIRED_MEN = glforestfire.man
EXTRAS = README Makefile.in dxf2gl.pl vrml2gl.pl wfront2gl.pl \
tronbit: $(TBIT_OBJS)
$(CC_HACK) -o $@ $(TBIT_OBJS) $(HACK_LIBS)
+KALEIDOCYCLE_OBJS=kaleidocycle.o normals.o $(HACK_TRACK_OBJS)
+kaleidocycle: $(KALEIDOCYCLE_OBJS)
+ $(CC_HACK) -o $@ $(KALEIDOCYCLE_OBJS) $(HACK_LIBS)
+
+quasicrystal: quasicrystal.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+unknownpleasures: unknownpleasures.o $(HACK_TRACK_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS)
+
+
##############################################################################
#
# DO NOT DELETE: updated by make distdepend
juggler3d.o: $(HACK_SRC)/xlockmore.h
jwzgles.o: ../../config.h
jwzgles.o: $(srcdir)/jwzglesI.h
+kaleidocycle.o: ../../config.h
+kaleidocycle.o: $(HACK_SRC)/fps.h
+kaleidocycle.o: $(srcdir)/gltrackball.h
+kaleidocycle.o: $(srcdir)/jwzglesI.h
+kaleidocycle.o: $(srcdir)/jwzgles.h
+kaleidocycle.o: $(srcdir)/normals.h
+kaleidocycle.o: $(srcdir)/rotator.h
+kaleidocycle.o: $(HACK_SRC)/screenhackI.h
+kaleidocycle.o: $(UTILS_SRC)/colors.h
+kaleidocycle.o: $(UTILS_SRC)/grabscreen.h
+kaleidocycle.o: $(UTILS_SRC)/hsv.h
+kaleidocycle.o: $(UTILS_SRC)/resources.h
+kaleidocycle.o: $(UTILS_SRC)/usleep.h
+kaleidocycle.o: $(UTILS_SRC)/visual.h
+kaleidocycle.o: $(UTILS_SRC)/xshm.h
+kaleidocycle.o: $(UTILS_SRC)/yarandom.h
+kaleidocycle.o: $(HACK_SRC)/xlockmoreI.h
+kaleidocycle.o: $(HACK_SRC)/xlockmore.h
klein.o: ../../config.h
klein.o: $(HACK_SRC)/fps.h
klein.o: $(srcdir)/gltrackball.h
pulsar.o: $(HACK_SRC)/xlockmoreI.h
pulsar.o: $(HACK_SRC)/xlockmore.h
pulsar.o: $(srcdir)/xpm-ximage.h
+quasicrystal.o: ../../config.h
+quasicrystal.o: $(HACK_SRC)/fps.h
+quasicrystal.o: $(srcdir)/jwzglesI.h
+quasicrystal.o: $(srcdir)/jwzgles.h
+quasicrystal.o: $(srcdir)/rotator.h
+quasicrystal.o: $(HACK_SRC)/screenhackI.h
+quasicrystal.o: $(UTILS_SRC)/colors.h
+quasicrystal.o: $(UTILS_SRC)/grabscreen.h
+quasicrystal.o: $(UTILS_SRC)/hsv.h
+quasicrystal.o: $(UTILS_SRC)/resources.h
+quasicrystal.o: $(UTILS_SRC)/usleep.h
+quasicrystal.o: $(UTILS_SRC)/visual.h
+quasicrystal.o: $(UTILS_SRC)/xshm.h
+quasicrystal.o: $(UTILS_SRC)/yarandom.h
+quasicrystal.o: $(HACK_SRC)/xlockmoreI.h
+quasicrystal.o: $(HACK_SRC)/xlockmore.h
queens.o: $(srcdir)/chessmodels.h
queens.o: ../../config.h
queens.o: $(HACK_SRC)/fps.h
tunnel_draw.o: $(UTILS_SRC)/xshm.h
tunnel_draw.o: $(UTILS_SRC)/yarandom.h
tunnel_draw.o: $(HACK_SRC)/xlockmoreI.h
+unknownpleasures.o: ../../config.h
+unknownpleasures.o: $(HACK_SRC)/fps.h
+unknownpleasures.o: $(srcdir)/gltrackball.h
+unknownpleasures.o: $(srcdir)/jwzglesI.h
+unknownpleasures.o: $(srcdir)/jwzgles.h
+unknownpleasures.o: $(HACK_SRC)/screenhackI.h
+unknownpleasures.o: $(UTILS_SRC)/colors.h
+unknownpleasures.o: $(UTILS_SRC)/grabscreen.h
+unknownpleasures.o: $(UTILS_SRC)/hsv.h
+unknownpleasures.o: $(UTILS_SRC)/resources.h
+unknownpleasures.o: $(UTILS_SRC)/usleep.h
+unknownpleasures.o: $(UTILS_SRC)/visual.h
+unknownpleasures.o: $(UTILS_SRC)/xshm.h
+unknownpleasures.o: $(UTILS_SRC)/yarandom.h
+unknownpleasures.o: $(HACK_SRC)/xlockmoreI.h
+unknownpleasures.o: $(HACK_SRC)/xlockmore.h
voronoi.o: ../../config.h
voronoi.o: $(HACK_SRC)/fps.h
voronoi.o: $(srcdir)/jwzglesI.h
#define DEFAULTS "*delay: 30000 \n" \
- "*count: 1 \n" \
"*showFPS: False \n" \
"*count: 3 \n" \
"*wireframe: False \n" \
H[2] = ((H[1] + shift) < 360) ? (H[1]+shift) : (H[1] + shift - 360);
S[0] = S[1] = S[2] = 1.0;
V[0] = V[1] = V[2] = 1.0;
- make_color_loop(0, 0,
+ make_color_loop(0, 0, 0,
H[0], S[0], V[0],
H[1], S[1], V[1],
H[2], S[2], V[2],
{
GLfloat scale = 0;
glScalef(3, 3, 3);
-
-# ifdef USE_IPHONE
- glScalef (0.7, 0.7, 0.7); /* make room for the frame */
-# endif
+ glScalef (0.6, 0.6, 0.6);
glColor3f(dc->color[0], dc->color[1], dc->color[2]);
float f;
f = ONEREV / (M_PI * 2);
- for (i = 0 ; i <= TWOREV ; i++) {
+ for (i = 0 ; i < TWOREV ; i++) {
e->sin_table[i] = sin(i/f);
}
- for (i = 0 ; i <= TWOREV ; i++) {
+ for (i = 0 ; i < TWOREV ; i++) {
e->cos_table[i] = cos(i/f);
}
- for (i = 0 ; i <= TWOREV ; i++) {
+ for (i = 0 ; i < TWOREV ; i++) {
e->tan_table[i] = tan(i/f);
}
}
/* font-ximage.c --- renders text to an XImage for use with OpenGL.
- * xscreensaver, Copyright (c) 2001, 2003 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 2001-2013 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
overall.rbearing = MAX(overall.rbearing, o2.rbearing);
lines++;
}
+ free (text);
+ text = 0;
width = overall.lbearing + overall.rbearing + margin + margin + 1;
height = ((f->ascent + f->descent) * lines) + margin + margin;
sc->nColors = 360;
sc->context = init_GL(mi);
sc->colors = (XColor *)calloc(sc->nColors, sizeof(XColor));
- make_color_ramp(0, 0,
+ make_color_ramp(0, 0, 0,
0.0, 1.0, 1.0,
359.0, 1.0, 1.0,
sc->colors, &sc->nColors,
int button, int percent, int flip_p)
{
int up_p;
- double move;
int horizontal_p;
+ int mx, my, move, scale;
#ifdef HAVE_COCOA
flip_p = 0; /* MacOS has already handled this. */
up_p = !up_p;
}
+ scale = mx = my = 1000;
move = (up_p
- ? 1.0 - (percent / 100.0)
- : 1.0 + (percent / 100.0));
-
- gltrackball_start (ts, 50, 50, 100, 100);
- if (horizontal_p)
- gltrackball_track (ts, 50*move, 50, 100, 100);
- else
- gltrackball_track (ts, 50, 50*move, 100, 100);
+ ? floor (scale * (1.0 - (percent / 100.0)))
+ : ceil (scale * (1.0 + (percent / 100.0))));
+ if (horizontal_p) mx = move;
+ else my = move;
+ gltrackball_start (ts, scale, scale, scale*2, scale*2);
+ gltrackball_track (ts, mx, my, scale*2, scale*2);
}
void
-/* xscreensaver, Copyright (c) 2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2012-2013 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
}
+/* glColor: GLfloat */
void
jwzgles_glColor4fv (const GLfloat *v)
jwzgles_glColor4fv (v);
}
-
void
jwzgles_glColor3f (GLfloat r, GLfloat g, GLfloat b)
{
jwzgles_glColor4f (r, g, b, 1);
}
-
void
jwzgles_glColor3fv (const GLfloat *v)
{
- GLfloat vv[4];
- vv[0] = v[0];
- vv[1] = v[1];
- vv[2] = v[2];
- vv[3] = 1;
- jwzgles_glColor4fv (vv);
+ jwzgles_glColor3f (v[0], v[1], v[2]);
}
+/* glColor: GLdouble */
+
void
-jwzgles_glColor4i (GLuint r, GLuint g, GLuint b, GLuint a)
+jwzgles_glColor4d (GLdouble r, GLdouble g, GLdouble b, GLdouble a)
{
jwzgles_glColor4f (r, g, b, a);
}
+void
+jwzgles_glColor4dv (const GLdouble *v)
+{
+ jwzgles_glColor4d (v[0], v[1], v[2], v[3]);
+}
void
-jwzgles_glColor3i (GLuint r, GLuint g, GLuint b)
+jwzgles_glColor3d (GLdouble r, GLdouble g, GLdouble b)
{
- jwzgles_glColor4f (r, g, b, 1);
+ jwzgles_glColor4d (r, g, b, 1.0);
+}
+
+void
+jwzgles_glColor3dv (const GLdouble *v)
+{
+ jwzgles_glColor3d (v[0], v[1], v[2]);
}
+/* glColor: GLint (INT_MIN - INT_MAX) */
+
+void
+jwzgles_glColor4i (GLint r, GLint g, GLint b, GLint a)
+{
+ /* -0x8000000 - 0x7FFFFFFF => 0.0 - 1.0 */
+ jwzgles_glColor4f (0.5 + (GLfloat) r / 0xFFFFFFFF,
+ 0.5 + (GLfloat) g / 0xFFFFFFFF,
+ 0.5 + (GLfloat) b / 0xFFFFFFFF,
+ 0.5 + (GLfloat) a / 0xFFFFFFFF);
+}
+
void
jwzgles_glColor4iv (const GLint *v)
{
- GLfloat vv[4];
- vv[0] = v[0];
- vv[1] = v[1];
- vv[2] = v[2];
- vv[3] = v[3];
- jwzgles_glColor4fv (vv);
+ jwzgles_glColor4i (v[0], v[1], v[2], v[3]);
}
+void
+jwzgles_glColor3i (GLint r, GLint g, GLint b)
+{
+ jwzgles_glColor4i (r, g, b, 0x7FFFFFFF);
+}
+
void
jwzgles_glColor3iv (const GLint *v)
{
- GLfloat vv[4];
- vv[0] = v[0];
- vv[1] = v[1];
- vv[2] = v[2];
- vv[3] = 1;
- jwzgles_glColor4fv (vv);
+ jwzgles_glColor3i (v[0], v[1], v[2]);
+}
+
+
+/* glColor: GLuint (0 - UINT_MAX) */
+
+void
+jwzgles_glColor4ui (GLuint r, GLuint g, GLuint b, GLuint a)
+{
+ /* 0 - 0xFFFFFFFF => 0.0 - 1.0 */
+ jwzgles_glColor4f ((GLfloat) r / 0xFFFFFFFF,
+ (GLfloat) g / 0xFFFFFFFF,
+ (GLfloat) b / 0xFFFFFFFF,
+ (GLfloat) a / 0xFFFFFFFF);
+}
+
+void
+jwzgles_glColor4uiv (const GLuint *v)
+{
+ jwzgles_glColor4ui (v[0], v[1], v[2], v[3]);
+}
+
+void
+jwzgles_glColor3ui (GLuint r, GLuint g, GLuint b)
+{
+ jwzgles_glColor4ui (r, g, b, 0xFFFFFFFF);
+}
+
+void
+jwzgles_glColor3uiv (const GLuint *v)
+{
+ jwzgles_glColor3ui (v[0], v[1], v[2]);
+}
+
+
+/* glColor: GLshort (SHRT_MIN - SHRT_MAX) */
+
+void
+jwzgles_glColor4s (GLshort r, GLshort g, GLshort b, GLshort a)
+{
+ /* -0x8000 - 0x7FFF => 0.0 - 1.0 */
+ jwzgles_glColor4f (0.5 + (GLfloat) r / 0xFFFF,
+ 0.5 + (GLfloat) g / 0xFFFF,
+ 0.5 + (GLfloat) b / 0xFFFF,
+ 0.5 + (GLfloat) a / 0xFFFF);
+}
+
+void
+jwzgles_glColor4sv (const GLshort *v)
+{
+ jwzgles_glColor4s (v[0], v[1], v[2], v[3]);
+}
+
+void
+jwzgles_glColor3s (GLshort r, GLshort g, GLshort b)
+{
+ jwzgles_glColor4s (r, g, b, 0x7FFF);
+}
+
+void
+jwzgles_glColor3sv (const GLshort *v)
+{
+ jwzgles_glColor3s (v[0], v[1], v[2]);
}
+/* glColor: GLushort (0 - USHRT_MAX) */
+
+void
+jwzgles_glColor4us (GLushort r, GLushort g, GLushort b, GLushort a)
+{
+ /* 0 - 0xFFFF => 0.0 - 1.0 */
+ jwzgles_glColor4f ((GLfloat) r / 0xFFFF,
+ (GLfloat) g / 0xFFFF,
+ (GLfloat) b / 0xFFFF,
+ (GLfloat) a / 0xFFFF);
+}
+
+void
+jwzgles_glColor4usv (const GLushort *v)
+{
+ jwzgles_glColor4us (v[0], v[1], v[2], v[3]);
+}
+
+void
+jwzgles_glColor3us (GLushort r, GLushort g, GLushort b)
+{
+ jwzgles_glColor4us (r, g, b, 0xFFFF);
+}
+
+void
+jwzgles_glColor3usv (const GLushort *v)
+{
+ jwzgles_glColor3us (v[0], v[1], v[2]);
+}
+
+
+/* glColor: GLbyte (-128 - 127) */
+
+void
+jwzgles_glColor4b (GLbyte r, GLbyte g, GLbyte b, GLbyte a)
+{
+ /* -128 - 127 => 0.0 - 1.0 */
+ jwzgles_glColor4f (0.5 + (GLfloat) r / 255,
+ 0.5 + (GLfloat) g / 255,
+ 0.5 + (GLfloat) b / 255,
+ 0.5 + (GLfloat) a / 255);
+}
+
+void
+jwzgles_glColor4bv (const GLbyte *v)
+{
+ jwzgles_glColor4b (v[0], v[1], v[2], v[3]);
+}
+
+void
+jwzgles_glColor3b (GLbyte r, GLbyte g, GLbyte b)
+{
+ jwzgles_glColor4b (r, g, b, 127);
+}
+
+void
+jwzgles_glColor3bv (const GLbyte *v)
+{
+ jwzgles_glColor3b (v[0], v[1], v[2]);
+}
+
+
+/* glColor: GLubyte (0 - 255) */
+
void
jwzgles_glColor4ub (GLubyte r, GLubyte g, GLubyte b, GLubyte a)
{
- jwzgles_glColor4f (r, g, b, a);
+ /* 0 - 255 => 0.0 - 1.0 */
+ jwzgles_glColor4f (r / 255.0, g / 255.0, b / 255.0, a / 255.0);
}
+void
+jwzgles_glColor4ubv (const GLubyte *v)
+{
+ jwzgles_glColor4ub (v[0], v[1], v[2], v[3]);
+}
void
jwzgles_glColor3ub (GLubyte r, GLubyte g, GLubyte b)
{
- jwzgles_glColor4f (r, g, b, 1);
+ jwzgles_glColor4ub (r, g, b, 255);
}
+void
+jwzgles_glColor3ubv (const GLubyte *v)
+{
+ jwzgles_glColor3ub (v[0], v[1], v[2]);
+}
+
+
void
jwzgles_glMaterialfv (GLenum face, GLenum pname, const GLfloat *color)
for (i = 0; i < L->count; i++)
{
list_fn *F = &L->fns[i];
- int count;
+/* int count; */
if (! F->arrays)
continue;
- count = F->argv[2].i; /* 3rd arg to glDrawArrays */
+/* count = F->argv[2].i;*/ /* 3rd arg to glDrawArrays */
for (j = 0; j < 4; j++)
{
data multiple times.
*/
int stride2, bytes, i, j;
- const void *old;
void *data2;
const GLfloat *IF;
GLfloat *OF;
break;
}
- old = A->data;
A->data = data2;
A->bytes = bytes;
A->stride = stride2;
}
else
{
+ /* We implement 1D textures as 2D textures. */
+ if (bit == GL_TEXTURE_1D) bit = GL_TEXTURE_2D;
+
if (! state->replaying_list)
LOG2 ("direct %-12s %s", "glEnable", mode_desc(bit));
glEnable (bit); /* the real one */
}
else
{
+ /* We implement 1D textures as 2D textures. */
+ if (bit == GL_TEXTURE_1D) bit = GL_TEXTURE_2D;
+
if (! state->replaying_list)
LOG2 ("direct %-12s %s", "glDisable", mode_desc(bit));
glDisable (bit); /* the real one */
Assert (!state->compiling_verts, "glIsEnabled not allowed inside glBegin");
Assert (!state->compiling_list, "glIsEnabled not allowed inside glNewList");
*/
+
+ /* We implement 1D textures as 2D textures. */
+ if (bit == GL_TEXTURE_1D) bit = GL_TEXTURE_2D;
+
switch (bit) {
case GL_TEXTURE_2D: return !!(state->enabled & ISENABLED_TEXTURE_2D);
case GL_TEXTURE_GEN_S: return !!(state->enabled & ISENABLED_TEXTURE_GEN_S);
-/* xscreensaver, Copyright (c) 2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2012-2013 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
extern void jwzgles_glColor4f (GLfloat, GLfloat, GLfloat, GLfloat);
extern void jwzgles_glColor3fv (const GLfloat *);
extern void jwzgles_glColor4fv (const GLfloat *);
-extern void jwzgles_glColor4i (GLuint, GLuint, GLuint, GLuint);
-extern void jwzgles_glColor3i (GLuint, GLuint, GLuint);
+extern void jwzgles_glColor3s (GLshort, GLshort, GLshort);
+extern void jwzgles_glColor4s (GLshort, GLshort, GLshort, GLshort);
+extern void jwzgles_glColor3sv (const GLshort *);
+extern void jwzgles_glColor4sv (const GLshort *);
+extern void jwzgles_glColor3us (GLushort, GLushort, GLushort);
+extern void jwzgles_glColor4us (GLushort, GLushort, GLushort, GLushort);
+extern void jwzgles_glColor3usv (const GLushort *);
+extern void jwzgles_glColor4usv (const GLushort *);
+extern void jwzgles_glColor3d (GLdouble, GLdouble, GLdouble);
+extern void jwzgles_glColor4d (GLdouble, GLdouble, GLdouble, GLdouble);
+extern void jwzgles_glColor3dv (const GLdouble *);
+extern void jwzgles_glColor4dv (const GLdouble *);
+extern void jwzgles_glColor4i (GLint, GLint, GLint, GLint);
+extern void jwzgles_glColor3i (GLint, GLint, GLint);
extern void jwzgles_glColor3iv (const GLint *);
extern void jwzgles_glColor4iv (const GLint *);
+extern void jwzgles_glColor4ui (GLuint, GLuint, GLuint, GLuint);
+extern void jwzgles_glColor3ui (GLuint, GLuint, GLuint);
+extern void jwzgles_glColor3uiv (const GLuint *);
+extern void jwzgles_glColor4uiv (const GLuint *);
+extern void jwzgles_glColor4b (GLbyte, GLbyte, GLbyte, GLbyte);
+extern void jwzgles_glColor3b (GLbyte, GLbyte, GLbyte);
+extern void jwzgles_glColor4bv (const GLbyte *);
+extern void jwzgles_glColor3bv (const GLbyte *);
extern void jwzgles_glColor4ub (GLubyte, GLubyte, GLubyte, GLubyte);
extern void jwzgles_glColor3ub (GLubyte, GLubyte, GLubyte);
+extern void jwzgles_glColor4ubv (const GLubyte *);
+extern void jwzgles_glColor3ubv (const GLubyte *);
extern void jwzgles_glMaterialf (GLuint, GLuint, GLfloat);
extern void jwzgles_glMateriali (GLuint, GLuint, GLuint);
extern void jwzgles_glMaterialfv (GLuint, GLuint, const GLfloat *);
--- /dev/null
+/* kaleidocycle, Copyright (c) 2013 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
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * A loop of rotating tetrahedra. Created by jwz, July 2013.
+ * Inspired by, and some math borrowed from:
+ * http://www.kaleidocycles.de/pdf/kaleidocycles_theory.pdf
+ * http://intothecontinuum.tumblr.com/post/50873970770/an-even-number-of-at-least-8-regular-tetrahedra
+ */
+
+
+#define DEFAULTS "*delay: 30000 \n" \
+ "*count: 16 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+
+# define refresh_kaleidocycle 0
+# define release_kaleidocycle 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "colors.h"
+#include "normals.h"
+#include "rotator.h"
+#include "gltrackball.h"
+#include <ctype.h>
+
+#ifdef USE_GL /* whole file */
+
+#define DEF_SPIN "Z"
+#define DEF_WANDER "False"
+#define DEF_SPEED "1.0"
+
+typedef struct {
+ GLXContext *glx_context;
+ rotator *rot, *rot2;
+ trackball_state *trackball;
+ Bool button_down_p;
+
+ int min_count, max_count;
+ Bool startup_p;
+
+ int ncolors;
+ XColor *colors;
+ int ccolor;
+
+ GLfloat count;
+ GLfloat th, dth;
+
+ enum { STATIC, IN, OUT } mode, prev_mode;
+
+} kaleidocycle_configuration;
+
+static kaleidocycle_configuration *bps = NULL;
+
+static char *do_spin;
+static GLfloat speed;
+static Bool do_wander;
+
+static XrmOptionDescRec opts[] = {
+ { "-spin", ".spin", XrmoptionSepArg, 0 },
+ { "+spin", ".spin", XrmoptionNoArg, "" },
+ { "-wander", ".wander", XrmoptionNoArg, "True" },
+ { "+wander", ".wander", XrmoptionNoArg, "False" },
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+};
+
+static argtype vars[] = {
+ {&do_spin, "spin", "Spin", DEF_SPIN, t_String},
+ {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool},
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+};
+
+ENTRYPOINT ModeSpecOpt kaleidocycle_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+
+/* Window management, etc
+ */
+ENTRYPOINT void
+reshape_kaleidocycle (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+
+ glViewport (0, 0, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (30.0, 1/h, 1.0, 100.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 30.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+ENTRYPOINT Bool
+kaleidocycle_handle_event (ModeInfo *mi, XEvent *event)
+{
+ kaleidocycle_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (event->xany.type == ButtonPress &&
+ event->xbutton.button == Button1)
+ {
+ bp->button_down_p = True;
+ gltrackball_start (bp->trackball,
+ event->xbutton.x, event->xbutton.y,
+ MI_WIDTH (mi), MI_HEIGHT (mi));
+ return True;
+ }
+ else if (event->xany.type == ButtonRelease &&
+ event->xbutton.button == Button1)
+ {
+ bp->button_down_p = False;
+ return True;
+ }
+ else if (event->xany.type == ButtonPress &&
+ (event->xbutton.button == Button4 ||
+ event->xbutton.button == Button5 ||
+ event->xbutton.button == Button6 ||
+ event->xbutton.button == Button7))
+ {
+ gltrackball_mousewheel (bp->trackball, event->xbutton.button, 5,
+ !!event->xbutton.state);
+ return True;
+ }
+ else if (event->xany.type == MotionNotify &&
+ bp->button_down_p)
+ {
+ gltrackball_track (bp->trackball,
+ event->xmotion.x, event->xmotion.y,
+ MI_WIDTH (mi), MI_HEIGHT (mi));
+ return True;
+ }
+
+ return False;
+}
+
+
+
+ENTRYPOINT void
+init_kaleidocycle (ModeInfo *mi)
+{
+ kaleidocycle_configuration *bp;
+ int wire = MI_IS_WIREFRAME(mi);
+ int i;
+
+ if (!bps) {
+ bps = (kaleidocycle_configuration *)
+ calloc (MI_NUM_SCREENS(mi), sizeof (kaleidocycle_configuration));
+ if (!bps) {
+ fprintf(stderr, "%s: out of memory\n", progname);
+ exit(1);
+ }
+ }
+
+ bp = &bps[MI_SCREEN(mi)];
+
+ bp->glx_context = init_GL(mi);
+
+ reshape_kaleidocycle (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
+ glLineWidth (4);
+
+ if (!wire)
+ {
+ GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0};
+ GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0};
+ GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0};
+
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+
+ glLightfv(GL_LIGHT0, GL_POSITION, pos);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, spc);
+
+ glEnable (GL_BLEND);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ }
+
+ {
+ Bool spinx = False, spiny = False, spinz = False;
+ double spin_speed = 0.25;
+ double wander_speed = 0.005;
+ double spin_accel = 0.2;
+ double twist_speed = 0.25;
+ double twist_accel = 1.0;
+
+ char *s = do_spin;
+ while (*s)
+ {
+ if (*s == 'x' || *s == 'X') spinx = True;
+ else if (*s == 'y' || *s == 'Y') spiny = True;
+ else if (*s == 'z' || *s == 'Z') spinz = True;
+ else if (*s == '0') ;
+ else
+ {
+ fprintf (stderr,
+ "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n",
+ progname, do_spin);
+ exit (1);
+ }
+ s++;
+ }
+
+ bp->rot = make_rotator (spinx ? spin_speed : 0,
+ spiny ? spin_speed : 0,
+ spinz ? spin_speed : 0,
+ spin_accel,
+ do_wander ? wander_speed : 0,
+ False);
+ bp->rot2 = make_rotator (twist_speed, 0, 0, twist_accel, 0, True);
+
+ bp->trackball = gltrackball_init ();
+ }
+
+ if (MI_COUNT(mi) < 8) MI_COUNT(mi) = 8;
+ if (MI_COUNT(mi) & 1) MI_COUNT(mi)++;
+
+ bp->min_count = 8;
+ bp->max_count = 12 + MI_COUNT(mi) * 1.3;
+ if (bp->max_count & 1) bp->max_count++;
+ bp->startup_p = True;
+
+ bp->count = 0;
+ bp->mode = IN;
+ bp->prev_mode = IN;
+
+/*
+ bp->count = MI_COUNT(mi);
+ bp->mode = STATIC;
+*/
+
+ bp->ncolors = 512;
+ if (! bp->colors)
+ bp->colors = (XColor *) calloc(bp->ncolors, sizeof(XColor));
+ make_uniform_colormap (0, 0, 0,
+ bp->colors, &bp->ncolors,
+ False, 0, False);
+
+ for (i = 0; i < bp->ncolors; i++)
+ {
+ /* make colors twice as bright */
+ bp->colors[i].red = (bp->colors[i].red >> 2) + 0x7FFF;
+ bp->colors[i].green = (bp->colors[i].green >> 2) + 0x7FFF;
+ bp->colors[i].blue = (bp->colors[i].blue >> 2) + 0x7FFF;
+ }
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+}
+
+
+
+/* t = toroidal rotation, a = radial position
+ colors = 4 colors, 4 channels each.
+ */
+static void
+draw_tetra (ModeInfo *mi, double t, double a, Bool reflect_p,
+ GLfloat *colors)
+{
+ int wire = MI_IS_WIREFRAME(mi);
+
+ XYZ v1, v2, v3, P, Q;
+ XYZ verts[4];
+ int i;
+
+ double scale;
+ double sint = sin(t);
+ double cost = cos(t);
+ double tana = tan(a);
+ double sint2 = sint * sint;
+ double tana2 = tana * tana;
+
+ v1.x = cost;
+ v1.y = 0;
+ v1.z = sint;
+
+ scale = 1 / sqrt (1 + sint2 * tana2);
+ v2.x = scale * -sint;
+ v2.y = scale * -sint * tana;
+ v2.z = scale * cost;
+
+ v3.x = scale * -sint2 * tana;
+ v3.y = scale;
+ v3.z = scale * cost * sint * tana;
+
+ P.x = v3.y / tana - v3.x;
+ P.y = 0;
+ P.z = -v3.z / 2;
+
+ Q.x = v3.y / tana;
+ Q.y = v3.y;
+ Q.z = v3.z / 2;
+
+ verts[0] = P;
+ verts[1] = P;
+ verts[2] = Q;
+ verts[3] = Q;
+
+ scale = sqrt(2) / 2;
+ verts[0].x = P.x - scale * v1.x;
+ verts[0].y = P.y - scale * v1.y;
+ verts[0].z = P.z - scale * v1.z;
+
+ verts[1].x = P.x + scale * v1.x;
+ verts[1].y = P.y + scale * v1.y;
+ verts[1].z = P.z + scale * v1.z;
+
+ verts[2].x = Q.x - scale * v2.x;
+ verts[2].y = Q.y - scale * v2.y;
+ verts[2].z = Q.z - scale * v2.z;
+
+ verts[3].x = Q.x + scale * v2.x;
+ verts[3].y = Q.y + scale * v2.y;
+ verts[3].z = Q.z + scale * v2.z;
+
+ for (i = 0; i < 4; i++)
+ {
+ Bool reflect2_p = ((i + (reflect_p != 0)) & 1);
+ XYZ a = verts[(i+1) % 4];
+ XYZ b = verts[(i+2) % 4];
+ XYZ c = verts[(i+3) % 4];
+ XYZ n = ((i & 1)
+ ? calc_normal (b, a, c)
+ : calc_normal (a, b, c));
+ if (wire)
+ glColor4fv (colors + (i * 4));
+ else
+ glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, colors + (i * 4));
+
+ glFrontFace (reflect2_p ? GL_CW : GL_CCW);
+ glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLES);
+ glNormal3f (n.x, n.y, n.z);
+ glVertex3f (a.x, a.y, a.z);
+ glVertex3f (b.x, b.y, b.z);
+ glVertex3f (c.x, c.y, c.z);
+ glEnd();
+ }
+}
+
+
+/* Reflect through the plane normal to the given vector.
+ */
+static void
+reflect (double x, double y, double z)
+{
+ GLfloat m[4][4];
+
+ m[0][0] = 1 - (2 * x * x);
+ m[1][0] = -2 * x * y;
+ m[2][0] = -2 * x * z;
+ m[3][0] = 0;
+
+ m[0][1] = -2 * x * y;
+ m[1][1] = 1 - (2 * y * y);
+ m[2][1] = -2 * y * z;
+ m[3][1] = 0;
+
+ m[0][2] = -2 * x * z;
+ m[1][2] = -2 * y * z;
+ m[2][2] = 1 - (2 * z * z);
+ m[3][2] = 0;
+
+ m[0][3] = 0;
+ m[1][3] = 0;
+ m[2][3] = 0;
+ m[3][3] = 1;
+
+ glMultMatrixf (&m[0][0]);
+}
+
+
+ENTRYPOINT void
+draw_kaleidocycle (ModeInfo *mi)
+{
+ kaleidocycle_configuration *bp = &bps[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ GLfloat colors[4*4];
+ GLfloat count;
+ double t, a;
+ int i;
+
+ GLfloat bspec[4] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat bshiny = 128.0;
+
+ if (!bp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ mi->polygon_count = 0;
+
+ glShadeModel(GL_SMOOTH);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_NORMALIZE);
+ glEnable(GL_CULL_FACE);
+
+ glPushMatrix ();
+
+ {
+ double x, y, z;
+ get_position (bp->rot, &x, &y, &z, !bp->button_down_p);
+ glTranslatef((x - 0.5) * 5,
+ (y - 0.5) * 5,
+ (z - 0.5) * 10);
+
+ /* Do it twice because we don't track the device's orientation. */
+ glRotatef( current_device_rotation(), 0, 0, 1);
+ gltrackball_rotate (bp->trackball);
+ glRotatef(-current_device_rotation(), 0, 0, 1);
+
+ get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
+ glRotatef (x * 360, 1, 0, 0);
+ glRotatef (y * 360, 0, 1, 0);
+ glRotatef (z * 360, 0, 0, 1);
+
+ get_rotation (bp->rot2, &x, &y, &z, !bp->button_down_p);
+ bp->th = x * 360 * 10 * speed;
+
+ /* Make sure the twist is always in motion. Without this, the rotator
+ sometimes stops, and for too long, and it's boring looking.
+ */
+ bp->th += speed * bp->dth++;
+ while (bp->dth > 360) bp->dth -= 360;
+ while (bp->th > 360) bp->th -= 360;
+ }
+
+ glMaterialfv (GL_FRONT, GL_SPECULAR, bspec);
+ glMateriali (GL_FRONT, GL_SHININESS, bshiny);
+
+
+ /* Evenly spread the colors of the faces, and cycle them together.
+ */
+ for (i = 0; i < 4; i++)
+ {
+ int o = bp->ncolors / 4;
+ int c = (bp->ccolor + (o*i)) % bp->ncolors;
+ colors[i*4+0] = bp->colors[c].red / 65536.0;
+ colors[i*4+1] = bp->colors[c].green / 65536.0;
+ colors[i*4+2] = bp->colors[c].blue / 65536.0;
+ colors[i*4+3] = 1;
+ }
+ bp->ccolor++;
+ if (bp->ccolor >= bp->ncolors) bp->ccolor = 0;
+
+
+ count = (int) floor (bp->count);
+ while (count < 8) count++;
+ if (((int) floor (count)) & 1) count++;
+
+ a = 2 * M_PI / (bp->count < 8 ? 8 : bp->count);
+ t = bp->th / (180 / M_PI);
+
+ glScalef (3, 3, 3);
+ glScalef (a, a, a);
+ glRotatef (90, 0, 0, 1);
+/* glRotatef (45, 0, 1, 0); */
+
+ for (i = 0; i <= (int) floor (bp->count); i++)
+ {
+ Bool flip_p = (i & 1);
+ glPushMatrix();
+ glRotatef ((i/2) * 4 * 180 / bp->count, 0, 0, 1);
+ if (flip_p) reflect (-sin(a), cos(a), 0);
+
+ if (bp->mode != STATIC && i >= (int) floor (bp->count))
+ {
+ /* Fractional bp->count means the last piece is in transition */
+ GLfloat scale = bp->count - (int) floor (bp->count);
+ GLfloat tick = 0.07 * speed;
+ GLfloat ocount = bp->count;
+ GLfloat alpha;
+
+ /* Fill in faster if we're starting up */
+ if (bp->count < MI_COUNT(mi))
+ tick *= 2;
+
+ glScalef (scale, scale, scale);
+
+ switch (bp->mode) {
+ case IN: break;
+ case OUT: tick = -tick; break;
+ case STATIC: tick = 0; break;
+ }
+
+ bp->count += tick;
+
+ if (bp->mode == IN
+ ? floor (ocount) != floor (bp->count)
+ : ceil (ocount) != ceil (bp->count))
+ {
+ if (bp->mode == IN)
+ bp->count = floor (ocount) + 1;
+ else
+ bp->count = ceil (ocount) - 1;
+
+ if (((int) floor (bp->count)) & 1 ||
+ (bp->mode == IN &&
+ (bp->count < MI_COUNT(mi) &&
+ bp->startup_p)))
+ {
+ /* keep going if it's odd, or less than 8. */
+ bp->count = round(bp->count);
+ }
+ else
+ {
+ bp->mode = STATIC;
+ bp->startup_p = False;
+ }
+ }
+
+ alpha = (scale * scale * scale * scale);
+ if (alpha < 0.4) alpha = 0.4;
+ colors[3] = colors[7] = colors[11] = colors[15] = alpha;
+ }
+
+ draw_tetra (mi, t, a, flip_p, colors);
+ mi->polygon_count += 4;
+
+ glPopMatrix();
+ }
+
+ if (bp->mode == STATIC && !(random() % 200)) {
+ if (bp->count <= bp->min_count)
+ bp->mode = IN;
+ else if (bp->count >= bp->max_count)
+ bp->mode = OUT;
+ else
+ bp->mode = bp->prev_mode;
+
+ bp->prev_mode = bp->mode;
+ }
+
+
+ mi->recursion_depth = ceil (bp->count);
+
+ glPopMatrix ();
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+XSCREENSAVER_MODULE ("Kaleidocycle", kaleidocycle)
+
+#endif /* USE_GL */
--- /dev/null
+.de EX \"Begin example
+.ne 5
+.if n .sp 1
+.if t .sp .5
+.nf
+.in +.5i
+..
+.de EE
+.fi
+.in -.5i
+.if n .sp 1
+.if t .sp .5
+..
+.TH XScreenSaver 1 "25-Jul-98" "X Version 11"
+.SH NAME
+kaleidocycle - draws twistable rings of tetrahedra
+.SH SYNOPSIS
+.B kaleidocycle
+[\-display \fIhost:display.screen\fP] [\-window] [\-root]
+[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP]
+[\-count \fInumber\fP]
+[\-speed \fInumber\fP]
+[\-wander] [\-no-wander]
+[\-spin \fIaxes\fP]
+[\-no-spin]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+The \fIkaleidocycle\fP program draws a ring composed of tetrahedra
+connected at the edges that twists and rotates toroidally. Segments
+are occasionally inserted or removed.
+.SH OPTIONS
+.I kaleidocycle
+accepts the following options:
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-visual \fIvisual\fP\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-count \fInumber\fP
+The initial number of segments. Default 16. Must be 8 or greater, and
+an even number.
+.TP 8
+.B \-speed \fInumber\fP
+Adjust the animation speed. 0.5 for half as fast, 2.0 for twice as fast.
+.TP 8
+.B \-wander
+Move the text around the screen. This is the default.
+.TP 8
+.B \-no\-wander
+Keep the text centered on the screen.
+.TP 8
+.B \-spin
+Which axes around which the text should spin. The default is "Z",
+meaning rotate the object the plane of the screen only.
+.TP 8
+.B \-no\-spin
+Don't spin the text at all: the same as \fB\-spin ""\fP.
+.TP 8
+.B \-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps
+Display the current frame rate, CPU load, and polygon count.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2001-2013 by 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 the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is"
+without express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski <jwz@jwz.org>
--- /dev/null
+/* quasicrystal, Copyright (c) 2013 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
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * Overlapping sine waves create interesting plane-tiling interference
+ * patterns. Created by jwz, Jul 2013. Inspired by
+ * http://mainisusuallyafunction.blogspot.com/2011/10/quasicrystals-as-sums-of-waves-in-plane.html
+ */
+
+
+#define DEFAULTS "*delay: 30000 \n" \
+ "*spin: True \n" \
+ "*wander: True \n" \
+ "*symmetric: True \n" \
+ "*count: 17 \n" \
+ "*contrast: 30 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+
+# define refresh_quasicrystal 0
+# define release_quasicrystal 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "colors.h"
+#include "rotator.h"
+#include <ctype.h>
+
+#ifdef USE_GL /* whole file */
+
+#define DEF_SPEED "1.0"
+
+typedef struct {
+ rotator *rot, *rot2;
+ GLuint texid;
+} plane;
+
+typedef struct {
+ GLXContext *glx_context;
+ Bool button_down_p;
+ Bool symmetric_p;
+ GLfloat contrast;
+ int count;
+ int ncolors, ccolor;
+ XColor *colors;
+ plane *planes;
+ int mousex, mousey;
+
+} quasicrystal_configuration;
+
+static quasicrystal_configuration *bps = NULL;
+
+static GLfloat speed;
+
+static XrmOptionDescRec opts[] = {
+ { "-spin", ".spin", XrmoptionNoArg, "True" },
+ { "+spin", ".spin", XrmoptionNoArg, "False" },
+ { "-wander", ".wander", XrmoptionNoArg, "True" },
+ { "+wander", ".wander", XrmoptionNoArg, "False" },
+ { "-symmetry", ".symmetric", XrmoptionNoArg, "True" },
+ { "-no-symmetry", ".symmetric", XrmoptionNoArg, "False" },
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-contrast", ".contrast", XrmoptionSepArg, 0 },
+};
+
+static argtype vars[] = {
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+};
+
+ENTRYPOINT ModeSpecOpt quasicrystal_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+
+/* Window management, etc
+ */
+ENTRYPOINT void
+reshape_quasicrystal (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+
+ glViewport (0, 0, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glOrtho (0, 1, 1, 0, -1, 1);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glTranslatef (0.5, 0.5, 0);
+ glScalef (h, 1, 1);
+ if (width > height)
+ glScalef (1/h, 1/h, 1);
+ glTranslatef (-0.5, -0.5, 0);
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+ENTRYPOINT Bool
+quasicrystal_handle_event (ModeInfo *mi, XEvent *event)
+{
+ quasicrystal_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (event->xany.type == ButtonPress &&
+ event->xbutton.button == Button1)
+ {
+ bp->button_down_p = True;
+ bp->mousex = event->xbutton.x;
+ bp->mousey = event->xbutton.y;
+ return True;
+ }
+ else if (event->xany.type == ButtonRelease &&
+ event->xbutton.button == Button1)
+ {
+ bp->button_down_p = False;
+ return True;
+ }
+ else if (event->xany.type == MotionNotify &&
+ bp->button_down_p)
+ {
+ /* Dragging up and down tweaks contrast */
+
+ int dx = event->xmotion.x - bp->mousex;
+ int dy = event->xmotion.y - bp->mousey;
+
+ if (abs(dy) > abs(dx))
+ {
+ bp->contrast += dy / 40.0;
+ if (bp->contrast < 0) bp->contrast = 0;
+ if (bp->contrast > 100) bp->contrast = 100;
+ }
+
+ bp->mousex = event->xmotion.x;
+ bp->mousey = event->xmotion.y;
+ return True;
+ }
+
+ return False;
+}
+
+
+
+ENTRYPOINT void
+init_quasicrystal (ModeInfo *mi)
+{
+ quasicrystal_configuration *bp;
+ int wire = MI_IS_WIREFRAME(mi);
+ unsigned char *tex_data = 0;
+ int tex_width;
+ int i;
+
+ if (!bps) {
+ bps = (quasicrystal_configuration *)
+ calloc (MI_NUM_SCREENS(mi), sizeof (quasicrystal_configuration));
+ if (!bps) {
+ fprintf(stderr, "%s: out of memory\n", progname);
+ exit(1);
+ }
+ }
+
+ bp = &bps[MI_SCREEN(mi)];
+
+ bp->glx_context = init_GL(mi);
+
+ reshape_quasicrystal (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
+ glDisable (GL_DEPTH_TEST);
+ glEnable (GL_CULL_FACE);
+
+ bp->count = MI_COUNT(mi);
+ if (bp->count < 1) bp->count = 1;
+
+ if (! wire)
+ {
+ unsigned char *o;
+ tex_width = 4096;
+ tex_data = (unsigned char *) calloc (4, tex_width);
+ o = tex_data;
+ for (i = 0; i < tex_width; i++)
+ {
+ unsigned char y = 255 * (1 + sin (i * M_PI * 2 / tex_width)) / 2;
+ *o++ = y;
+ *o++ = y;
+ *o++ = y;
+ *o++ = 255;
+ }
+ }
+
+ bp->symmetric_p =
+ get_boolean_resource (MI_DISPLAY (mi), "symmetry", "Symmetry");
+
+ bp->contrast = get_float_resource (MI_DISPLAY (mi), "contrast", "Contrast");
+ if (bp->contrast < 0 || bp->contrast > 100)
+ {
+ fprintf (stderr, "%s: contrast must be between 0 and 100%%.\n", progname);
+ bp->contrast = 0;
+ }
+
+ {
+ Bool spinp = get_boolean_resource (MI_DISPLAY (mi), "spin", "Spin");
+ Bool wanderp = get_boolean_resource (MI_DISPLAY (mi), "wander", "Wander");
+ double spin_speed = 0.01;
+ double wander_speed = 0.0001;
+ double spin_accel = 10.0;
+ double scale_speed = 0.005;
+
+ bp->planes = (plane *) calloc (sizeof (*bp->planes), bp->count);
+
+ bp->ncolors = 256; /* ncolors affects color-cycling speed */
+ bp->colors = (XColor *) calloc (bp->ncolors, sizeof(XColor));
+ make_smooth_colormap (0, 0, 0, bp->colors, &bp->ncolors,
+ False, 0, False);
+ bp->ccolor = 0;
+
+ for (i = 0; i < bp->count; i++)
+ {
+ plane *p = &bp->planes[i];
+ p->rot = make_rotator (0, 0,
+ spinp ? spin_speed : 0,
+ spin_accel,
+ wanderp ? wander_speed : 0,
+ True);
+ p->rot2 = make_rotator (0, 0,
+ 0, 0,
+ scale_speed,
+ True);
+ if (! wire)
+ {
+ clear_gl_error();
+
+ glGenTextures (1, &p->texid);
+ glBindTexture (GL_TEXTURE_1D, p->texid);
+ glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
+ glTexImage1D (GL_TEXTURE_1D, 0, GL_RGBA,
+ tex_width, 0,
+ GL_RGBA,
+ /* GL_UNSIGNED_BYTE, */
+ GL_UNSIGNED_INT_8_8_8_8_REV,
+ tex_data);
+ check_gl_error("texture");
+
+ glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+
+ glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+
+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ }
+ }
+ }
+
+ if (tex_data) free (tex_data);
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+}
+
+
+ENTRYPOINT void
+draw_quasicrystal (ModeInfo *mi)
+{
+ quasicrystal_configuration *bp = &bps[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ int wire = MI_IS_WIREFRAME(mi);
+ double r, ps;
+ int i;
+
+ if (!bp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ mi->polygon_count = 0;
+
+ glShadeModel(GL_FLAT);
+ glDisable(GL_DEPTH_TEST);
+ glDisable(GL_CULL_FACE);
+ glDisable (GL_LIGHTING);
+
+ glEnable (GL_BLEND);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+ glPushMatrix ();
+ glTranslatef (0.5, 0.5, 0);
+ glScalef (3, 3, 3);
+
+ if (wire) glScalef (0.2, 0.2, 0.2);
+
+ for (i = 0; i < bp->count; i++)
+ {
+ plane *p = &bp->planes[i];
+ double x, y, z;
+ double scale = (wire ? 10 : 700.0 / bp->count);
+ double pscale;
+
+ glPushMatrix();
+
+ get_position (p->rot, &x, &y, &z, !bp->button_down_p);
+ glTranslatef((x - 0.5) * 0.3333,
+ (y - 0.5) * 0.3333,
+ 0);
+
+ /* With -symmetry, keep the planes' scales in sync.
+ Otherwise, they scale independently.
+ */
+ if (bp->symmetric_p && i > 0)
+ pscale = ps;
+ else
+ {
+ get_position (p->rot2, &x, &y, &z, !bp->button_down_p);
+ pscale = 1 + (4 * z);
+ ps = pscale;
+ }
+
+ scale *= pscale;
+
+
+ /* With -symmetry, evenly distribute the planes' rotation.
+ Otherwise, they rotate independently.
+ */
+ if (bp->symmetric_p && i > 0)
+ z = r + (i * M_PI * 2 / bp->count);
+ else
+ {
+ get_rotation (p->rot, &x, &y, &z, !bp->button_down_p);
+ r = z;
+ }
+
+
+ glRotatef (z * 360, 0, 0, 1);
+ glTranslatef (-0.5, -0.5, 0);
+
+ glColor4f (1, 1, 1, (wire ? 0.5 : 1.0 / bp->count));
+
+ if (!wire)
+ {
+ glEnable (GL_TEXTURE_1D);
+ glBindTexture (GL_TEXTURE_1D, p->texid);
+ }
+
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glNormal3f (0, 0, 1);
+ glTexCoord2f (-scale/2, scale/2); glVertex3f (0, 1, 0);
+ glTexCoord2f ( scale/2, scale/2); glVertex3f (1, 1, 0);
+ glTexCoord2f ( scale/2, -scale/2); glVertex3f (1, 0, 0);
+ glTexCoord2f (-scale/2, -scale/2); glVertex3f (0, 0, 0);
+ glEnd();
+
+ if (wire)
+ {
+ float j;
+ glDisable (GL_TEXTURE_1D);
+ glColor4f (1, 1, 1, 1.0 / bp->count);
+ for (j = 0; j < 1; j += (1 / scale))
+ {
+ glBegin (GL_LINES);
+ glVertex3f (j, 0, 0);
+ glVertex3f (j, 1, 0);
+ mi->polygon_count++;
+ glEnd();
+ }
+ }
+
+ glPopMatrix();
+
+ mi->polygon_count++;
+ }
+
+ /* Colorize the grayscale image. */
+ {
+ GLfloat c[4];
+ c[0] = bp->colors[bp->ccolor].red / 65536.0;
+ c[1] = bp->colors[bp->ccolor].green / 65536.0;
+ c[2] = bp->colors[bp->ccolor].blue / 65536.0;
+ c[3] = 1;
+
+ /* Brighten the colors. */
+ c[0] = (0.6666 + c[0]/3);
+ c[1] = (0.6666 + c[1]/3);
+ c[2] = (0.6666 + c[2]/3);
+
+ glBlendFunc (GL_DST_COLOR, GL_SRC_COLOR);
+ glDisable (GL_TEXTURE_1D);
+ glColor4fv (c);
+ glTranslatef (-0.5, -0.5, 0);
+ glBegin (GL_QUADS);
+ glVertex3f (0, 1, 0);
+ glVertex3f (1, 1, 0);
+ glVertex3f (1, 0, 0);
+ glVertex3f (0, 0, 0);
+ glEnd();
+ mi->polygon_count++;
+ }
+
+ /* Clip the colors to simulate contrast. */
+
+ if (bp->contrast > 0)
+ {
+ /* If c > 0, map 0 - 100 to 0.5 - 1.0, and use (s & ~d) */
+ GLfloat c = 1 - (bp->contrast / 2 / 100.0);
+ glDisable (GL_TEXTURE_1D);
+ glDisable (GL_BLEND);
+ glEnable (GL_COLOR_LOGIC_OP);
+ glLogicOp (GL_AND_REVERSE);
+ glColor4f (c, c, c, 1);
+ glBegin (GL_QUADS);
+ glVertex3f (0, 1, 0);
+ glVertex3f (1, 1, 0);
+ glVertex3f (1, 0, 0);
+ glVertex3f (0, 0, 0);
+ glEnd();
+ mi->polygon_count++;
+ glDisable (GL_COLOR_LOGIC_OP);
+ }
+
+ /* Rotate colors. */
+ bp->ccolor++;
+ if (bp->ccolor >= bp->ncolors)
+ bp->ccolor = 0;
+
+
+ glPopMatrix ();
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+XSCREENSAVER_MODULE ("QuasiCrystal", quasicrystal)
+
+#endif /* USE_GL */
--- /dev/null
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+quasicrystal - aperiodic plane tilings.
+.SH SYNOPSIS
+.B quasicrystal
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-speed \fInumber\fP]
+[\-count \fInumber\fP]
+[\-contrast \fIpercent\fP]
+[\-no-wander]
+[\-no-spin]
+[\-asymmetric]
+[\-fps]
+.SH DESCRIPTION
+A quasicrystal is a structure that is ordered but aperiodic.
+Two-dimensional quasicrystals can be generated by adding a set of planes
+where x is the sine of y. Different complex aperiodic plane tilings are
+produced depending on the period, position, and rotation of the component
+planes, and whether the rotation of the planes is evenly distributed around
+the circle (the "symmetric" option, above) or random. See also the
+"RD-Bomb", "CWaves" and "Penrose" screen savers.
+http://en.wikipedia.org/wiki/Quasicrystal
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
+.TP 8
+.B \-speed \fInumber\fP
+Animation speed. 2 for twice as fast, 0.5 for half as fast.
+.TP 8
+.B \-contrast \fIcontrast\fP
+Contrast. Sort of. Default 30%.
+.TP 8
+.B \-count \fInumber\fP
+How many planes to use. Default 17.
+.TP 8
+.B \-wander | \-no-wander
+Whether the planes should displace horizontally and vertically.
+.TP 8
+.B \-spin | \-no-spin
+Whether the planes should rotate.
+.TP 8
+.B \-asymmetric
+Allow each plane to rotate freely instead of being constrained to an
+even distribution around the circle.
+.TP 8
+.B \-fps | \-no-fps
+Whether to show a frames-per-second display at the bottom of the screen.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2013 by 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 the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski.
gl_init(mi);
}
+ reshape_tangram (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
wire = MI_IS_WIREFRAME(mi);
tp->name_list = glGenLists(1);
-/* texfonts, Copyright (c) 2005-2012 Jamie Zawinski <jwz@jwz.org>
+/* texfonts, Copyright (c) 2005-2013 Jamie Zawinski <jwz@jwz.org>
* Loads X11 fonts into textures for use with OpenGL.
*
* Permission to use, copy, modify, distribute, and sell this software and its
}
else if (c == '\t')
{
- x = ((x + tabs) / tabs) * tabs; /* tab to tab stop */
+ if (tabs)
+ x = ((x + tabs) / tabs) * tabs; /* tab to tab stop */
}
# ifdef DO_SUBSCRIPTS
else if (c == '[' && (isdigit (string[i+1])))
--- /dev/null
+/* unknownpleasures, Copyright (c) 2013 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
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * Translated from Mathematica code by Archery:
+ * http://intothecontinuum.tumblr.com/post/27443100682/in-july-1967-astronomers-at-the-cavendish
+ *
+ * Interestingly, the original image is copyright-free:
+ * http://adamcap.com/2011/05/19/history-of-joy-division-unknown-pleasures-album-art/
+ * http://en.wikipedia.org/wiki/Unknown_Pleasures
+ *
+ * TODO:
+ *
+ * - Performance is not great. Spending half our time in compute_line()
+ * and half our time in glEnd(). It's a vast number of cos/pow calls,
+ * and a vast number of polygons. I'm not sure how much could be cached.
+ *
+ * - There's too low periodicity vertically on the screen.
+ *
+ * - There's too low periodicity in time.
+ *
+ * - Could take advantage of time periodicity for caching: just save every
+ * poly for an N second loop. That would be a huge amount of RAM though.
+ *
+ * - At low resolutions, GL_POLYGON_OFFSET_FILL seems to work poorly
+ * and the lines get blocky.
+ */
+
+
+#define DEFAULTS "*delay: 30000 \n" \
+ "*count: 80 \n" \
+ "*resolution: 100 \n" \
+ "*ortho: True \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+ "*geometry: =800x800" "\n" \
+
+# define refresh_unk 0
+# define release_unk 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "colors.h"
+#include "gltrackball.h"
+#include <ctype.h>
+
+#ifdef USE_GL /* whole file */
+
+#define DEF_SPEED "1.0"
+
+
+typedef struct {
+ GLXContext *glx_context;
+ trackball_state *trackball;
+ Bool button_down_p;
+ Bool orthop;
+ GLfloat resolution;
+ int count;
+ GLfloat t;
+} unk_configuration;
+
+static unk_configuration *bps = NULL;
+
+static GLfloat speed;
+
+static XrmOptionDescRec opts[] = {
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-resolution", ".resolution", XrmoptionSepArg, 0 },
+ { "-ortho", ".ortho", XrmoptionNoArg, "True" },
+ { "-no-ortho", ".ortho", XrmoptionNoArg, "False" },
+};
+
+static argtype vars[] = {
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+};
+
+ENTRYPOINT ModeSpecOpt unk_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+
+/* Window management, etc
+ */
+ENTRYPOINT void
+reshape_unk (ModeInfo *mi, int width, int height)
+{
+ unk_configuration *bp = &bps[MI_SCREEN(mi)];
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+
+ glViewport (0, 0, (GLint) width, (GLint) height);
+
+ if (bp->orthop)
+ {
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (1.0, 1/h, 690, 710);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0, 0, 700,
+ 0, 0, 0,
+ 0, 1, 0);
+ if (width < height)
+ glScalef (1/h, 1/h, 1);
+ glTranslatef (0, -0.5, 0);
+ }
+ else
+ {
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (30.0, 1/h, 20.0, 40.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 30.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+ if (width < height)
+ glScalef (1/h, 1/h, 1);
+ }
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+ENTRYPOINT Bool
+unk_handle_event (ModeInfo *mi, XEvent *event)
+{
+ unk_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (event->xany.type == ButtonPress &&
+ event->xbutton.button == Button1)
+ {
+ bp->button_down_p = True;
+ gltrackball_start (bp->trackball,
+ event->xbutton.x, event->xbutton.y,
+ MI_WIDTH (mi), MI_HEIGHT (mi));
+ return True;
+ }
+ else if (event->xany.type == ButtonRelease &&
+ event->xbutton.button == Button1)
+ {
+ bp->button_down_p = False;
+ return True;
+ }
+ else if (event->xany.type == ButtonPress &&
+ (event->xbutton.button == Button4 ||
+ event->xbutton.button == Button5 ||
+ event->xbutton.button == Button6 ||
+ event->xbutton.button == Button7))
+ {
+ int b = event->xbutton.button;
+ int speed = 1;
+ if (b == Button6 || b == Button7)
+ speed *= 3;
+ if (bp->orthop)
+ switch (b) { /* swap axes */
+ case Button4: b = Button6; break;
+ case Button5: b = Button7; break;
+ case Button6: b = Button4; break;
+ case Button7: b = Button5; break;
+ }
+ gltrackball_mousewheel (bp->trackball, b, speed, !!event->xbutton.state);
+ return True;
+ }
+ else if (event->xany.type == MotionNotify &&
+ bp->button_down_p)
+ {
+ gltrackball_track (bp->trackball,
+ event->xmotion.x, event->xmotion.y,
+ MI_WIDTH (mi), MI_HEIGHT (mi));
+ return True;
+ }
+ else if (event->xany.type == KeyPress)
+ {
+ KeySym keysym;
+ char c = 0;
+ XLookupString (&event->xkey, &c, 1, &keysym, 0);
+ if (c == ' ')
+ {
+ bp->orthop = !bp->orthop;
+ reshape_unk (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ return True;
+ }
+ return False;
+ }
+
+ return False;
+}
+
+
+
+ENTRYPOINT void
+init_unk (ModeInfo *mi)
+{
+ unk_configuration *bp;
+
+ if (!bps) {
+ bps = (unk_configuration *)
+ calloc (MI_NUM_SCREENS(mi), sizeof (unk_configuration));
+ if (!bps) {
+ fprintf(stderr, "%s: out of memory\n", progname);
+ exit(1);
+ }
+ }
+
+ bp = &bps[MI_SCREEN(mi)];
+
+ bp->glx_context = init_GL(mi);
+
+ bp->orthop = get_boolean_resource (MI_DISPLAY (mi), "ortho", "Ortho");
+ bp->resolution = get_float_resource (MI_DISPLAY (mi),
+ "resolution", "Resolution");
+ if (bp->resolution < 1) bp->resolution = 1;
+ if (bp->resolution > 300) bp->resolution = 300;
+
+ reshape_unk (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
+ bp->count = MI_COUNT(mi);
+ if (bp->count < 1) bp->count = 1;
+
+ bp->trackball = gltrackball_init ();
+
+ if (MI_COUNT(mi) < 1) MI_COUNT(mi) = 1;
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+}
+
+
+
+static double
+R (double f)
+{
+ /* A simple, fast, deterministic PRNG.
+ ya_rand_init() is too slow for this, and the stream of numbers here
+ doesn't have to be high quality.
+ */
+#if 1
+ int seed0 = 1613287;
+
+# else
+ /* Kluge to let me pick a good seed factor by trial and error... */
+ static int seed0 = 0;
+ static int count = 0;
+ if (count++ > 150000000) seed0 = 0, count=0;
+ if (! seed0)
+ {
+ seed0 = (random() & 0xFFFFF);
+ fprintf(stderr, "seed0 = %8x %d\n", seed0, seed0);
+ }
+# endif
+
+ long seed = seed0 * f;
+ seed = 48271 * (seed % 44488) - 3399 * (seed / 44488);
+ f = (double) seed / 0x7FFFFFFF;
+
+ return f;
+}
+
+
+static void
+compute_line (ModeInfo *mi,
+ int xmin, int xmax, GLfloat xinc,
+ GLfloat res_scale,
+ int y,
+ GLfloat *points)
+{
+ unk_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ GLfloat fx;
+ int lastx = -999999;
+
+ /* Compute the points on the line */
+
+ for (fx = xmin; fx < xmax; fx += xinc)
+ {
+ int x = fx;
+ int n;
+ GLfloat hsum = 0, vsum = 0;
+
+ if (x == lastx) continue;
+ lastx = x;
+
+ for (n = 1; n <= 30; n++)
+ {
+ /* This sum affects crinkliness of the lines */
+ hsum += (10 *
+ sin (2 * M_PI
+ * R (4 * y)
+ + bp->t
+ + R (2 * n * y)
+ * 2 * M_PI)
+ * exp (-pow ((.3 * (x / res_scale) + 30
+ - 1 * 100 * R (2 * n * y)),
+ 2)
+ / 20.0));
+ }
+
+ for (n = 1; n <= 4; n++)
+ {
+ /* This sum affects amplitude of the peaks */
+ vsum += (3 * (1 + R (3 * n * y))
+ * fabs (sin (bp->t + R (n * y)
+ * 2 * M_PI))
+ * exp (-pow (((x / res_scale) - 1 * 100 * R (n * y)),
+ 2)
+ / 20.0));
+ }
+
+ /* Scale of this affects amplitude of the flat parts */
+ points[x - xmin] = (0.2 * sin (2 * M_PI * R (6 * y) + hsum) + vsum);
+ }
+
+}
+
+
+ENTRYPOINT void
+draw_unk (ModeInfo *mi)
+{
+ unk_configuration *bp = &bps[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ int wire = MI_IS_WIREFRAME(mi);
+ GLfloat aspect = 1.5;
+
+ GLfloat res_scale = 4;
+ int xmin = -50 * res_scale;
+ int xmax = 150 * res_scale;
+ GLfloat xinc = 100.0 / (bp->resolution / res_scale);
+ int ymin = 1;
+ int ytop = MI_COUNT(mi);
+ int yinc = 1;
+ int y;
+ GLfloat *points;
+
+ if (xinc < 0.25) xinc = 0.25;
+
+ if (!bp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ mi->polygon_count = 0;
+
+ glShadeModel (GL_FLAT);
+ glEnable (GL_DEPTH_TEST);
+ glDisable (GL_CULL_FACE);
+
+ glPushMatrix ();
+
+ glRotatef(current_device_rotation(), 0, 0, 1);
+
+ gltrackball_rotate (bp->trackball);
+ glScalef (10, 10, 10);
+
+ glRotatef (-45, 1, 0, 0);
+ glTranslatef (-0.5, -0.5, 0);
+ if (bp->orthop)
+ glTranslatef (0, 0.05, 0);
+ else
+ glTranslatef (0, 0.15, 0);
+
+ points = (GLfloat *) malloc (sizeof(*points) * (xmax - xmin));
+
+ if (!bp->button_down_p)
+ {
+ double s = 6.3 / 19 / 3;
+# if 1
+ bp->t -= s * speed;
+ if (bp->t <= 0)
+ bp->t = s * 18 * 3;
+# else
+ bp->t += s;
+# endif
+ }
+
+ glLineWidth (2);
+
+ /* Lower the resolution to get a decent frame rate on iPhone 4s */
+ if (mi->xgwa.width <= 640 || mi->xgwa.height <= 640)
+ {
+ ytop *= 0.6;
+ xinc *= 3;
+ }
+
+# ifdef USE_IPHONE
+ /* Lower it even further for iPhone 3 */
+ if (mi->xgwa.width <= 480 || mi->xgwa.height <= 480)
+ {
+ ytop *= 0.8;
+ xinc *= 1.2;
+ }
+
+ /* Performance just sucks on iPad 3, even with a very high xinc. WTF? */
+/*
+ if (mi->xgwa.width >= 2048 || mi->xgwa.height >= 2048)
+ xinc *= 2;
+*/
+
+# endif /* USE_IPHONE */
+
+
+ /* Make the image fill the screen a little more fully */
+ if (mi->xgwa.width <= 640 || mi->xgwa.height <= 640)
+ {
+ glScalef (1.2, 1.2, 1.2);
+ glTranslatef (-0.08, 0, 0);
+ }
+
+ if (mi->xgwa.width <= 480 || mi->xgwa.height <= 480)
+ glLineWidth (1);
+
+
+ if (wire)
+ xinc *= 1.3;
+
+ /* Draw back mask */
+ {
+ GLfloat s = 0.99;
+ glDisable (GL_POLYGON_OFFSET_FILL);
+ glColor3f (0, 0, 0);
+ glPushMatrix();
+ glTranslatef (0, (1-aspect)/2, -0.005);
+ glScalef (1, aspect, 1);
+ glTranslatef (0.5, 0.5, 0);
+ glScalef (s, s, 1);
+ glBegin (GL_QUADS);
+ glVertex3f (-0.5, -0.5, 0);
+ glVertex3f ( 0.5, -0.5, 0);
+ glVertex3f ( 0.5, 0.5, 0);
+ glVertex3f (-0.5, 0.5, 0);
+ glEnd();
+ glPopMatrix();
+ }
+
+ if (! wire)
+ {
+ glEnable (GL_LINE_SMOOTH);
+ glHint (GL_LINE_SMOOTH_HINT, GL_NICEST);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable (GL_BLEND);
+
+ /* So the masking quads don't interfere with the lines */
+ glEnable (GL_POLYGON_OFFSET_FILL);
+ glPolygonOffset (1.0, 1.0);
+ }
+
+ for (y = ymin; y <= ytop; y += yinc)
+ {
+ /* Compute all the verts on the line */
+ compute_line (mi, xmin, xmax, xinc, res_scale, y, points);
+
+ /* Draw the line segments; then draw the black shielding quads. */
+ {
+ GLfloat yy = y / (GLfloat) ytop;
+ int linesp;
+
+ yy = (yy * aspect) - ((aspect - 1) / 2);
+
+ for (linesp = 0; linesp <= 1; linesp++)
+ {
+ GLfloat fx;
+ int lastx = -999999;
+
+ GLfloat c = (linesp || wire ? 1 : 0);
+ glColor3f (c, c, c);
+
+ glBegin (linesp
+ ? GL_LINE_STRIP
+ : wire ? GL_LINES : GL_QUAD_STRIP);
+ lastx = -999999;
+ for (fx = xmin; fx < xmax; fx += xinc)
+ {
+ int x = fx;
+ GLfloat xx = (x - xmin) / (GLfloat) (xmax - xmin);
+ GLfloat zz = points [x - xmin];
+
+ if (x == lastx) continue;
+ lastx = x;
+
+ zz /= 80;
+ glVertex3f (xx, yy, zz);
+ if (! linesp)
+ glVertex3f (xx, yy, 0);
+ mi->polygon_count++;
+ }
+ glEnd ();
+ }
+ }
+ }
+
+ free (points);
+
+ glPopMatrix ();
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+XSCREENSAVER_MODULE_2 ("UnknownPleasures", unknownpleasures, unk)
+
+#endif /* USE_GL */
--- /dev/null
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+unknownpleasures - an animation of the signal from the pulsar PSR B1919+21.
+.SH SYNOPSIS
+.B unknownpleasures
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-speed \fIpercent\fP]
+[\-count \fIinteger\fP]
+[\-resolution \fIpercent\fP]
+[\-no-ortho]
+[\-fps]
+.SH DESCRIPTION
+PSR B1919+21 (AKA CP 1919) was the first pulsar ever discovered: a spinning
+neutron star emitting a periodic lighthouse-like beacon. An illustration of
+the signal received from it was published in Scientific American in 1971,
+and later in The Cambridge Encyclopedia of Astronomy in 1977, where it was
+seen by Stephen Morris, the drummer of Joy Division, and was consequently
+appropriated by Peter Saville for the cover of the band's album "Unknown
+Pleasures".
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
+.TP 8
+.B \-speed \fInumber\fP
+Animation speed. 2 for twice as fast, 0.5 for half as fast.
+.TP 8
+.B \-count \fInumber\fP
+Scanlines (vertical resolution). Default: 80.
+.TP 8
+.B \-count \fInumber\fP
+Horizontal Resolution, Default: 100%.
+.TP 8
+.B \-ortho | \-no-ortho
+Whether to use an orthographic projection.
+.TP 8
+.B \-fps | \-no-fps
+Whether to show a frames-per-second display at the bottom of the screen.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2013 by 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 the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski.
/* xpm-ximage.c --- converts XPM data to an XImage for use with OpenGL.
- * xscreensaver, Copyright (c) 1998-2008 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1998-2013 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
}
row += stride;
}
- gdk_pixbuf_unref (pb); /* #### does doing this free colors? */
+
+ /* #### are colors getting freed here? */
+ g_object_unref (pb);
return image;
}
"*torque: 0.0075",
"*elasticity: 0.9",
"*maxVelocity: 0.5",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*count: 12 \n" \
"*ncolors: 64 \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
#define BRIGHT_COLORS
# define grav_handle_event 0
"*fpsSolid: true",
"*delay: 10000",
"*grey: false",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
halftone->ncolors = get_integer_resource (dpy, "colors", "Colors");
if (halftone->ncolors < 4) halftone->ncolors = 4;
halftone->colors = (XColor *) calloc(halftone->ncolors, sizeof(XColor));
- make_smooth_colormap (dpy, attrs.visual, attrs.colormap,
+ make_smooth_colormap (attrs.screen, attrs.visual, attrs.colormap,
halftone->colors, &halftone->ncolors,
True, 0, False);
halftone->color0 = 0;
"*sizeFactor: 1.5",
"*colors: 200",
"*cycleSpeed: 10",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
-/* xscreensaver, Copyright (c) 1993, 1995, 1996, 1997, 1998, 1999, 2003, 2006
- * Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1993-2013 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
if (mono_p)
;
else if (random() % (cmode == seuss_mode ? 2 : 10))
- make_uniform_colormap (st->dpy, xgwa.visual, st->cmap, st->colors, &st->ncolors,
+ make_uniform_colormap (xgwa.screen, xgwa.visual, st->cmap,
+ st->colors, &st->ncolors,
True, 0, True);
else
- make_smooth_colormap (st->dpy, xgwa.visual, st->cmap, st->colors, &st->ncolors,
+ make_smooth_colormap (xgwa.screen, xgwa.visual, st->cmap,
+ st->colors, &st->ncolors,
True, 0, True);
if (st->ncolors <= 2) mono_p = True;
"*delay2: 20",
"*increment: 0",
"*animate: False",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*fpsSolid: true",
"*delay: 5",
"*subdelay: 20000",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
--- /dev/null
+/* xscreensaver, Copyright (c) 1999-2013 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
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * Draws a grid of hexagons or other shapes and drops them out.
+ * Created 8-Jul-2013.
+ */
+
+#include <math.h>
+#include "screenhack.h"
+
+#define countof(x) (sizeof(x)/sizeof(*(x)))
+#define ABS(x) ((x)<0?-(x):(x))
+
+typedef struct {
+ int sides;
+ int cx, cy;
+ double th0, th, radius, i, speed;
+ int colors[2];
+ Bool initted_p;
+} cell;
+
+typedef struct {
+ Display *dpy;
+ Window window;
+ XWindowAttributes xgwa;
+
+ int ncells, cells_size, gw, gh;
+ cell *cells;
+
+ int delay;
+ double speed;
+ int sides;
+ Bool lockstep_p;
+ Bool uniform_p;
+ Bool initted_p;
+
+ int ncolors;
+ XColor *colors;
+ GC gc;
+
+} state;
+
+
+static void
+make_cells (state *st)
+{
+ int grid_size = get_integer_resource (st->dpy, "size", "Size");
+ cell *cells2;
+ int size, r, gw, gh, x, y, i;
+ double th = 0;
+
+ grid_size = get_integer_resource (st->dpy, "size", "Size");
+ if (grid_size < 5) grid_size = 5;
+
+ size = ((st->xgwa.width > st->xgwa.height
+ ? st->xgwa.width : st->xgwa.height)
+ / grid_size);
+ gw = st->xgwa.width / size;
+ gh = st->xgwa.height / size;
+
+ switch (st->sides) {
+ case 8:
+ r = size * 0.75;
+ th = M_PI / st->sides;
+ gw *= 1.25;
+ gh *= 1.25;
+ break;
+ case 6:
+ r = size / sqrt(3);
+ th = M_PI / st->sides;
+ gh *= 1.2;
+ break;
+ case 3:
+ size *= 2;
+ r = size / sqrt(3);
+ th = M_PI / st->sides / 2;
+ break;
+ case 4:
+ size /= 2;
+ r = size * sqrt (2);
+ th = M_PI / st->sides;
+ break;
+ default:
+ abort();
+ break;
+ }
+
+ gw += 3; /* leave a few extra columns off screen just in case */
+ gh += 3;
+
+ st->ncells = gw * gh;
+
+ if (st->initted_p && !st->cells) abort();
+ if (!st->initted_p && st->cells) abort();
+
+ cells2 = (cell *) calloc (st->ncells, sizeof(*cells2));
+ if (! cells2) abort();
+
+ if (st->cells)
+ {
+ for (y = 0; y < (st->gh < gh ? st->gh : gh); y++)
+ for (x = 0; x < (st->gw < gw ? st->gw : gw); x++)
+ cells2[y * gw + x] = st->cells [y * st->gw + x];
+ free (st->cells);
+ st->cells = 0;
+ }
+
+ st->cells = cells2;
+ st->gw = gw;
+ st->gh = gh;
+
+ i = 0;
+ for (y = 0; y < gh; y++)
+ for (x = 0; x < gw; x++)
+ {
+ cell *c = &st->cells[i];
+ c->sides = st->sides;
+ c->radius = r;
+ c->th = th;
+
+ switch (st->sides) {
+ case 8:
+ if (x & 1)
+ {
+ c->cx = x * size;
+ c->radius /= 2;
+ c->th = M_PI / 4;
+ c->sides = 4;
+ c->radius *= 1.1;
+ }
+ else
+ {
+ c->cx = x * size;
+ c->radius *= 1.02;
+ c->radius--;
+ }
+
+ if (y & 1)
+ c->cx -= size;
+
+ c->cy = y * size;
+
+ break;
+ case 6:
+ c->cx = x * size;
+ c->cy = y * size * sqrt(3)/2;
+ if (y & 1)
+ c->cx -= size * 0.5;
+ break;
+ case 4:
+ c->cx = x * size * 2;
+ c->cy = y * size * 2;
+ break;
+ case 3:
+ c->cx = x * size * 0.5;
+ c->cy = y * size * sqrt(3)/2;
+ if ((x & 1) ^ (y & 1))
+ {
+ c->th = th + M_PI;
+ c->cy -= (r * 0.5);
+ }
+ break;
+ default:
+ abort();
+ }
+
+ if (! c->initted_p)
+ {
+ c->speed = st->speed * (st->uniform_p ? 1 : (0.1 + frand(0.9)));
+ c->i = st->lockstep_p ? 0 : random() % r;
+ c->colors[0] = (st->lockstep_p ? 0 : random() % st->ncolors);
+ c->colors[1] = 0;
+ c->initted_p = True;
+ }
+
+ c->radius += 2; /* Avoid rounding errors */
+
+ if (c->i > c->radius) c->i = c->radius;
+ if (c->colors[0] >= st->ncolors) c->colors[0] = st->ncolors-1;
+ if (c->colors[1] >= st->ncolors) c->colors[1] = st->ncolors-1;
+
+ i++;
+ }
+
+ st->initted_p = True;
+}
+
+
+static void
+draw_cell (state *st, cell *c)
+{
+ XPoint points[20];
+ int i, j;
+ for (j = 0; j <= 1; j++)
+ {
+ int r = (j == 0 ? c->radius : c->i);
+ for (i = 0; i < c->sides; i++)
+ {
+ double th = i * M_PI * 2 / c->sides;
+ points[i].x = c->cx + r * cos (th + c->th) + 0.5;
+ points[i].y = c->cy + r * sin (th + c->th) + 0.5;
+ }
+ XSetForeground (st->dpy, st->gc, st->colors[c->colors[j]].pixel);
+ XFillPolygon (st->dpy, st->window, st->gc, points, c->sides,
+ Convex, CoordModeOrigin);
+ }
+
+ c->i -= c->speed;
+ if (c->i < 0)
+ {
+ c->i = c->radius;
+ c->colors[1] = c->colors[0];
+ if (c != &st->cells[0])
+ c->colors[0] = st->cells[0].colors[0];
+ else
+ c->colors[0] = random() % st->ncolors;
+ }
+}
+
+
+static void
+hexadrop_init_1 (Display *dpy, Window window, state *st)
+{
+ XGCValues gcv;
+ char *s1, *s2;
+
+ st->dpy = dpy;
+ st->window = window;
+ st->delay = get_integer_resource (st->dpy, "delay", "Integer");
+ st->ncolors = get_integer_resource (st->dpy, "ncolors", "Integer");
+ st->speed = get_float_resource (st->dpy, "speed", "Speed");
+ if (st->speed < 0) st->speed = 0;
+
+ XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
+
+ if (st->ncolors < 2) st->ncolors = 2;
+
+ st->colors = (XColor *) calloc (sizeof(*st->colors), st->ncolors);
+
+ if (st->ncolors < 10)
+ make_random_colormap (st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
+ st->colors, &st->ncolors, False, True, 0, True);
+ else
+ make_smooth_colormap (st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
+ st->colors, &st->ncolors, True, 0, True);
+ XSetWindowBackground (dpy, window, st->colors[0].pixel);
+
+ s1 = get_string_resource (st->dpy, "uniform", "Uniform");
+ s2 = get_string_resource (st->dpy, "lockstep", "Lockstep");
+
+ if ((!s1 || !*s1 || !strcasecmp(s1, "maybe")) &&
+ (!s2 || !*s2 || !strcasecmp(s2, "maybe")))
+ {
+ /* When being random, don't do both. */
+ st->uniform_p = random() & 1;
+ st->lockstep_p = st->uniform_p ? 0 : random() & 1;
+ }
+ else
+ {
+ if (!s1 || !*s1 || !strcasecmp(s1, "maybe"))
+ st->uniform_p = random() & 1;
+ else
+ st->uniform_p = get_boolean_resource (st->dpy, "uniform", "Uniform");
+
+ if (!s2 || !*s2 || !strcasecmp(s2, "maybe"))
+ st->lockstep_p = random() & 1;
+ else
+ st->lockstep_p = get_boolean_resource (st->dpy, "lockstep","Lockstep");
+ }
+
+
+ st->sides = get_integer_resource (st->dpy, "sides", "Sides");
+ if (! (st->sides == 0 || st->sides == 3 || st->sides == 4 ||
+ st->sides == 6 || st->sides == 8))
+ {
+ printf ("%s: invalid number of sides: %d\n", progname, st->sides);
+ st->sides = 0;
+ }
+
+ if (! st->sides)
+ {
+ static int defs[] = { 3, 3, 3,
+ 4,
+ 6, 6, 6, 6,
+ 8, 8, 8 };
+ st->sides = defs[random() % countof(defs)];
+ }
+
+ make_cells (st);
+ gcv.foreground = st->colors[0].pixel;
+ st->gc = XCreateGC (dpy, window, GCForeground, &gcv);
+}
+
+
+static void *
+hexadrop_init (Display *dpy, Window window)
+{
+ state *st = (state *) calloc (1, sizeof(*st));
+ hexadrop_init_1 (dpy, window, st);
+ return st;
+}
+
+
+
+static unsigned long
+hexadrop_draw (Display *dpy, Window window, void *closure)
+{
+ state *st = (state *) closure;
+ int i;
+
+ for (i = 0; i < st->ncells; i++)
+ draw_cell (st, &st->cells[i]);
+
+ return st->delay;
+}
+
+
+static void
+hexadrop_reshape (Display *dpy, Window window, void *closure,
+ unsigned int w, unsigned int h)
+{
+ state *st = (state *) closure;
+ XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
+ make_cells (st);
+}
+
+
+static void
+hexadrop_free (Display *dpy, Window window, void *closure)
+{
+ state *st = (state *) closure;
+ if (st->colors)
+ {
+ free_colors (st->xgwa.screen, st->xgwa.colormap, st->colors, st->ncolors);
+ free (st->colors);
+ st->colors = 0;
+ }
+ if (st->cells)
+ {
+ free (st->cells);
+ st->cells = 0;
+ }
+ if (st->gc)
+ {
+ XFreeGC (st->dpy, st->gc);
+ st->gc = 0;
+ }
+}
+
+
+static Bool
+hexadrop_event (Display *dpy, Window window, void *closure, XEvent *event)
+{
+ state *st = (state *) closure;
+
+ if (event->type == ButtonPress || event->type == KeyPress)
+ {
+ cell *c = st->cells;
+ st->cells = 0;
+ hexadrop_free (st->dpy, st->window, st);
+ free (st->cells);
+ st->cells = c;
+ hexadrop_init_1 (st->dpy, st->window, st);
+ return True;
+ }
+
+ return False;
+}
+
+
+static const char *hexadrop_defaults [] = {
+ ".background: black",
+ ".foreground: white",
+ "*fpsSolid: true",
+ "*delay: 30000",
+ "*sides: 0",
+ "*size: 15",
+ "*speed: 1.0",
+ "*ncolors: 128",
+ "*uniform: Maybe",
+ "*lockstep: Maybe",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
+ 0
+};
+
+static XrmOptionDescRec hexadrop_options [] = {
+ { "-delay", ".delay", XrmoptionSepArg, 0 },
+ { "-sides", ".sides", XrmoptionSepArg, 0 },
+ { "-size", ".size", XrmoptionSepArg, 0 },
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-ncolors", ".ncolors", XrmoptionSepArg, 0 },
+ { "-uniform-speed", ".uniform", XrmoptionNoArg, "True" },
+ { "-no-uniform-speed",".uniform", XrmoptionNoArg, "False" },
+ { "-lockstep", ".lockstep", XrmoptionNoArg, "True" },
+ { "-no-lockstep", ".lockstep", XrmoptionNoArg, "False" },
+ { 0, 0, 0, 0 }
+};
+
+XSCREENSAVER_MODULE ("Hexadrop", hexadrop)
--- /dev/null
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+hexadrop - shrinking hexagons.
+.SH SYNOPSIS
+.B hexadrop
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-speed \fInumber\fP]
+[\-size \fInumber\fP]
+[\-sides \fInumber\fP]
+[\-uniform-speed]
+[\-no-uniform-speed]
+[\-lockstep]
+[\-no-lockstep]
+[\-fps]
+.SH DESCRIPTION
+Draws a grid of hexagons or other shapes and drops them out.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
+.TP 8
+.B \-speed \fInumber\fP
+Speed. 0.5 for half as fast; 2.0 for twice as fast.
+.TP 8
+.B \-size \fInumber\fP
+How many tiles to fit horizontally on the screen. Default 15.
+.TP 8
+.B \-sides \fInumber\fP
+Shape of the tiles. 3, 4, 6 or 8. Default: random.
+.TP 8
+.B \-uniform-speed | \-no-uniform-speed
+Whether each tile should drop at the same speed. Default: random.
+.TP 8
+.B \-lockstep | \-no-lockstep
+Whether each tile should drop at the same time. Default: random.
+.TP 8
+.B \-fps | \-no-fps
+Whether to show a frames-per-second display at the bottom of the screen.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2013 by 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 the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski.
"*cycles: 2500 \n" \
"*ncolors: 200 \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
# define SMOOTH_COLORS
# define reshape_hop 0
"*doubleBuffer: False",
#else
"*doubleBuffer: True",
+#endif
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
#endif
0
};
if (st->colours) free(st->colours);
st->colours = (XColor *)calloc(st->ncolours, sizeof(XColor));
if (!st->colours) exit(1);
- make_smooth_colormap (st->dpy, xgwa.visual, xgwa.colormap,
+ make_smooth_colormap (xgwa.screen, xgwa.visual, xgwa.colormap,
st->colours, &st->ncolours,
True, 0, False);
-/* imsmap, Copyright (c) 1992-2008 Juergen Nickelsen and Jamie Zawinski.
+/* imsmap, Copyright (c) 1992-2013 Juergen Nickelsen and Jamie Zawinski.
* Derived from code by Markus Schirmer, TU Berlin.
*
* Permission to use, copy, modify, distribute, and sell this software and its
if (mono_p)
st->flip_xy = 0;
else if (st->colors)
- free_colors (st->dpy, st->cmap, st->colors, st->ncolors);
+ free_colors (st->xgwa.screen, st->cmap, st->colors, st->ncolors);
st->colors = 0;
st->ncolors = get_integer_resource (st->dpy, "ncolors", "Integer");
{
st->colors = (XColor *) malloc (st->ncolors * sizeof(*st->colors));
- make_smooth_colormap (st->dpy, st->xgwa.visual, st->cmap,
+ make_smooth_colormap (st->xgwa.screen, st->xgwa.visual, st->cmap,
st->colors, &st->ncolors,
True, 0, False);
if (st->ncolors <= 2)
"*iterations: 7",
"*delay: 5",
"*delay2: 20000",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*baseOrbits: 75",
"*baseOnCenter: False",
"*drawCenters: False",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
* Last modified: Sun Aug 31 23:40:14 2003,
* david slimp <rock808@DavidSlimp.com>
* added -hue option to specify base color hue
- *
- * TODO:
- *
- * This really needs to be sped up.
- *
- * I've tried making it use XPutPixel/XPutImage instead of XFillRectangle,
- * but that doesn't seem to help (it's the same speed at gridsize=1, and
- * it actually makes it slower at larger sizes.)
- *
- * I played around with shared memory, but clearly I still don't know how
- * to use the XSHM extension properly, because it doesn't work yet.
- *
- * Hannu had put in code to use the double-buffering extension, but that
- * code didn't work for me on Irix. I don't think it would help anyway,
- * since it's not the swapping of frames that is the bottleneck (or a source
- * of visible flicker.)
- *
- * -- jwz, 4-Jun-98
+ * Last modified: Wed May 15 00:04:43 2013,
+ * Dave Odell <dmo2118@gmail.com>
+ * Tuned performance; double-buffering is now off by default.
+ * Made animation speed independant of FPS.
+ * Added cleanup code, fixed a few glitches.
+ * Added gratuitous #ifdefs.
*/
#include <math.h>
+#include <errno.h>
#include "screenhack.h"
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#else
+
+typedef unsigned int uint32_t;
+typedef unsigned short uint16_t;
+typedef unsigned char uint8_t;
+
+#endif
+
+/*
+Tested on an Intel(R) Pentium(R) 4 CPU 3.00GHz (family 15, model 6, 2 cores),
+1 GB PC2-4200, nouveau - Gallium 0.4 on NV44, X.Org version: 1.13.3. A very
+modest system by current standards.
+
+Does double-buffering make sense? (gridsize = 2)
+USE_XIMAGE is off: Yes (-db: 4.1 FPS, -no-db: 2.9 FPS)
+XPutImage in strips: No (-db: 35.9 FPS, -no-db: 38.7 FPS)
+XPutImage, whole image: No (-db: 32.3 FPS, -no-db: 33.7 FPS)
+MIT-SHM, whole image: Doesn't work anyway: (37.3 FPS)
+
+If gridsize = 1, XPutImage is slow when the XImage is one line at a time.
+XPutImage in strips: -db: 21.2 FPS, -no-db: 19.7 FPS
+XPutimage, whole image: -db: 23.2 FPS, -no-db: 23.4 FPS
+MIT-SHM: 26.0 FPS
+
+So XPutImage in strips is very slightly faster when gridsize >= 2, but
+quite a bit worse when gridsize = 1.
+*/
+
/* I thought it would be faster this way, but it turns out not to be... -jwz */
-#undef USE_XIMAGE
+/* It's a lot faster for me, though - D.O. */
+#define USE_XIMAGE
+
+/* i.e. make the XImage the size of the screen. This is much faster when
+ * gridsize = 1. (And SHM is turned off.) */
+#define USE_BIG_XIMAGE
+
+/* Numbers are wave_table size, measured in unsigned integers.
+ * FPS/radius = 50/radius = 800/radius = 1500/Big-O memory usage
+ *
+ * Use at most one of the following:
+ * Both off = regular sqrt() - 13.5 FPS, 50/800/1500. */
+
+/* #define USE_FAST_SQRT_HACKISH */ /* 17.8 FPS/2873/4921/5395/O(lg(radius)) */
+#define USE_FAST_SQRT_BIGTABLE2 /* 26.1 FPS/156/2242/5386/O(radius^2) */
#ifndef USE_XIMAGE
# undef HAVE_XSHM_EXTENSION /* only applicable when using XImages */
#endif /* USE_XIMAGE */
-
#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
# include "xdbe.h"
#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
"*gray: false", /* color or grayscale */
"*mono: false", /* monochrome, not very much fun */
- "*doubleBuffer: True",
+ "*doubleBuffer: False", /* doubleBuffer slows things down for me - D.O. */
#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
"*useDBE: True", /* use double buffering extension */
#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
#ifdef HAVE_XSHM_EXTENSION
"*useSHM: True", /* use shared memory extension */
#endif /* HAVE_XSHM_EXTENSION */
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
};
struct inter_source {
- int x;
+ int x;
int y;
double x_theta;
double y_theta;
struct inter_context {
/*
- * Display-related entries
+ * Display-related entries
*/
Display* dpy;
Window win;
#endif /* USE_XIMAGE */
#ifdef HAVE_XSHM_EXTENSION
- Bool use_shm;
+ Bool use_shm, shm_can_draw;
XShmSegmentInfo shm_info;
#endif /* HAVE_XSHM_EXTENSION */
int speed;
int delay;
int shift;
- int radius;
/*
* Drawing-related entries
int w;
int h;
Colormap cmap;
+ Screen *screen;
XColor* pal;
+#ifndef USE_XIMAGE
GC* gcs;
+#endif
+ int radius; /* Not always the same as the X resource. */
+ double last_frame;
+#ifdef USE_XIMAGE
+ uint32_t* row;
+#endif
/*
* lookup tables
*/
- int* wave_height;
+ unsigned* wave_height;
/*
* Interference sources
# define TARGET(c) ((c)->pix_buf ? (c)->pix_buf : (c)->win)
#endif /* !HAVE_DOUBLE_BUFFER_EXTENSION */
+#ifdef USE_FAST_SQRT_HACKISH
+/* Based loosely on code from Wikipedia:
+ * https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Approximations_that_depend_on_IEEE_representation
+ */
+
+/* FAST_SQRT_EXTRA_BITS = 3: Smallest useful value
+ * = 5/6: A little bit of banding, wave_height table is on par with regular
+ * sqrt() code.
+ * = 7: No apparent difference with original @ radius = 800.
+ * = 8: One more just to be comfortable.
+ */
+
+# define FAST_SQRT_EXTRA_BITS 8
+
+union int_float
+{
+ uint32_t i;
+ float f;
+};
+
+static unsigned fast_log2(unsigned x)
+{
+ union int_float u;
+ if(!x)
+ return x;
+ u.f = x;
+ return ((u.i - 0x3f800000) >> (23 - FAST_SQRT_EXTRA_BITS)) + 1;
+}
+
+static float fast_inv_log2(unsigned x)
+{
+ union int_float u;
+ if(!x)
+ return 0.0f;
+ u.i = ((x - 1) << (23 - FAST_SQRT_EXTRA_BITS)) + 0x3f800000;
+ return u.f;
+}
+
+#endif
+
+#ifdef USE_FAST_SQRT_BIGTABLE2
+
+/* I eyeballed these figures. They could be improved. - D.O. */
+
+# define FAST_SQRT_DISCARD_BITS1 4
+/* = 5: Dot in center is almost invisible at radius = 800. */
+/* = 4: Dot in center looks OK at radius = 50. */
+
+/* 156/2740/9029 */
+/* # define FAST_SQRT_DISCARD_BITS2 8 */
+/* # define FAST_SQRT_CUTOFF 64 * 64 */
+
+/* 156/2242/5386 */
+# define FAST_SQRT_DISCARD_BITS2 9
+# define FAST_SQRT_CUTOFF 128 * 128
+
+/*
+ * This is a little faster:
+ * 44.5 FPS, 19/5000/17578
+ *
+ * # define FAST_SQRT_DISCARD_BITS1 7
+ * # define FAST_SQRT_DISCARD_BITS2 7
+ * # define FAST_SQRT_CUTOFF 0
+ *
+ * For radius = 800, FAST_SQRT_DISCARD_BITS2 =
+ * = 9/10: Approximately the original table size, some banding near origins.
+ * = 7: wave_height is 20 KB, and just fits inside a 32K L1 cache.
+ * = 6: Nearly indistinguishable from original
+ */
+
+/*
+ FAST_TABLE(x) is equivalent to, but slightly faster than:
+ x < FAST_SQRT_CUTOFF ?
+ (x >> FAST_SQRT_DISCARD_BITS1) :
+ ((x - FAST_SQRT_CUTOFF) >> FAST_SQRT_DISCARD_BITS2) +
+ (FAST_SQRT_CUTOFF >> FAST_SQRT_DISCARD_BITS1);
+*/
+
+#define FAST_TABLE(x) \
+ ((x) < FAST_SQRT_CUTOFF ? \
+ ((x) >> FAST_SQRT_DISCARD_BITS1) : \
+ (((x) + \
+ ((FAST_SQRT_CUTOFF << (FAST_SQRT_DISCARD_BITS2 - \
+ FAST_SQRT_DISCARD_BITS1)) - FAST_SQRT_CUTOFF)) >> \
+ FAST_SQRT_DISCARD_BITS2))
+
+static double fast_inv_table(unsigned x)
+{
+ return x < (FAST_SQRT_CUTOFF >> FAST_SQRT_DISCARD_BITS1) ?
+ (x << FAST_SQRT_DISCARD_BITS1) :
+ ((x - (FAST_SQRT_CUTOFF >> FAST_SQRT_DISCARD_BITS1)) <<
+ FAST_SQRT_DISCARD_BITS2) + FAST_SQRT_CUTOFF;
+}
+
+#endif
+
+/* Also destroys c->row. */
+static void destroy_image(Display* dpy, struct inter_context* c)
+{
+#ifdef USE_XIMAGE
+ if(c->ximage) {
+# ifdef HAVE_XSHM_EXTENSION
+ if(c->use_shm) {
+ destroy_xshm_image(dpy, c->ximage, &c->shm_info);
+ } else
+# endif
+ {
+ /* Also frees c->ximage->data, which isn't allocated by XCreateImage. */
+ XDestroyImage(c->ximage);
+ }
+ }
+
+ free(c->row);
+#endif
+}
+
+static void inter_free(Display* dpy, struct inter_context* c)
+{
+#ifndef USE_XIMAGE
+ unsigned i;
+#endif
+
+ if(c->pix_buf)
+ XFreePixmap(dpy, c->pix_buf);
+
+ if(c->copy_gc)
+ XFreeGC(dpy, c->copy_gc);
+
+ destroy_image(dpy, c);
+
+ if(c->colors <= 2)
+ free(c->pal);
+ else
+ free_colors(c->screen, c->cmap, c->pal, c->colors);
+
+#ifndef USE_XIMAGE
+ for(i = 0; i != c->colors; ++i)
+ XFreeGC(dpy, c->gcs[i]);
+ free(c->gcs);
+#endif
+
+ free(c->wave_height);
+ free(c->source);
+}
+
+static void abort_no_mem(void)
+{
+ fprintf(stderr, "interference: %s\n", strerror(ENOMEM));
+ exit(1);
+}
+
+static void check_no_mem(Display* dpy, struct inter_context* c, void* ptr)
+{
+ if(!ptr) {
+ inter_free(dpy, c);
+ abort_no_mem();
+ }
+}
+
+/* On allocation error, c->row == NULL. */
+static void create_image(
+ Display* dpy,
+ struct inter_context* c,
+ const XWindowAttributes* xgwa)
+{
+#ifdef USE_XIMAGE
+ c->row = malloc((c->w / c->grid_size) * sizeof(uint32_t));
+ check_no_mem(dpy, c, c->row);
+
+# ifdef HAVE_XSHM_EXTENSION
+ /*
+ * interference used to put one row at a time to the X server. This changes
+ * today.
+ *
+ * XShmPutImage is asynchronous; the contents of the XImage must not be
+ * modified until the server has placed the data on the screen. Waiting for
+ * an XShmCompletionEvent after every line of pixels is a little nutty, so
+ * shared-memory XImages will cover the entire screen, and it only has to be
+ * sent once per frame.
+ *
+ * The non-SHM code, on the other hand is noticeably slower when
+ * gridsize = 1 with one row at a time. If, on the other hand, gridsize >= 2,
+ * there's a slight speed increase with one row at a time.
+ *
+ * This uses a lot more RAM than the single line approach. Users with only
+ * 4 MB of RAM may wish to disable USE_BIG_XIMAGE and specify -no-shm on the
+ * command line. Since this is 2013 and desktop computers are shipping with
+ * 8 GB of RAM, I doubt that this will be a major issue. - D.O.
+ */
+
+ if (c->use_shm)
+ {
+ c->ximage = create_xshm_image(dpy, xgwa->visual, xgwa->depth,
+ ZPixmap, 0, &c->shm_info,
+ xgwa->width, xgwa->height);
+ if (!c->ximage)
+ c->use_shm = False;
+ /* If create_xshm_image fails, it will not be attempted again. */
+
+ c->shm_can_draw = True;
+ }
+# endif /* HAVE_XSHM_EXTENSION */
+
+ if (!c->ximage)
+ {
+ c->ximage =
+ XCreateImage(dpy, xgwa->visual,
+ xgwa->depth, ZPixmap, 0, 0, /* depth, fmt, offset, data */
+ xgwa->width, /* width */
+# ifdef USE_BIG_XIMAGE
+ xgwa->height, /* height */
+# else
+ c->grid_size, /* height */
+# endif
+ 8, 0); /* pad, bpl */
+
+ if(c->ximage)
+ {
+ c->ximage->data = (char *)
+ calloc(c->ximage->height, c->ximage->bytes_per_line);
+
+ if(!c->ximage->data)
+ {
+ free(c->ximage);
+ c->ximage = NULL;
+ }
+ }
+ }
+
+ if(!c->ximage)
+ {
+ free(c->row);
+ c->row = 0;
+ }
+
+ check_no_mem(dpy, c, c->row);
+#endif /* USE_XIMAGE */
+}
+
+static void create_pix_buf(Display* dpy, Window win, struct inter_context *c,
+ const XWindowAttributes* xgwa)
+{
+#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
+ if(c->back_buf)
+ return;
+#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
+ c->pix_buf = XCreatePixmap(dpy, win, xgwa->width, xgwa->height, xgwa->depth);
+}
+
+static double float_time(void)
+{
+ struct timeval result;
+ gettimeofday(
+ &result
+#ifdef GETTIMEOFDAY_TWO_ARGS
+ , NULL
+#endif
+ );
+
+ return result.tv_usec * 1.0e-6 + result.tv_sec;
+}
+
static void inter_init(Display* dpy, Window win, struct inter_context* c)
{
XWindowAttributes xgwa;
int i;
int mono;
int gray;
+ int radius;
XGCValues val;
- unsigned long valmask = 0;
Bool dbuf = get_boolean_resource (dpy, "doubleBuffer", "Boolean");
+#ifndef USE_XIMAGE
+ unsigned long valmask = 0;
+#endif
+
# ifdef HAVE_COCOA /* Don't second-guess Quartz's double-buffering */
dbuf = False;
# endif
c->delay = get_integer_resource(dpy, "delay", "Integer");
-
XGetWindowAttributes(c->dpy, c->win, &xgwa);
c->w = xgwa.width;
c->h = xgwa.height;
c->cmap = xgwa.colormap;
+ c->screen = xgwa.screen;
#ifdef HAVE_XSHM_EXTENSION
c->use_shm = get_boolean_resource(dpy, "useSHM", "Boolean");
#endif /* HAVE_XSHM_EXTENSION */
- if (dbuf)
- {
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
- c->back_buf = xdbe_get_backbuffer (c->dpy, c->win, XdbeUndefined);
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
-
-#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
- if (!c->back_buf)
-#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
- c->pix_buf = XCreatePixmap (dpy, win, xgwa.width, xgwa.height,
- xgwa.depth);
- }
-
val.function = GXcopy;
c->copy_gc = XCreateGC(c->dpy, TARGET(c), GCFunction, &val);
c->shift -= 360.0;
while(c->shift <= -360.0)
c->shift += 360.0;
- c->radius = get_integer_resource(dpy, "radius", "Integer");;
- if(c->radius < 1)
- c->radius = 1;
-
-#ifdef USE_XIMAGE
+ radius = get_integer_resource(dpy, "radius", "Integer");;
+ if(radius < 1)
+ radius = 1;
- c->ximage = 0;
-
-# ifdef HAVE_XSHM_EXTENSION
- if (c->use_shm)
- {
- c->ximage = create_xshm_image(dpy, xgwa.visual, xgwa.depth,
- ZPixmap, 0, &c->shm_info,
- xgwa.width, c->grid_size);
- if (!c->ximage)
- c->use_shm = False;
- }
-# endif /* HAVE_XSHM_EXTENSION */
-
- if (!c->ximage)
- {
- c->ximage =
- XCreateImage (dpy, xgwa.visual,
- xgwa.depth, ZPixmap, 0, 0, /* depth, fmt, offset, data */
- xgwa.width, c->grid_size, /* width, height */
- 8, 0); /* pad, bpl */
- c->ximage->data = (unsigned char *)
- calloc(c->ximage->height, c->ximage->bytes_per_line);
- }
-#endif /* USE_XIMAGE */
+ create_image(dpy, c, &xgwa);
if(!mono) {
c->pal = calloc(c->colors, sizeof(XColor));
+ check_no_mem(dpy, c, c->pal);
gray = get_boolean_resource(dpy, "gray", "Boolean");
if(!gray) {
V[0] = 1.0; V[1] = 0.5; V[2] = 0.0;
}
- make_color_loop(c->dpy, c->cmap,
+ make_color_loop(c->screen, xgwa.visual, c->cmap,
H[0], S[0], V[0],
H[1], S[1], V[1],
H[2], S[2], V[2],
if(mono) { /* DON'T else this with the previous if! */
c->colors = 2;
c->pal = calloc(2, sizeof(XColor));
+ check_no_mem(dpy, c, c->pal);
c->pal[0].pixel = BlackPixel(c->dpy, DefaultScreen(c->dpy));
c->pal[1].pixel = WhitePixel(c->dpy, DefaultScreen(c->dpy));
- }
+ }
+
+#ifdef HAVE_XSHM_EXTENSION
+ if(c->use_shm)
+ dbuf = False;
+ /* Double-buffering doesn't work with MIT-SHM: XShmPutImage must draw to the
+ * window. Otherwise, XShmCompletion events will have the XAnyEvent::window
+ * field set to the back buffer, and XScreenSaver will ignore the event. */
+#endif
+ if (dbuf)
+ {
+#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
+ c->back_buf = xdbe_get_backbuffer (c->dpy, c->win, XdbeUndefined);
+#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
+
+ create_pix_buf(dpy, win, c, &xgwa);
+ }
+
+#ifndef USE_XIMAGE
valmask = GCForeground;
c->gcs = calloc(c->colors, sizeof(GC));
+ check_no_mem(dpy, c, c->gcs);
for(i = 0; i < c->colors; i++) {
val.foreground = c->pal[i].pixel;
c->gcs[i] = XCreateGC(c->dpy, TARGET(c), valmask, &val);
}
+#endif
+
+#if defined USE_FAST_SQRT_HACKISH
+ c->radius = fast_log2(radius * radius);
+#elif defined USE_FAST_SQRT_BIGTABLE2
+ c->radius = radius * radius;
+ c->radius = FAST_TABLE(c->radius);
+#else
+ c->radius = radius;
+#endif
+
+ c->wave_height = calloc(c->radius, sizeof(unsigned));
+ check_no_mem(dpy, c, c->wave_height);
- c->wave_height = calloc(c->radius, sizeof(int));
for(i = 0; i < c->radius; i++) {
- float max =
+ float max, fi;
+#if defined USE_FAST_SQRT_HACKISH
+ fi = sqrt(fast_inv_log2(i));
+#elif defined USE_FAST_SQRT_BIGTABLE2
+ fi = sqrt(fast_inv_table(i));
+#else
+ fi = i;
+#endif
+ max =
((float)c->colors) *
- ((float)c->radius - (float)i) /
- ((float)c->radius);
+ ((float)radius - fi) /
+ ((float)radius);
c->wave_height[i] =
- (int)
- ((max + max*cos((double)i/50.0)) / 2.0);
+ (unsigned)
+ ((max + max*cos(fi/50.0)) / 2.0);
}
c->source = calloc(c->count, sizeof(struct inter_source));
+ check_no_mem(dpy, c, c->source);
+
for(i = 0; i < c->count; i++) {
c->source[i].x_theta = frand(2.0)*3.14159;
c->source[i].y_theta = frand(2.0)*3.14159;
}
+ c->last_frame = float_time();
}
#define source_x(c, i) \
(c->h/2 + ((int)(cos(c->source[i].y_theta)*((float)c->h/2.0))))
/*
- * this is rather suboptimal. the sqrt() doesn't seem to be a big
- * performance hit, but all those separate XFillRectangle()'s are.
- * hell, it's just a quick hack anyway -- if someone wishes to tune
- * it, go ahead!
+ * This is rather suboptimal. Calculating the distance per-pixel is going to
+ * be a lot slower than using now-ubiquitous SIMD CPU instructions to do four
+ * or eight pixels at a time. Plus, this could be almost trivially
+ * parallelized, what with all the multi-core hardware nowadays.
*/
-static void do_inter(struct inter_context* c)
+static unsigned long do_inter(struct inter_context* c)
{
int i, j, k;
- int result;
+ unsigned result;
int dist;
- int g;
+ int g = c->grid_size;
+ unsigned w_div_g = c->w/g;
int dx, dy;
+ int px, py;
+
+#ifdef USE_XIMAGE
+ unsigned img_y = 0;
+ void *scanline = c->ximage->data;
+#endif
+
+ double now;
+ float elapsed;
+
+#if defined USE_XIMAGE && defined HAVE_XSHM_EXTENSION
+ /* Wait a little while for the XServer to become ready if necessary. */
+ if(c->use_shm && !c->shm_can_draw)
+ return 2000;
+#endif
+
+ now = float_time();
+ elapsed = (now - c->last_frame) * 10.0;
+
+ c->last_frame = now;
for(i = 0; i < c->count; i++) {
- c->source[i].x_theta += (c->speed/1000.0);
+ c->source[i].x_theta += (elapsed*c->speed/1000.0);
if(c->source[i].x_theta > 2.0*3.14159)
c->source[i].x_theta -= 2.0*3.14159;
- c->source[i].y_theta += (c->speed/1000.0);
+ c->source[i].y_theta += (elapsed*c->speed/1000.0);
if(c->source[i].y_theta > 2.0*3.14159)
c->source[i].y_theta -= 2.0*3.14159;
c->source[i].x = source_x(c, i);
c->source[i].y = source_y(c, i);
}
- g = c->grid_size;
-
for(j = 0; j < c->h/g; j++) {
- for(i = 0; i < c->w/g; i++) {
+ for(i = 0; i < w_div_g; i++) {
result = 0;
+ px = i*g + g/2;
+ py = j*g + g/2;
for(k = 0; k < c->count; k++) {
- dx = i*g + g/2 - c->source[k].x;
- dy = j*g + g/2 - c->source[k].y;
- dist = sqrt(dx*dx + dy*dy); /* what's the performance penalty here? */
- result += (dist >= c->radius ? 0 : c->wave_height[dist]);
+
+ dx = px - c->source[k].x;
+ dy = py - c->source[k].y;
+
+ /*
+ * Other possibilities for improving performance here:
+ * 1. Using octagon-based distance estimation
+ * (Which causes giant octagons to appear.)
+ * 2. Square root approximation by reinterpret-casting IEEE floats to
+ * integers.
+ * (Which causes angles to appear when two waves interfere.)
+ */
+
+/* int_float u;
+ u.f = dx*dx + dy*dy;
+ u.i = (1 << 29) + (u.i >> 1) - (1 << 22);
+ dist = u.f; */
+
+#if defined USE_FAST_SQRT_BIGTABLE2
+ dist = dx*dx + dy*dy;
+ dist = FAST_TABLE(dist);
+#elif defined USE_FAST_SQRT_HACKISH
+ dist = fast_log2(dx*dx + dy*dy);
+#else
+ dist = sqrt(dx*dx + dy*dy);
+#endif
+
+ result += (dist >= c->radius ? 0 : c->wave_height[dist]);
}
- result %= c->colors;
-#ifdef USE_XIMAGE
- /* Fill in these `gridsize' horizontal bits in the scanline */
- for(k = 0; k < g; k++)
- XPutPixel(c->ximage, (g*i)+k, 0, c->pal[result].pixel);
+ /* It's slightly faster to do a subtraction or two before calculating the
+ * modulus. - D.O. */
+ if(result >= c->colors)
+ {
+ result -= c->colors;
+ if(result >= c->colors)
+ result %= (unsigned)c->colors;
+ }
-#else /* !USE_XIMAGE */
- XFillRectangle(c->dpy, TARGET(c), c->gcs[result], g*i, g*j, g, g);
-#endif /* !USE_XIMAGE */
+#ifdef USE_XIMAGE
+ c->row[i] = c->pal[result].pixel;
+#else
+ XFillRectangle(c->dpy, TARGET(c), c->gcs[result], g*i, g*j, g, g);
+#endif /* USE_XIMAGE */
}
#ifdef USE_XIMAGE
+ /* Fill in these `gridsize' horizontal bits in the scanline */
+ if(c->ximage->bits_per_pixel == 32)
+ {
+ uint32_t *ptr = (uint32_t *)scanline;
+ for(i = 0; i < w_div_g; i++) {
+ for(k = 0; k < g; k++)
+ ptr[g*i+k] = c->row[i];
+ }
+ }
+ else if(c->ximage->bits_per_pixel == 24)
+ {
+ uint8_t *ptr = (uint8_t *)scanline;
+ for(i = 0; i < w_div_g; i++) {
+ for(k = 0; k < g; k++) {
+ uint32_t pixel = c->row[i];
+ /* Might not work on big-endian. */
+ ptr[0] = pixel;
+ ptr[1] = (pixel & 0x0000ff00) >> 8;
+ ptr[2] = (pixel & 0x00ff0000) >> 16;
+ ptr += 3;
+ }
+ }
+ }
+ else if(c->ximage->bits_per_pixel == 16)
+ {
+ uint16_t *ptr = (uint16_t *)scanline;
+ for(i = 0; i < w_div_g; i++) {
+ for(k = 0; k < g; k++)
+ ptr[g*i+k] = c->row[i];
+ }
+ }
+ else if(c->ximage->bits_per_pixel == 8)
+ {
+ uint8_t *ptr = (uint8_t *)scanline;
+ for(i = 0; i < w_div_g; i++) {
+ for(k = 0; k < g; k++)
+ ptr[g*i+k] = c->row[i];
+ }
+ }
+ else
+ {
+ for(i = 0; i < w_div_g; i++) {
+ for(k = 0; k < g; k++)
+ XPutPixel(c->ximage, (g*i)+k, img_y, c->row[i]);
+ }
+ }
/* Only the first scanline of the image has been filled in; clone that
scanline to the rest of the `gridsize' lines in the ximage */
for(k = 0; k < (g-1); k++)
- memcpy(c->ximage->data + (c->ximage->bytes_per_line * (k + 1)),
- c->ximage->data + (c->ximage->bytes_per_line * k),
- c->ximage->bytes_per_line);
+ memcpy(c->ximage->data + (c->ximage->bytes_per_line * (img_y + k + 1)),
+ c->ximage->data + (c->ximage->bytes_per_line * img_y),
+ c->ximage->bytes_per_line);
+# ifndef USE_BIG_XIMAGE
/* Move the bits for this horizontal stripe to the server. */
-# ifdef HAVE_XSHM_EXTENSION
- if (c->use_shm)
- XShmPutImage(c->dpy, TARGET(c), c->copy_gc, c->ximage,
- 0, 0, 0, g*j, c->ximage->width, c->ximage->height,
- False);
- else
-# endif /* HAVE_XSHM_EXTENSION */
+# ifdef HAVE_XSHM_EXTENSION
+ if (!c->use_shm)
+# endif /* HAVE_XSHM_EXTENSION */
XPutImage(c->dpy, TARGET(c), c->copy_gc, c->ximage,
- 0, 0, 0, g*j, c->ximage->width, c->ximage->height);
+ 0, 0, 0, g*j, c->ximage->width, c->ximage->height);
+# endif
+
+# if defined HAVE_XSHM_EXTENSION && !defined USE_BIG_XIMAGE
+ if (c->use_shm)
+# endif
+ {
+# if defined HAVE_XSHM_EXTENSION || defined USE_BIG_XIMAGE
+ scanline = (char *)scanline + c->ximage->bytes_per_line * g;
+ img_y += g;
+# endif
+ }
#endif /* USE_XIMAGE */
}
+#ifdef HAVE_XSHM_EXTENSION
+ if (c->use_shm)
+ {
+ XShmPutImage(c->dpy, c->win, c->copy_gc, c->ximage,
+ 0, 0, 0, 0, c->ximage->width, c->ximage->height,
+ True);
+ c->shm_can_draw = False;
+ }
+#endif
+#if defined HAVE_XSHM_EXTENSION && defined USE_BIG_XIMAGE
+ else
+#endif
+#ifdef USE_BIG_XIMAGE
+ {
+ XPutImage(c->dpy, TARGET(c), c->copy_gc, c->ximage,
+ 0, 0, 0, 0, c->ximage->width, c->ximage->height);
+ }
+#endif
+
#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
if (c->back_buf)
{
XCopyArea (c->dpy, c->pix_buf, c->win, c->copy_gc,
0, 0, c->w, c->h, 0, 0);
}
+
+ return c->delay;
}
static void *
interference_init (Display *dpy, Window win)
{
struct inter_context *c = (struct inter_context *) calloc (1, sizeof(*c));
+ if(!c)
+ abort_no_mem();
inter_init(dpy, win, c);
return c;
}
interference_draw (Display *dpy, Window win, void *closure)
{
struct inter_context *c = (struct inter_context *) closure;
- do_inter(c);
- return c->delay;
+ return do_inter(c);
}
static void
unsigned int w, unsigned int h)
{
struct inter_context *c = (struct inter_context *) closure;
+ XWindowAttributes xgwa;
+ Bool dbuf = (c->pix_buf
+# ifdef HAVE_DOUBLE_BUFFER_EXTENSION
+ || c->back_buf
+# endif
+ );
+
c->w = w;
c->h = h;
+
+#ifdef USE_XIMAGE
+ destroy_image(dpy, c);
+ c->ximage = 0;
+#endif
+
+ if(c->pix_buf)
+ XFreePixmap(dpy, c->pix_buf);
+ c->pix_buf = None;
+
+ XGetWindowAttributes(dpy, window, &xgwa);
+ xgwa.width = w;
+ xgwa.height = h;
+ create_image(dpy, c, &xgwa);
+ if(dbuf)
+ create_pix_buf(dpy, window, c, &xgwa);
}
static Bool
interference_event (Display *dpy, Window window, void *closure, XEvent *event)
{
+#if HAVE_XSHM_EXTENSION
+ struct inter_context *c = (struct inter_context *) closure;
+
+ if(c->use_shm && event->type == XShmGetEventBase(dpy) + ShmCompletion)
+ {
+ c->shm_can_draw = True;
+ return True;
+ }
+#endif
return False;
}
static void
interference_free (Display *dpy, Window window, void *closure)
{
+ struct inter_context *c = (struct inter_context *) closure;
+ inter_free(dpy, c);
}
XSCREENSAVER_MODULE ("Interference", interference)
+
bgs = fgs;
bgv = fgv / 10.0;
#endif
- make_color_ramp (st->dpy, st->xgwa.colormap,
+ make_color_ramp (st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
bgh, bgs, bgv,
fgh, fgs, fgv,
st->colors, &st->ncolors,
"*maxRiders: 40",
"*maxRadius: 100",
"*colors: 256",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
*/
#ifdef STANDALONE
-# define DEFAULTS "*count: 1000 \n" \
- "*cycles: 20 \n" \
- "*delay: 10000 \n" \
- "*ncolors: 200 \n" \
- "*fpsSolid: true \n" \
+# define DEFAULTS "*count: 1000 \n" \
+ "*cycles: 20 \n" \
+ "*delay: 10000 \n" \
+ "*ncolors: 200 \n" \
+ "*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
# define UNIFORM_COLORS
# include "xlockmore.h" /* in xscreensaver distribution */
"*greenrange: 20000",
"*bluemin: 30000",
"*bluerange: 20000",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*random: True",
/* leave this off by default, since it slows things down. -- jwz. */
"*useDBE: False",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*size: -12 \n" \
"*ncolors: 15 \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
# define UNIFORM_COLORS
# define loop_handle_event 0
st->stop = 0;
st->state = 1;
+ if (st->solve_state && st->solve_state->running)
+ st->solve_state->running = 0;
+
st->sync_p = ((random() % 4) != 0);
size = get_integer_resource (st->dpy, "gridSize", "Dimension");
{
int ncolors = 255;
XColor colors[256];
- make_random_colormap (st->dpy, st->xgwa.visual, st->xgwa.colormap,
+ make_random_colormap (st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
colors, &ncolors, True, True, 0, False);
}
"*delay: 10000",
"*radius: 100",
"*delta: 3",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
-/* xscreensaver, Copyright (c) 1997-2008 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1997-2013 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
st->colors = (XColor *) malloc (sizeof (XColor) * (st->ncolors+2));
memset(st->colors, 0, (sizeof (XColor) * (st->ncolors+2)));
- make_color_ramp (st->dpy, xgwa.colormap,
+ make_color_ramp (xgwa.screen, xgwa.visual, xgwa.colormap,
fgh, fgs, fgv, bgh, bgs, bgv,
st->colors, &st->ncolors,
True, True, False);
"*useSHM: True",
#else
"*useSHM: False",
+#endif
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
#endif
0
};
-/* xscreensaver, Copyright (c) 1997, 1998, 2006 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1997-2013 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
if (mono_p)
;
else
- make_smooth_colormap (st->dpy, xgwa.visual, xgwa.colormap, st->colors, &st->ncolors,
+ make_smooth_colormap (xgwa.screen, xgwa.visual, xgwa.colormap,
+ st->colors, &st->ncolors,
True, 0, True);
st->bg_pixel = get_pixel_resource(st->dpy,
"*thickness: 0",
"*colors: 150",
"*colorShift: 5",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
/* Off by default, since it slows it down a lot, and the flicker isn't really
"*simul: 5",
"*clear: 65",
"*xor: True",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
colors[0].pixel = get_pixel_resource (st->dpy, xgwa->colormap,
"background", "Background");
- make_color_ramp (st->dpy, xgwa->colormap, h1, s1, v1, h2, s2, v2,
+ make_color_ramp (xgwa->screen, xgwa->visual, xgwa->colormap,
+ h1, s1, v1, h2, s2, v2,
colors + 1, &st->colorCount, False, True, False);
if (st->colorCount < 1)
"*maxRadius: 25",
"*maxNerveRadius: 0.7",
"*nervousness: 0.3",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
reshape_pacman(ModeInfo * mi, int width, int height)
{
pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
- pp->width = width;
+ pp->width = width;
pp->height = height;
+ pp->xb = (pp->width - pp->ncols * pp->xs) >> 1;
+ pp->yb = (pp->height - pp->nrows * pp->ys) >> 1;
MI_CLEARWINDOW (mi);
/* repopulate (mi); */
drawlevel (mi);
{
int ret = False;
int i;
- for (i = 0; i <= NUM_BONUS_DOTS; i++) {
+ for (i = 0; i < NUM_BONUS_DOTS; i++) {
/* fprintf(stderr,"is bonus: passed x (%d, %d) bonus (%d, %d)\n",x,y,bonus_dots[i].x, bonus_dots[i].y); */
if (x == pp->bonus_dots[i].x && y == pp->bonus_dots[i].y) {
ret = True;
static void
check_bonus_idx (int idx)
{
- assert (0 <= idx && idx <= NUM_BONUS_DOTS);
+ assert (0 <= idx && idx < NUM_BONUS_DOTS);
}
int
"*fpsSolid: true",
"*delay: 5",
"*maxlines: 1000",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*size: 40 \n" \
"*ncolors: 64 \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
# define refresh_penrose 0
# define penrose_handle_event 0
colors[0].pixel = get_pixel_resource (st->dpy, xgwa->colormap,
"background", "Background");
- make_random_colormap (st->dpy, xgwa->visual, xgwa->colormap,
+ make_random_colormap (xgwa->screen, xgwa->visual, xgwa->colormap,
colors+1, &ncolors, True, True, 0, True);
if (ncolors < 1)
{
"*originalcolors: false",
"*memThrottle: 22M", /* don't malloc more than this much.
Scale the pixels up if necessary. */
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
-/* xscreensaver, Copyright (c) 1999-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1999-2013 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
/* Now allocate a ramp of colors from the main color to the background. */
rgb_to_hsv (start.red, start.green, start.blue, &h1, &s1, &v1);
rgb_to_hsv (end.red, end.green, end.blue, &h2, &s2, &v2);
- make_color_ramp (state->dpy, state->xgwa.colormap,
+ make_color_ramp (state->xgwa.screen, state->xgwa.visual,
+ state->xgwa.colormap,
h1, s1, v1,
h2, s2, v2,
colors, &ncolors,
st->colors[0].pixel = get_pixel_resource(st->dpy, st->xgwa.colormap, "foreground", "Foreground");
}
else {
- make_color_loop(st->dpy, st->xgwa.colormap, 0, 1, 1, 120, 1, 1, 240, 1, 1, st->colors, &st->ncolors, True, False);
+ make_color_loop(st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
+ 0, 1, 1, 120, 1, 1, 240, 1, 1,
+ st->colors, &st->ncolors, True, False);
if (st->ncolors < 2)
goto MONO;
}
#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
"*useDBE: True",
#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
static Bool identical;
static Bool plain;
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
static XrmOptionDescRec opts[] =
{
{"-identical", ".polyominoes.identical", XrmoptionNoArg, "on"},
int x,y,n;
char *data;
- for (n=0;n<256;n++) {
+ for (n=0;n<countof(sp->bitmaps);n++) {
/* Avoid duplication of identical bitmaps. */
if (IS_LEFT_UP(n) && (IS_LEFT(n) || IS_UP(n)))
{
int n;
- for (n=0;n<256;n++)
+ for (n=0;n<countof(sp->bitmaps);n++)
/* Don't bother to free duplicates */
if (IS_LEFT_UP(n) && (IS_LEFT(n) || IS_UP(n)))
sp->bitmaps[n] = None;
int i,j,t,u;
j=0;
- for (i=0;i<18;i++) {
+ for (i=0;i<countof(pentomino);i++) {
one_sided_pentomino[j] = pentomino[i];
for (t=0;t<8;t++)
if (one_sided_pentomino[j].transform_list[t]>=4) {
int i,j,t,u;
j=0;
- for (i=0;i<35;i++) {
+ for (i=0;i<countof(hexomino);i++) {
one_sided_hexomino[j] = hexomino[i];
for (t=0;t<8;t++)
if (one_sided_hexomino[j].transform_list[t]>=4) {
}
sp->nr_polyominoes = 12;
- set_allocate(sp->polyomino,polyomino_type,12*sizeof(polyomino_type));
- random_permutation(12,perm_poly);
- for (p=0;p<12;p++) {
+ set_allocate(sp->polyomino,polyomino_type,
+ sp->nr_polyominoes*sizeof(polyomino_type));
+ random_permutation(sp->nr_polyominoes,perm_poly);
+ for (p=0;p<sp->nr_polyominoes;p++) {
copy_polyomino(sp->polyomino[p],pentomino[perm_poly[p]],1);
}
}
sp->nr_polyominoes = 18;
- set_allocate(sp->polyomino,polyomino_type,18*sizeof(polyomino_type));
- random_permutation(18,perm_poly);
- for (p=0;p<18;p++) {
+ set_allocate(sp->polyomino,polyomino_type,
+ sp->nr_polyominoes*sizeof(polyomino_type));
+ random_permutation(sp->nr_polyominoes,perm_poly);
+ for (p=0;p<sp->nr_polyominoes;p++) {
copy_polyomino(sp->polyomino[p],one_sided_pentomino[perm_poly[p]],1);
}
}
sp->nr_polyominoes = 60;
- set_allocate(sp->polyomino,polyomino_type,60*sizeof(polyomino_type));
- random_permutation(60,perm_poly);
- for (p=0;p<60;p++) {
+ set_allocate(sp->polyomino,polyomino_type,
+ sp->nr_polyominoes*sizeof(polyomino_type));
+ random_permutation(sp->nr_polyominoes,perm_poly);
+ for (p=0;p<sp->nr_polyominoes;p++) {
copy_polyomino(sp->polyomino[p],one_sided_hexomino[perm_poly[p]],1);
}
}
sp->nr_polyominoes = 17;
- set_allocate(sp->polyomino,polyomino_type,17*sizeof(polyomino_type));
- random_permutation(17,perm_poly);
- for (p=0;p<5;p++) {
+ set_allocate(sp->polyomino,polyomino_type,
+ sp->nr_polyominoes*sizeof(polyomino_type));
+ random_permutation(sp->nr_polyominoes,perm_poly);
+ for (p=0;p<countof(tetromino);p++) {
copy_polyomino(sp->polyomino[perm_poly[p]],tetromino[p],1);
}
- for (p=0;p<12;p++) {
+ for (p=0;p<countof(pentomino);p++) {
copy_polyomino(sp->polyomino[perm_poly[p+5]],pentomino[p],1);
}
sp->nr_polyominoes = 47;
set_allocate(sp->polyomino,polyomino_type,47*sizeof(polyomino_type));
random_permutation(47,perm_poly);
- for (p=0;p<12;p++) {
+ for (p=0;p<countof(pentomino);p++) {
copy_polyomino(sp->polyomino[perm_poly[p]],pentomino[p],1);
}
- for (p=0;p<35;p++) {
+ for (p=0;p<countof(hexomino);p++) {
copy_polyomino(sp->polyomino[perm_poly[p+12]],hexomino[p],1);
}
sp->height =5;
sp->nr_polyominoes = 10;
- set_allocate(sp->polyomino,polyomino_type,10*sizeof(polyomino_type));
- for (p=0;p<10;p++) {
+ set_allocate(sp->polyomino,polyomino_type,
+ sp->nr_polyominoes*sizeof(polyomino_type));
+ for (p=0;p<sp->nr_polyominoes;p++) {
copy_polyomino(sp->polyomino[p],pentomino1,1);
}
sp->height =23;
sp->nr_polyominoes = 92;
- set_allocate(sp->polyomino,polyomino_type,92*sizeof(polyomino_type));
- for (p=0;p<92;p++) {
+ set_allocate(sp->polyomino,polyomino_type,
+ sp->nr_polyominoes*sizeof(polyomino_type));
+ for (p=0;p<sp->nr_polyominoes;p++) {
copy_polyomino(sp->polyomino[p],hexomino1,1);
}
sp->height =21;
sp->nr_polyominoes = 78;
- set_allocate(sp->polyomino,polyomino_type,78*sizeof(polyomino_type));
- for (p=0;p<78;p+=2) {
+ set_allocate(sp->polyomino,polyomino_type,
+ sp->nr_polyominoes*sizeof(polyomino_type));
+ for (p=0;p<sp->nr_polyominoes;p+=2) {
copy_polyomino(sp->polyomino[p],heptomino1,1);
copy_polyomino(sp->polyomino[p+1],heptomino1,0);
}
sp->height =19;
sp->nr_polyominoes = 76;
- set_allocate(sp->polyomino,polyomino_type,76*sizeof(polyomino_type));
- for (p=0;p<76;p++) {
+ set_allocate(sp->polyomino,polyomino_type,
+ sp->nr_polyominoes*sizeof(polyomino_type));
+ for (p=0;p<sp->nr_polyominoes;p++) {
copy_polyomino(sp->polyomino[p],heptomino1,1);
}
sp->height =22;
sp->nr_polyominoes = 50;
- set_allocate(sp->polyomino,polyomino_type,50*sizeof(polyomino_type));
- for (p=0;p<50;p+=2) {
+ set_allocate(sp->polyomino,polyomino_type,
+ sp->nr_polyominoes*sizeof(polyomino_type));
+ for (p=0;p<sp->nr_polyominoes;p+=2) {
copy_polyomino(sp->polyomino[p],elevenomino1,1);
copy_polyomino(sp->polyomino[p+1],elevenomino1,0);
}
sp->height =30;
sp->nr_polyominoes = 96;
- set_allocate(sp->polyomino,polyomino_type,96*sizeof(polyomino_type));
- for (p=0;p<96;p++) {
+ set_allocate(sp->polyomino,polyomino_type,
+ sp->nr_polyominoes*sizeof(polyomino_type));
+ for (p=0;p<sp->nr_polyominoes;p++) {
copy_polyomino(sp->polyomino[p],dekomino1,1);
}
sp->height =26;
sp->nr_polyominoes = 312;
- set_allocate(sp->polyomino,polyomino_type,312*sizeof(polyomino_type));
- for (p=0;p<312;p++) {
+ set_allocate(sp->polyomino,polyomino_type,
+ sp->nr_polyominoes*sizeof(polyomino_type));
+ for (p=0;p<sp->nr_polyominoes;p++) {
copy_polyomino(sp->polyomino[p],octomino1,1);
}
sp->height =15;
sp->nr_polyominoes = 45;
- set_allocate(sp->polyomino,polyomino_type,45*sizeof(polyomino_type));
- for (p=0;p<45;p++) {
+ set_allocate(sp->polyomino,polyomino_type,
+ sp->nr_polyominoes*sizeof(polyomino_type));
+ for (p=0;p<sp->nr_polyominoes;p++) {
copy_polyomino(sp->polyomino[p],pentomino1,1);
}
sp->height =33;
sp->nr_polyominoes = 141;
- set_allocate(sp->polyomino,polyomino_type,141*sizeof(polyomino_type));
- for (p=0;p<141;p++) {
+ set_allocate(sp->polyomino,polyomino_type,
+ sp->nr_polyominoes*sizeof(polyomino_type));
+ for (p=0;p<sp->nr_polyominoes;p++) {
copy_polyomino(sp->polyomino[p],elevenomino1,1);
}
rgb_to_hsv (fg.red, fg.green, fg.blue, &h1, &s1, &v1);
rgb_to_hsv (bg.red, bg.green, bg.blue, &h2, &s2, &v2);
- make_color_ramp (st->dpy, st->xgwa.colormap,
+ make_color_ramp (st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap,
h1, s1, v1,
h2, s2, v2,
st->colors, &st->ncolors, /* would this be considered a value-result argument? */
"*useDBE: True",
"*useDBEClear: True",
#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*transparent:true",
"*gravity: false",
"*additive: true",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
-/* xscreensaver, Copyright (c) 1992-2008 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-2013 Jamie Zawinski <jwz@jwz.org>
*
* reaction/diffusion textures
* Copyright (c) 1997 Scott Draves spot@transmeta.com
"*useSHM: True",
#else
"*useSHM: False",
+#endif
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
#endif
0
};
random_colors(struct state *st)
{
memset(st->colors, 0, st->ncolors*sizeof(*st->colors));
- make_smooth_colormap (st->dpy, st->visual, st->cmap, st->colors, &st->ncolors,
+ make_smooth_colormap (st->xgwa.screen, st->visual, st->cmap,
+ st->colors, &st->ncolors,
True, 0, True);
if (st->ncolors <= 2) {
mono_p = True;
XImage *orig_map, *buffer_map;
int ctab[256];
Colormap colormap;
+ Screen *screen;
int ncolors;
int light;
XGetWindowAttributes(st->dpy, st->window, &xgwa);
depth = xgwa.depth;
st->colormap = xgwa.colormap;
+ st->screen = xgwa.screen;
st->bigwidth = xgwa.width;
st->bigheight = xgwa.height;
st->visual = xgwa.visual;
if (!mono_p) {
colors = (XColor *)malloc(sizeof(*colors) * (st->ncolors+1));
- make_smooth_colormap(st->dpy, st->visual, st->colormap, colors, &st->ncolors,
+ make_smooth_colormap(st->screen, st->visual, st->colormap,
+ colors, &st->ncolors,
True, /* allocate */
False, /* not writable */
True); /* verbose (complain about failure) */
"*useSHM: True",
#else
"*useSHM: False",
+#endif
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
#endif
0
};
-/* xscreensaver, Copyright (c) 1992-2008 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-2013 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
XQueryColor(st->dpy, cmap, &st->colors[0]);
st->ncolors--;
- make_random_colormap(st->dpy, xgwa.visual, cmap, st->colors+1, &st->ncolors, True,
+ make_random_colormap(xgwa.screen, xgwa.visual, cmap,
+ st->colors+1, &st->ncolors, True,
True, 0, True);
st->ncolors++;
"*left3d: Blue",
"*right3d: Red",
"*delta3d: 1.5",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*iterations: 4000",
"*offset: 7",
"*delay: 5",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*numboxes: 2",
"*delay: 10000",
"*duration: 120",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
-/* xscreensaver, Copyright (c) 1992-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-2013 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
{
char *v = (char *) strdup(strchr(screensaver_id, ' '));
char *s1, *s2, *s3, *s4;
+ const char *ot = get_string_resource (dpy, "title", "Title");
s1 = (char *) strchr(v, ' '); s1++;
s2 = (char *) strchr(s1, ' ');
s3 = (char *) strchr(v, '('); s3++;
s4 = (char *) strchr(s3, ')');
*s2 = 0;
*s4 = 0;
- sprintf (version, "%s: from the XScreenSaver %s distribution (%s.)",
+ if (ot && !*ot) ot = 0;
+ sprintf (version, "%.50s%s%s: from the XScreenSaver %s distribution (%s)",
+ (ot ? ot : ""),
+ (ot ? ": " : ""),
progclass, s1, s3);
free(v);
}
"*cycles: 10",
"*ncolors: 64", /* changing this doesn't work particularly well */
"*delay: 10000",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*cycles: 100 \n" \
"*ncolors: 64 \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
# define BRIGHT_COLORS
# define sierpinski_handle_event 0
"*delay: 50000",
"*delay2: 1000000",
"*duration: 120",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*count: 35 \n" \
"*cycles: 50 \n" \
"*ncolors: 200 \n" \
- "*fpsSolid: true \n"
+ "*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
# define refresh_slip 0
# define slip_handle_event 0
Pixmap dbuf, stars_mask;
Colormap cmap;
+ Visual *visual;
+ Screen *screen;
unsigned int default_fg_pixel;
GC draw_gc, erase_gc, tunnelend_gc, stars_gc, stars_erase_gc;
h1 = h2 = RAND(360);
}
- make_color_ramp (st->dpy, st->cmap,
+ make_color_ramp (st->screen, st->visual, st->cmap,
h1, s1, v1, h2, s2, v2,
colors, ncolors, False, True, False);
double s1, s2;
if (st->psychedelic_flag) {
- free_colors (st->dpy, st->cmap, st->bonus_colors, st->nr_bonus_colors);
- free_colors (st->dpy, st->cmap, st->wall_colors, st->nr_wall_colors);
- free_colors (st->dpy, st->cmap, st->ground_colors, st->nr_ground_colors);
+ free_colors (st->screen, st->cmap, st->bonus_colors, st->nr_bonus_colors);
+ free_colors (st->screen, st->cmap, st->wall_colors, st->nr_wall_colors);
+ free_colors (st->screen, st->cmap, st->ground_colors, st->nr_ground_colors);
s1 = 0.4; s2 = 0.9;
st->ncolors = MAX_COLORS;
&st->ncolors, 0.0, 0.8, 0.0, 0.9);
st->nr_ground_colors = st->ncolors;
} else {
- free_colors (st->dpy, st->cmap, st->bonus_colors, st->nr_bonus_colors);
- free_colors (st->dpy, st->cmap, st->wall_colors, st->nr_wall_colors);
+ free_colors (st->screen, st->cmap, st->bonus_colors, st->nr_bonus_colors);
+ free_colors (st->screen, st->cmap, st->wall_colors, st->nr_wall_colors);
st->ncolors = st->nr_ground_colors;
s1 = 0.0; s2 = 0.6;
rgb_to_hsv (dark.red, dark.green, dark.blue, &h1, &s1, &v1);
rgb_to_hsv (light.red, light.green, light.blue, &h2, &s2, &v2);
- make_color_ramp (st->dpy, st->cmap, h1, s1, v1, h2, s2, v2,
+ make_color_ramp (st->screen, st->visual, st->cmap,
+ h1, s1, v1, h2, s2, v2,
st->ground_colors, &st->ncolors, False, True, False);
st->nr_ground_colors = st->ncolors;
XGetWindowAttributes (st->dpy, st->window, &xgwa);
st->cmap = xgwa.colormap;
+ st->visual = xgwa.visual;
+ st->screen = xgwa.screen;
st->width = xgwa.width;
st->height = xgwa.height;
"*delay: 10000",
"*duration: 120",
"*radius: 125",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
st->erase_gc = XCreateGC (st->dpy, st->window, GCForeground, &gcv);
cmap = xgwa.colormap;
if( st->ncolors ) {
- free_colors(st->dpy, cmap, st->colors, st->ncolors);
+ free_colors(xgwa.screen, cmap, st->colors, st->ncolors);
st->ncolors = 0;
}
if( mono_p ) {
st->ncolors = get_integer_resource(st->dpy, "ncolors", "Integer");
if (st->ncolors < 0 || st->ncolors > NCOLORSMAX)
st->ncolors = NCOLORSMAX;
- make_uniform_colormap(st->dpy, xgwa.visual, cmap, st->colors, &st->ncolors, True,
+ make_uniform_colormap(xgwa.screen, xgwa.visual, cmap,
+ st->colors, &st->ncolors, True,
&writeable, False);
if (st->ncolors <= 0) {
st->ncolors = 1;
"*disorder: 0.005",
"*cycle: False",
"*handedness: 0.5",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
-/* xscreensaver, Copyright (c) 1997-2008 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1997-2013 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
if (st->done_once)
{
if (st->colors && st->ncolors)
- free_colors (st->dpy, st->cmap, st->colors, st->ncolors);
+ free_colors (xgwa.screen, st->cmap, st->colors, st->ncolors);
if (st->colors)
free (st->colors);
st->colors = 0;
if (mono_p)
;
else if (random() % 3)
- make_smooth_colormap (st->dpy, xgwa.visual, st->cmap, st->colors, &st->ncolors,
+ make_smooth_colormap (xgwa.screen, xgwa.visual, st->cmap,
+ st->colors, &st->ncolors,
True, 0, True);
else
- make_uniform_colormap (st->dpy, xgwa.visual, st->cmap, st->colors, &st->ncolors,
+ make_uniform_colormap (xgwa.screen, xgwa.visual, st->cmap,
+ st->colors, &st->ncolors,
True, 0, True);
if (st->ncolors < 2) st->ncolors = 2;
"*duration: 30",
"*delay2: 5",
"*mode: random",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
# define MODE_strange
# define DEFAULTS "*delay: 10000 \n" \
"*ncolors: 100 \n" \
- "*fpsSolid: True \n"
+ "*fpsSolid: True \n" \
+ "*ignoreRotation: True \n" \
# define SMOOTH_COLORS
# define refresh_strange 0
"*maxCracks: 100",
"*sandGrains: 64",
"*circlePercent: 33",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*ncolors: 200 \n" \
"*useSHM: True \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
# define SMOOTH_COLORS
# define WRITABLE_COLORS
if (swirl->drawing) {
#ifdef STANDALONE
if (mi->writable_p)
- rotate_colors(MI_DISPLAY(mi), MI_COLORMAP(mi),
+ rotate_colors(mi->xgwa.screen, MI_COLORMAP(mi),
swirl->rgb_values, swirl->colours, 1);
#else /* !STANDALONE */
/* rotate the colours */
} else {
#ifdef STANDALONE
if (mi->writable_p)
- rotate_colors(MI_DISPLAY(mi), MI_COLORMAP(mi),
+ rotate_colors(mi->xgwa.screen, MI_COLORMAP(mi),
swirl->rgb_values, swirl->colours, 1);
#else /* !STANDALONE */
/* rotate the colours */
#ifdef STANDALONE
/* Pick a new colormap! */
XClearWindow (MI_DISPLAY(mi), MI_WINDOW(mi));
- free_colors (MI_DISPLAY(mi), MI_COLORMAP(mi),
+ free_colors (mi->xgwa.screen, MI_COLORMAP(mi),
mi->colors, mi->npixels);
- make_smooth_colormap (MI_DISPLAY(mi),
- MI_VISUAL(mi),
+ make_smooth_colormap (mi->xgwa.screen, MI_VISUAL(mi),
MI_COLORMAP(mi),
mi->colors, &mi->npixels, True,
&mi->writable_p, True);
"*cycles: 400 \n" \
"*ncolors: 64 \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
# define BRIGHT_COLORS
# define thornbird_handle_event 0
XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
if (!mono_p)
{
- free_colors(mi->dpy, mi->xgwa.colormap, mi->colors,
+ free_colors(mi->xgwa.screen, mi->xgwa.colormap, mi->colors,
mi->npixels);
mi->npixels =
get_integer_resource (mi->dpy, "ncolors", "Integer");
- make_smooth_colormap (mi->dpy,
+ make_smooth_colormap (mi->xgwa.screen,
mi->xgwa.visual, mi->xgwa.colormap,
mi->colors, &mi->npixels,
True, &mi->writable_p, True);
"*anim-delay: 100",
"*anim-step-size: 3",
"*randomize: true",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*useSHM: True",
#else
"*useSHM: False",
+#endif
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
#endif
0
};
randpal (struct state *st)
{
int ncolors = tailmax - 1;
- make_random_colormap (st->dpy,
- st->xgwa.visual,
- st->mycmap, &st->mycolors[1], &ncolors, True, True, 0, True);
+ make_random_colormap (st->xgwa.screen, st->xgwa.visual, st->mycmap,
+ &st->mycolors[1], &ncolors, True, True, 0, True);
if (ncolors < tailmax - 1)
{
int c;
"*fpsSolid: true",
"*speed: 0",
"*instring: ",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
st->color_map = attributes.colormap;
if (st->color_count)
{
- free_colors (st->dpy, st->color_map, st->colors, st->color_count);
+ free_colors (attributes.screen, st->color_map,
+ st->colors, st->color_count);
st->color_count = 0;
}
st->context = XCreateGC (st->dpy, st->window, 0, &values);
st->color_count = MAXIMUM_COLOR_COUNT;
- make_color_loop (st->dpy, st->color_map,
+ make_color_loop (attributes.screen, attributes.visual, st->color_map,
0, 1, 1,
120, 1, 1,
240, 1, 1,
".reset: 2500000",
".circles: False",
".size: 1",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*points: 400",
"*tails: 8",
"*meters: false",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
{
Bool writable_p = False;
- make_uniform_colormap (st->dpy, st->xgwa.visual, st->xgwa.colormap, st->colors, &st->ncolors, True, &writable_p, True);
+ make_uniform_colormap (st->xgwa.screen, st->xgwa.visual,
+ st->xgwa.colormap, st->colors, &st->ncolors,
+ True, &writable_p, True);
}
if (st->ba) XFillRectangle (st->dpy, st->ba, st->bgc, 0, 0, st->xgwa.width, st->xgwa.height);
"*delay: 10000",
"*zspeed: 10",
"*stars: 20",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
{
XGCValues gcv;
+ /* #### This probably leaks SHM every time the window is resized. */
+ if (st->xim)
+ XDestroyImage (st->xim);
+
#ifdef HAVE_XSHM_EXTENSION
st->shared = True;
st->xim = create_xshm_image (st->dpy, st->visual, st->depth, ZPixmap, NULL,
}
}
- st->gc = XCreateGC(st->dpy,st->window,0,&gcv);
- if (!st->gc) exit (1);
+ if (! st->gc)
+ st->gc = XCreateGC(st->dpy,st->window,0,&gcv);
}
{
st->fwidth = st->width / 2;
st->fheight = st->height / 2;
+
+ if (st->flame) free (st->flame);
st->flame = (unsigned char *) malloc((st->fwidth + 2) * (st->fheight + 2)
* sizeof(unsigned char));
unsigned char *result, *o;
char *bits = (char *) malloc (sizeof(bob_bits));
int x, y;
- int scale = ((st->width > bob_width * 11) ? 2 : 1);
+ int scale = ((st->width > bob_width * 10) ? 2 : 1);
memcpy (bits, bob_bits, sizeof(bob_bits));
ximage = XCreateImage (st->dpy, st->visual, 1, XYBitmap, 0, bits,
InitColors(st);
st->theim = loadBitmap(st, &st->theimx, &st->theimy);
- /* utils/xshm.c doesn't provide a way to free the shared-memory image, which
- makes it hard for us to react to window resizing. So, punt for now. The
- size of the window at startup is the size it will stay.
- */
- GetXInfo(st);
-
MakeImage(st);
InitFlame(st);
FlameFill(st,0);
xflame_reshape (Display *dpy, Window window, void *closure,
unsigned int w, unsigned int h)
{
+ struct state *st = (struct state *) closure;
+ GetXInfo(st);
+ MakeImage(st);
+ InitFlame(st);
+ FlameFill(st,0);
+ XClearWindow (dpy, window);
}
static Bool
-/* xscreensaver, Copyright (c) 1997-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1997-2013 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
xjack_reshape (dpy, window, st, st->xgwa.width, st->xgwa.height);
- if (st->columns >= 21)
- {
- st->left = 0xFF & (random() % ((st->columns / 2)+1));
- st->right = st->left + (0xFF & (random() % (st->columns - st->left - 10)
- + 10));
- }
- st->x = 0;
+ st->left = 0xFF & (random() % ((st->columns / 2)+1));
+ st->right = st->left + (0xFF & (random() % (st->columns - st->left)
+ + 10));
+ if (st->right < st->left + 10) st->right = st->left + 10;
+ if (st->right > st->columns) st->right = st->columns;
+
+ st->x = st->left;
st->y = 0;
if (st->xgwa.width > 200 && st->xgwa.height > 200)
if (st->break_para)
st->y++;
+ st->break_para = 0;
+
if (st->mode == 1 || st->mode == 2)
{
/* 1 = left margin goes southwest; 2 = southeast */
if (st->y >= st->rows-1) /* bottom of page */
{
+# if 0 /* Nah, this looks bad. */
+
/* scroll by 1-5 lines */
st->scrolling = (random() % 5 ? 0 : (0xFF & (random() % 5))) + 1;
+
if (st->break_para)
st->scrolling++;
/* but sometimes scroll by a whole page */
if (0 == (random() % 100))
st->scrolling += st->rows;
+# else
+ st->scrolling = 1;
+# endif
return xjack_scroll (st);
}
}
if ((tolower(c) != tolower(*st->s))
- ? (0 == (random() % 10)) /* backup to correct */
+ ? (0 == (random() % 10)) /* backup to correct */
: (0 == (random() % 400))) /* fail to advance */
{
st->x--;
if (st->right > st->columns)
st->left -= (st->right - st->columns);
}
+
+ if (st->right - st->left < 5)
+ st->left = st->right - 5;
+ if (st->left < 0)
+ st->left = 0;
+ if (st->right - st->left < 5)
+ st->right = st->left + 5;
}
st->s = source;
}
/* xlockmore.c --- xscreensaver compatibility layer for xlockmore modules.
- * xscreensaver, Copyright (c) 1997-2011 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1997-2013 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
switch (mi->xlmft->desired_color_scheme)
{
case color_scheme_uniform:
- make_uniform_colormap (dpy, mi->xgwa.visual, mi->xgwa.colormap,
+ make_uniform_colormap (mi->xgwa.screen, mi->xgwa.visual,
+ mi->xgwa.colormap,
mi->colors, &mi->npixels,
True, &mi->writable_p, True);
break;
case color_scheme_smooth:
- make_smooth_colormap (dpy, mi->xgwa.visual, mi->xgwa.colormap,
+ make_smooth_colormap (mi->xgwa.screen, mi->xgwa.visual,
+ mi->xgwa.colormap,
mi->colors, &mi->npixels,
True, &mi->writable_p, True);
break;
case color_scheme_bright:
case color_scheme_default:
- make_random_colormap (dpy, mi->xgwa.visual, mi->xgwa.colormap,
+ make_random_colormap (mi->xgwa.screen, mi->xgwa.visual,
+ mi->xgwa.colormap,
mi->colors, &mi->npixels,
(mi->xlmft->desired_color_scheme ==
color_scheme_bright),
"*delay: 10000",
"*linger: 5",
"*colors: 200",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
/*#define BACKING_PIXMAP*/
struct state {
- int screen;
Display *dpy;
+ Screen *screen;
Visual *visual;
Colormap cmap;
{
int i;
if (st->ncolors)
- free_colors (st->dpy, st->cmap, st->colors, st->ncolors);
+ free_colors (st->screen, st->cmap, st->colors, st->ncolors);
st->ncolors = st->maxcolor;
- make_smooth_colormap(st->dpy, st->visual, st->cmap,
+ make_smooth_colormap(st->screen, st->visual, st->cmap,
st->colors, &st->ncolors, True, NULL, True);
for (i = 0; i < st->maxcolor; i++) {
if (! st->Data_GC[i]) {
XGCValues gcv;
- gcv.background = BlackPixel(st->dpy, st->screen);
+ gcv.background = BlackPixelOfScreen(st->screen);
st->Data_GC[i] = XCreateGC(st->dpy, st->canvas, GCBackground, &gcv);
}
XSetForeground(st->dpy, st->Data_GC[i],
st->width = xgwa.width;
st->height = xgwa.height;
st->visual = xgwa.visual;
+ st->screen = xgwa.screen;
st->cmap = xgwa.colormap;
do_defaults(st);
if (builtin >= 0)
do_preset (st, builtin);
- st->screen = DefaultScreen(st->dpy);
- st->background = BlackPixel(st->dpy, st->screen);
+ st->background = BlackPixelOfScreen(st->screen);
setupmem(st);
init_data(st);
if (!mono_p)
st->foreground = st->startcolor;
else
- st->foreground = WhitePixel(st->dpy, st->screen);
+ st->foreground = WhitePixelOfScreen(st->screen);
/*
* Create the window to display the Lyapunov exponents
#!/usr/bin/perl -w
-# Copyright © 2002, 2005 Jamie Zawinski <jwz@jwz.org>
+# Copyright © 2002-2013 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
use Text::Wrap;
my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.3 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.4 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
my $verbose = 0;
".BR X (1),\n" .
".BR xscreensaver (1)\n" .
".SH COPYRIGHT\n" .
- "Copyright \\(co 2002 by %AUTHOR%. " .
+ "Copyright \\(co %YEAR% by %AUTHOR%. " .
"Permission to use, copy, modify, \n" .
"distribute, and sell this software and its " .
"documentation for any purpose is \n" .
my $carg = $arg;
my $boolp = m/^<boolean/;
+ my $novalsp = 0;
if ($arg && $arg =~ m/^-no(-.*)/) {
$arg = "$1 | \\$arg";
$label = "Render in wireframe instead of solid.";
} elsif ($carg =~ m/^-delay/ && $hi && $hi >= 10000) {
$label = "Per-frame delay, in microseconds.";
- $def = sprintf ("%d (%0.2f seconds.)", $def, ($def/1000000.0));
+ $def = sprintf ("%d (%0.2f seconds)", $def, ($def/1000000.0));
$low = $hi = undef;
+ } elsif ($carg eq '-speed \fInumber\fP') {
+ $label = "Animation speed. 2.0 means twice as fast, " .
+ "0.5 means half as fast.";
+ $novalsp = 1;
} elsif ($boolp) {
$label .= ". Boolean.";
} elsif ($label) {
$args .= "[\\$carg]\n";
- $label .= " $low - $hi." if (defined($low) && defined($hi));
- $label .= " Default: $def." if (defined ($def));
+ if (! $novalsp) {
+ $label .= " $low - $hi." if (defined($low) && defined($hi));
+ $label .= " Default: $def." if (defined ($def));
+ }
$label = wrap ("", "", $label);
$body .= ".TP 8\n.B \\$arg\n$label";
$author = "UNKNOWN";
}
+ $desc =~ s@http://en\.wikipedia\.org/[^\s]+@@gs;
+
$desc = wrap ("", "", $desc);
$body = (".TH XScreenSaver 1 \"\" \"X Version 11\"\n" .
$body .
$man_suffix);
+ my $year = $1 if ($author =~ s/; (\d{4})$//s);
+ $year = (localtime)[5] + 1900 unless $year;
+
$body =~ s/%AUTHOR%/$author/g;
+ $body =~ s/%YEAR%/$year/g;
#print $body; exit 0;
".background: black",
"*delay: 20000",
"*fpsSolid: true",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*subdelay: 20000",
"*layers: 2",
"*alwaysfinish: false",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
"*pixspacey: 2",
"*lensoffsetx: 5",
"*lensoffsety: 5",
+#ifdef USE_IPHONE
+ "*ignoreRotation: True",
+#endif
0
};
-# Auto-generated: Mon Feb 4 22:38:23 PST 2013
+# Auto-generated: Tue Jul 16 02:23:37 PDT 2013
driver/demo-Gtk-conf.c
driver/demo-Gtk-support.c
driver/demo-Gtk-widgets.c
hacks/config/halftone.xml
hacks/config/halo.xml
hacks/config/helix.xml
+hacks/config/hexadrop.xml
hacks/config/hilbert.xml
hacks/config/hopalong.xml
hacks/config/hyperball.xml
hacks/config/juggler3d.xml
hacks/config/julia.xml
hacks/config/kaleidescope.xml
+hacks/config/kaleidocycle.xml
hacks/config/klein.xml
hacks/config/kumppa.xml
hacks/config/lament.xml
hacks/config/pulsar.xml
hacks/config/pyro.xml
hacks/config/qix.xml
+hacks/config/quasicrystal.xml
hacks/config/queens.xml
hacks/config/rd-bomb.xml
hacks/config/rdbomb.xml
hacks/config/tronbit.xml
hacks/config/truchet.xml
hacks/config/twang.xml
+hacks/config/unknownpleasures.xml
hacks/config/vermiculate.xml
hacks/config/vidwhacker.xml
hacks/config/vines.xml
$ halftone :== $'mydir'halftone
$ halo :== $'mydir'halo
$ helix :== $'mydir'helix
+$ hexadrop :== $'mydir'hexadrop
$ hopalong :== $'mydir'hopalong
$ ifs :== $'mydir'ifs
$ imsmap :== $'mydir'imsmap
-/* xscreensaver, Copyright (c) 1997, 2002 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1997-2013 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
extern char *progname;
void
-free_colors(Display *dpy, Colormap cmap, XColor *colors, int ncolors)
+free_colors (Screen *screen, Colormap cmap, XColor *colors, int ncolors)
{
+ Display *dpy = screen ? DisplayOfScreen (screen) : 0;
int i;
if (ncolors > 0)
{
void
-allocate_writable_colors (Display *dpy, Colormap cmap,
+allocate_writable_colors (Screen *screen, Colormap cmap,
unsigned long *pixels, int *ncolorsP)
{
+ Display *dpy = screen ? DisplayOfScreen (screen) : 0;
int desired = *ncolorsP;
int got = 0;
int requested = desired;
void
-make_color_ramp (Display *dpy, Colormap cmap,
+make_color_ramp (Screen *screen, Visual *visual, Colormap cmap,
int h1, double s1, double v1, /* 0-360, 0-1.0, 0-1.0 */
int h2, double s2, double v2, /* 0-360, 0-1.0, 0-1.0 */
XColor *colors, int *ncolorsP,
Bool closed_p,
Bool allocate_p,
- Bool writable_p)
+ Bool *writable_pP)
{
+ Display *dpy = screen ? DisplayOfScreen (screen) : 0;
Bool verbose_p = True; /* argh. */
int i;
int total_ncolors = *ncolorsP;
int ncolors, wanted;
- Bool wanted_writable = (allocate_p && writable_p);
+ Bool wanted_writable = (allocate_p && writable_pP && *writable_pP);
double dh, ds, dv; /* deltas */
wanted = total_ncolors;
if (closed_p)
wanted = (wanted / 2) + 1;
+ /* If this visual doesn't support writable cells, don't bother trying.
+ */
+ if (wanted_writable && !has_writable_cells(screen, visual))
+ *writable_pP = False;
+
AGAIN:
ncolors = total_ncolors;
if (!allocate_p)
return;
- if (writable_p)
+ if (writable_pP && *writable_pP)
{
unsigned long *pixels = (unsigned long *)
malloc(sizeof(*pixels) * ((*ncolorsP) + 1));
}
else
{
- free_colors (dpy, cmap, colors, i);
+ free_colors (screen, cmap, colors, i);
goto FAIL;
}
}
if (verbose_p &&
/* don't warn if we got 0 writable colors -- probably TrueColor. */
(ncolors != 0 || !wanted_writable))
- complain (wanted, ncolors, wanted_writable, wanted_writable && writable_p);
+ complain (wanted, ncolors, wanted_writable,
+ (wanted_writable && writable_pP && *writable_pP));
}
static void
-make_color_path (Display *dpy, Colormap cmap,
+make_color_path (Screen *screen, Visual *visual, Colormap cmap,
int npoints, int *h, double *s, double *v,
XColor *colors, int *ncolorsP,
Bool allocate_p,
- Bool writable_p)
+ Bool *writable_pP)
{
+ Display *dpy = screen ? DisplayOfScreen (screen) : 0;
int i, j, k;
int total_ncolors = *ncolorsP;
}
else if (npoints == 2) /* using make_color_ramp() will be faster */
{
- make_color_ramp (dpy, cmap,
+ make_color_ramp (screen, visual, cmap,
h[0], s[0], v[0], h[1], s[1], v[1],
colors, ncolorsP,
True, /* closed_p */
- allocate_p, writable_p);
+ allocate_p, writable_pP);
return;
}
else if (npoints >= MAXPOINTS)
if (!allocate_p)
return;
- if (writable_p)
+ if (writable_pP && *writable_pP)
{
unsigned long *pixels = (unsigned long *)
malloc(sizeof(*pixels) * ((*ncolorsP) + 1));
}
else
{
- free_colors (dpy, cmap, colors, i);
+ free_colors (screen, cmap, colors, i);
goto FAIL;
}
}
void
-make_color_loop (Display *dpy, Colormap cmap,
+make_color_loop (Screen *screen, Visual *visual, Colormap cmap,
int h0, double s0, double v0, /* 0-360, 0-1.0, 0-1.0 */
int h1, double s1, double v1, /* 0-360, 0-1.0, 0-1.0 */
int h2, double s2, double v2, /* 0-360, 0-1.0, 0-1.0 */
XColor *colors, int *ncolorsP,
Bool allocate_p,
- Bool writable_p)
+ Bool *writable_pP)
{
+ Bool wanted_writable = (allocate_p && writable_pP && *writable_pP);
+
int h[3];
double s[3], v[3];
h[0] = h0; h[1] = h1; h[2] = h2;
s[0] = s0; s[1] = s1; s[2] = s2;
v[0] = v0; v[1] = v1; v[2] = v2;
- make_color_path(dpy, cmap,
- 3, h, s, v,
- colors, ncolorsP,
- allocate_p, writable_p);
+
+ /* If this visual doesn't support writable cells, don't bother trying.
+ */
+ if (wanted_writable && !has_writable_cells(screen, visual))
+ *writable_pP = False;
+
+ make_color_path (screen, visual, cmap,
+ 3, h, s, v,
+ colors, ncolorsP,
+ allocate_p, writable_pP);
}
void
-make_smooth_colormap (Display *dpy, Visual *visual, Colormap cmap,
+make_smooth_colormap (Screen *screen, Visual *visual, Colormap cmap,
XColor *colors, int *ncolorsP,
Bool allocate_p,
Bool *writable_pP,
double v[MAXPOINTS];
double total_s = 0;
double total_v = 0;
- Screen *screen = (dpy ? DefaultScreenOfDisplay(dpy) : 0); /* #### WRONG! */
int loop = 0;
if (*ncolorsP <= 0) return;
*writable_pP = False;
RETRY_NON_WRITABLE:
- make_color_path (dpy, cmap, npoints, h, s, v, colors, &ncolors,
- allocate_p, (writable_pP && *writable_pP));
+ make_color_path (screen, visual, cmap, npoints, h, s, v, colors, &ncolors,
+ allocate_p, writable_pP);
/* If we tried for writable cells and got none, try for non-writable. */
if (allocate_p && *ncolorsP == 0 && writable_pP && *writable_pP)
void
-make_uniform_colormap (Display *dpy, Visual *visual, Colormap cmap,
+make_uniform_colormap (Screen *screen, Visual *visual, Colormap cmap,
XColor *colors, int *ncolorsP,
Bool allocate_p,
Bool *writable_pP,
{
int ncolors = *ncolorsP;
Bool wanted_writable = (allocate_p && writable_pP && *writable_pP);
- Screen *screen = (dpy ? DefaultScreenOfDisplay(dpy) : 0); /* #### WRONG! */
double S = ((double) (random() % 34) + 66) / 100.0; /* range 66%-100% */
double V = ((double) (random() % 34) + 66) / 100.0; /* range 66%-100% */
*writable_pP = False;
RETRY_NON_WRITABLE:
- make_color_ramp(dpy, cmap,
+ make_color_ramp(screen, visual, cmap,
0, S, V,
359, S, V,
colors, &ncolors,
- False, allocate_p,
- (writable_pP && *writable_pP));
+ False, allocate_p, writable_pP);
/* If we tried for writable cells and got none, try for non-writable. */
if (allocate_p && *ncolorsP == 0 && writable_pP && *writable_pP)
void
-make_random_colormap (Display *dpy, Visual *visual, Colormap cmap,
+make_random_colormap (Screen *screen, Visual *visual, Colormap cmap,
XColor *colors, int *ncolorsP,
Bool bright_p,
Bool allocate_p,
Bool *writable_pP,
Bool verbose_p)
{
+ Display *dpy = screen ? DisplayOfScreen (screen) : 0;
Bool wanted_writable = (allocate_p && writable_pP && *writable_pP);
int ncolors = *ncolorsP;
int i;
- Screen *screen = (dpy ? DefaultScreenOfDisplay(dpy) : 0); /* #### WRONG! */
if (*ncolorsP <= 0) return;
if (wanted_writable && !has_writable_cells(screen, visual))
*writable_pP = False;
+ RETRY_ALL:
for (i = 0; i < ncolors; i++)
{
colors[i].flags = DoRed|DoGreen|DoBlue;
}
}
+ /* If there are a small number of colors, make sure at least the first
+ two contrast well.
+ */
+ if (!bright_p && ncolors <= 4)
+ {
+ int h0, h1;
+ double s0, s1, v0, v1;
+ rgb_to_hsv (colors[0].red, colors[0].green, colors[0].blue, &h0,&s0,&v0);
+ rgb_to_hsv (colors[1].red, colors[1].green, colors[1].blue, &h1,&s1,&v1);
+ if (fabs (v1-v0) < 0.5)
+ goto RETRY_ALL;
+ }
+
if (!allocate_p)
return;
unsigned long *pixels = (unsigned long *)
malloc(sizeof(*pixels) * (ncolors + 1));
- allocate_writable_colors (dpy, cmap, pixels, &ncolors);
+ allocate_writable_colors (screen, cmap, pixels, &ncolors);
if (ncolors > 0)
for (i = 0; i < ncolors; i++)
colors[i].pixel = pixels[i];
void
-rotate_colors (Display *dpy, Colormap cmap,
+rotate_colors (Screen *screen, Colormap cmap,
XColor *colors, int ncolors, int distance)
{
+ Display *dpy = screen ? DisplayOfScreen (screen) : 0;
int i;
- XColor *colors2 = (XColor *) malloc(sizeof(*colors2) * ncolors);
+ XColor *colors2;
if (ncolors < 2) return;
+ colors2 = (XColor *) malloc(sizeof(*colors2) * ncolors);
distance = distance % ncolors;
for (i = 0; i < ncolors; i++)
{
-/* xscreensaver, Copyright (c) 1992, 1997 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-2013 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
/* Like XFreeColors, but works on `XColor *' instead of `unsigned long *'
*/
-extern void free_colors (Display *, Colormap, XColor *, int ncolors);
+extern void free_colors (Screen *, Colormap, XColor *, int ncolors);
/* Allocates writable, non-contiguous color cells. The number requested is
(Unlike XAllocColorCells(), this will allocate as many as it can, instead
of failing if they can't all be allocated.)
*/
-extern void allocate_writable_colors (Display *dpy, Colormap cmap,
+extern void allocate_writable_colors (Screen *, Colormap,
unsigned long *pixels, int *ncolorsP);
If writable_p is true, writable color cells will be allocated;
otherwise, read-only cells will be allocated.
+
+ If allocate_p is false, screen and cmap are unused (OpenGL usage).
*/
-extern void make_color_ramp (Display *dpy, Colormap cmap,
+extern void make_color_ramp (Screen *, Visual *, Colormap,
int h1, double s1, double v1,
int h2, double s2, double v2,
XColor *colors, int *ncolorsP,
Bool closed_p,
Bool allocate_p,
- Bool writable_p);
+ Bool *writable_pP);
/* Generates a sequence of colors evenly spaced around the triangle
indicated by the thee HSV coordinates.
If writable_p is true, writable color cells will be allocated;
otherwise, read-only cells will be allocated.
+
+ If allocate_p is false, screen, visual and cmap are unused (OpenGL usage).
*/
-extern void make_color_loop (Display *, Colormap,
+extern void make_color_loop (Screen *, Visual *, Colormap,
int h1, double s1, double v1,
int h2, double s2, double v2,
int h3, double s3, double v3,
XColor *colors, int *ncolorsP,
Bool allocate_p,
- Bool writable_p);
+ Bool *writable_pP);
/* Allocates a hopefully-interesting colormap, which will be a closed loop
otherwise, read-only cells will be allocated. If no writable cells
cannot be allocated, we will try to allocate unwritable cells
instead, and print a message on stderr to that effect (if verbose_p).
+
+ If allocate_p is false, screen, visual and cmap are unused (OpenGL usage).
*/
-extern void make_smooth_colormap (Display *dpy, Visual *visual,
- Colormap cmap,
+extern void make_smooth_colormap (Screen *, Visual *, Colormap,
XColor *colors, int *ncolorsP,
Bool allocate_p,
Bool *writable_pP,
otherwise, read-only cells will be allocated. If no writable cells
cannot be allocated, we will try to allocate unwritable cells
instead, and print a message on stderr to that effect (if verbose_p).
+
+ If allocate_p is false, screen, visual and cmap are unused (OpenGL usage).
*/
-extern void make_uniform_colormap (Display *dpy, Visual *visual,
- Colormap cmap,
+extern void make_uniform_colormap (Screen *, Visual *, Colormap,
XColor *colors, int *ncolorsP,
Bool allocate_p,
Bool *writable_pP,
otherwise, read-only cells will be allocated. If no writable cells
cannot be allocated, we will try to allocate unwritable cells
instead, and print a message on stderr to that effect (if verbose_p).
+
+ If allocate_p is false, screen, visual and cmap are unused (OpenGL usage).
*/
-extern void make_random_colormap (Display *dpy, Visual *visual,
- Colormap cmap,
+extern void make_random_colormap (Screen *, Visual *, Colormap,
XColor *colors, int *ncolorsP,
Bool bright_p,
Bool allocate_p,
of writable color cells, this rotates the contents of the array by
`distance' steps, moving the colors of cell N to cell (N - distance).
*/
-extern void rotate_colors (Display *, Colormap,
+extern void rotate_colors (Screen *, Colormap,
XColor *, int ncolors, int distance);
#endif /* __COLORS_H__ */
-/* xscreensaver, Copyright (c) 1992-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-2013 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
geom.height = h;
}
+ /* Take the extension off of the file name. */
+ /* Duplicated in driver/xscreensaver-getimage.c. */
+ if (buf && *buf)
+ {
+ char *slash = strrchr (buf, '/');
+ char *dot = strrchr ((slash ? slash : buf), '.');
+ if (dot) *dot = 0;
+ /* Replace slashes with newlines */
+ /* while (dot = strchr(buf, '/')) *dot = '\n'; */
+ /* Replace slashes with spaces */
+ while ((dot = strchr(buf, '/'))) *dot = ' ';
+ }
+
if (absfile) free (absfile);
clo2->callback (clo2->screen, clo2->xwindow, clo2->drawable, buf, &geom,
clo2->closure);
/* If we got here, we loaded synchronously even though they wanted async.
*/
callback (screen, window, drawable, name_ret_2, &geom_ret_2, closure);
+ if (name_ret_2) free (name_ret_2);
}
}
-/* xscreensaver, Copyright (c) 1992-2006 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-2013 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
XQueryColors (dpy, from_cmap, old_colors, max_cells);
got_cells = max_cells;
- allocate_writable_colors (dpy, to_cmap, pixels, &got_cells);
+ allocate_writable_colors (screen, to_cmap, pixels, &got_cells);
if (grab_verbose_p && got_cells != max_cells)
fprintf(stderr, "%s: got only %d of %d cells\n", progname,
-/* xscreensaver, Copyright (c) 2001-2006 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2001-2013 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
ximage = XCreateImage (dpy, visual, depth,
(depth == 1 ? XYBitmap : ZPixmap),
0, 0, w, h, 8, 0);
- if (! ximage) return 0;
+ if (! ximage)
+ {
+ if (pixels) free (pixels);
+ return 0;
+ }
ximage->bitmap_bit_order =
ximage->byte_order =
(bigendian() ? MSBFirst : LSBFirst);
ximage->data = (char *) calloc (ximage->height, ximage->bytes_per_line);
- if (!ximage->data) {
- XDestroyImage (ximage);
- return 0;
- }
+ if (!ximage->data)
+ {
+ XDestroyImage (ximage);
+ if (pixels) free (pixels);
+ return 0;
+ }
w8 = (w + 7) / 8;
if (mask_ret)
static void
grow_spline_points (spline *s)
{
- s->allocated_points *= 2;
+ s->allocated_points = 10 + (s->allocated_points * 1.3);
s->points =
(XPoint*)realloc (s->points, s->allocated_points * sizeof (XPoint));
if (!s->points) abort();
static const char screensaver_id[] =
- "@(#)xscreensaver 5.21 (04-Feb-2013), by Jamie Zawinski (jwz@jwz.org)";
+ "@(#)xscreensaver 5.22 (16-Jul-2013), by Jamie Zawinski (jwz@jwz.org)";
%define name xscreensaver
-%define version 5.21
+%define version 5.22
Summary: X screen saver and locker
Name: %{name}
AF77798F09B6604C00EA3033 /* PBXTargetDependency */,
AF77798D09B6604C00EA3033 /* PBXTargetDependency */,
AF77798B09B6604C00EA3033 /* PBXTargetDependency */,
- AF2D4F8B13E91108002AA818 /* PBXTargetDependency */,
+ AFBFE785178648E600432B21 /* PBXTargetDependency */,
AF77798909B6604C00EA3033 /* PBXTargetDependency */,
AF77798709B6604B00EA3033 /* PBXTargetDependency */,
AF77798509B6604B00EA3033 /* PBXTargetDependency */,
AF77795109B6604900EA3033 /* PBXTargetDependency */,
AF77794F09B6604900EA3033 /* PBXTargetDependency */,
AF77794D09B6604900EA3033 /* PBXTargetDependency */,
+ AFB591C3178B821E00EA4005 /* PBXTargetDependency */,
AF77794709B6604900EA3033 /* PBXTargetDependency */,
AF77794509B6604900EA3033 /* PBXTargetDependency */,
AF77794309B6604900EA3033 /* PBXTargetDependency */,
AF77792109B6604800EA3033 /* PBXTargetDependency */,
AF77791F09B6604800EA3033 /* PBXTargetDependency */,
AF77791D09B6604800EA3033 /* PBXTargetDependency */,
- AF2D4F8D13E9111D002AA818 /* PBXTargetDependency */,
+ AFBFE787178648F500432B21 /* PBXTargetDependency */,
AF77791B09B6604700EA3033 /* PBXTargetDependency */,
AF77791909B6604700EA3033 /* PBXTargetDependency */,
AF77791709B6604700EA3033 /* PBXTargetDependency */,
AF777A1509B660B300EA3033 /* PBXTargetDependency */,
AF35E8A30E63825600691F2F /* PBXTargetDependency */,
AF777A1309B660B300EA3033 /* PBXTargetDependency */,
+ AFBFE7421786407000432B21 /* PBXTargetDependency */,
AF777A1109B660B300EA3033 /* PBXTargetDependency */,
AF777A0F09B660B200EA3033 /* PBXTargetDependency */,
AF777A0D09B660B200EA3033 /* PBXTargetDependency */,
AF7779F909B660B100EA3033 /* PBXTargetDependency */,
AF7779F709B660B100EA3033 /* PBXTargetDependency */,
AF7779F509B660B100EA3033 /* PBXTargetDependency */,
+ AFBFE7401786405E00432B21 /* PBXTargetDependency */,
AF7779F309B660B000EA3033 /* PBXTargetDependency */,
AF7779F109B660B000EA3033 /* PBXTargetDependency */,
AF32D9F90F3AD0D90080F535 /* PBXTargetDependency */,
AF7779DD09B660AF00EA3033 /* PBXTargetDependency */,
AF998EF70A083E1D0051049D /* PBXTargetDependency */,
AF4F10F2143450C300E34F3F /* PBXTargetDependency */,
+ AFDA65AA178A54690070D24B /* PBXTargetDependency */,
AF0DCA5C0C4CBB4300D76972 /* PBXTargetDependency */,
);
name = "All Savers (OpenGL)";
AF1FD721158FF96500C40F17 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
AF1FD722158FF96500C40F17 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF48112B0990A2C700FB32B8 /* Carbon.framework */; };
AF1FD723158FF96500C40F17 /* libjwxyz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AF4808C1098C3B6C00FB32B8 /* libjwxyz.a */; };
- AF1FD724158FF96500C40F17 /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
- AF1FD725158FF96500C40F17 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
- AF1FD726158FF96500C40F17 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF48112B0990A2C700FB32B8 /* Carbon.framework */; };
AF1FD727158FF96500C40F17 /* libjwxyz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AF4808C1098C3B6C00FB32B8 /* libjwxyz.a */; };
AF1FD728158FF96500C40F17 /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
AF1FD729158FF96500C40F17 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
AF1FD7F1158FF96500C40F17 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
AF1FD7F2158FF96500C40F17 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF48112B0990A2C700FB32B8 /* Carbon.framework */; };
AF1FD7F3158FF96500C40F17 /* libjwxyz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AF4808C1098C3B6C00FB32B8 /* libjwxyz.a */; };
- AF1FD7F4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
- AF1FD7F5158FF96500C40F17 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
- AF1FD7F6158FF96500C40F17 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF48112B0990A2C700FB32B8 /* Carbon.framework */; };
AF1FD7F7158FF96500C40F17 /* libjwxyz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AF4808C1098C3B6C00FB32B8 /* libjwxyz.a */; };
AF1FD7F8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
AF1FD7F9158FF96500C40F17 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
AF2C31EB15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
AF2C31EC15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
AF2C31ED15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
- AF2C31EE15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
AF2C31EF15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
AF2C31F015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
AF2C31F115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
AF2C321F15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
AF2C322015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
AF2C322115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
- AF2C322215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
AF2C322315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
AF2C322415C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
AF2C322515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
AF2C32C615C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
AF2C32C715C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
AF2C32C815C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
- AF2D4D8413E902F5002AA818 /* SaverRunner.nib in Resources */ = {isa = PBXBuildFile; fileRef = AF9772E10989DFC6001F8B92 /* SaverRunner.nib */; };
AF2D4D8613E902F5002AA818 /* SaverRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = AFE1FD400981E32E00F7970E /* SaverRunner.m */; };
AF2D4D8713E902F5002AA818 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
- AF2D4DBD13E90372002AA818 /* Phosphor.saver in Copy Plugins */ = {isa = PBXBuildFile; fileRef = AF7776F609B63ABF00EA3033 /* Phosphor.saver */; };
- AF2D4F7113E91093002AA818 /* SaverRunner.nib in Resources */ = {isa = PBXBuildFile; fileRef = AF9772E10989DFC6001F8B92 /* SaverRunner.nib */; };
AF2D4F7513E91093002AA818 /* SaverRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = AFE1FD400981E32E00F7970E /* SaverRunner.m */; };
AF2D4F7613E91093002AA818 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
- AF2D4FA913E9115E002AA818 /* Apple2.saver in Copy Plugins */ = {isa = PBXBuildFile; fileRef = AF9D4DFE09B5BB19006E59CF /* Apple2.saver */; };
- AF2D522613E954A0002AA818 /* SaverRunner.icns in Resources */ = {isa = PBXBuildFile; fileRef = AF2D522513E954A0002AA818 /* SaverRunner.icns */; };
AF32D9E70F3AD0B40080F535 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
AF32D9FB0F3AD1200080F535 /* rubikblocks.c in Sources */ = {isa = PBXBuildFile; fileRef = AF32D9FA0F3AD1200080F535 /* rubikblocks.c */; };
AF32D9FD0F3AD1330080F535 /* rubikblocks.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF32D9FC0F3AD1330080F535 /* rubikblocks.xml */; };
AF3581C61431D47B00E09C51 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
AF3581C71431D47B00E09C51 /* voronoi.c in Sources */ = {isa = PBXBuildFile; fileRef = AF0DCA5F0C4CBB7300D76972 /* voronoi.c */; };
AF3581C81431D47B00E09C51 /* hilbert.c in Sources */ = {isa = PBXBuildFile; fileRef = AF78D18A142DD96E002AAF77 /* hilbert.c */; };
- AF3581DA1431D5FC00E09C51 /* companion_disc.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3581D61431D5FC00E09C51 /* companion_disc.c */; };
- AF3581DB1431D5FC00E09C51 /* companion_disc.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3581D61431D5FC00E09C51 /* companion_disc.c */; };
AF3581DC1431D5FC00E09C51 /* companion_disc.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3581D61431D5FC00E09C51 /* companion_disc.c */; };
- AF3581DD1431D5FC00E09C51 /* companion_heart.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3581D71431D5FC00E09C51 /* companion_heart.c */; };
- AF3581DE1431D5FC00E09C51 /* companion_heart.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3581D71431D5FC00E09C51 /* companion_heart.c */; };
AF3581DF1431D5FC00E09C51 /* companion_heart.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3581D71431D5FC00E09C51 /* companion_heart.c */; };
- AF3581E01431D5FC00E09C51 /* companion_quad.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3581D81431D5FC00E09C51 /* companion_quad.c */; };
- AF3581E11431D5FC00E09C51 /* companion_quad.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3581D81431D5FC00E09C51 /* companion_quad.c */; };
AF3581E21431D5FC00E09C51 /* companion_quad.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3581D81431D5FC00E09C51 /* companion_quad.c */; };
- AF3581E31431D5FC00E09C51 /* companion.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3581D91431D5FC00E09C51 /* companion.c */; };
- AF3581E41431D5FC00E09C51 /* companion.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3581D91431D5FC00E09C51 /* companion.c */; };
AF3581E51431D5FC00E09C51 /* companion.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3581D91431D5FC00E09C51 /* companion.c */; };
AF3581E81431D61D00E09C51 /* companioncube.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF3581E61431D61D00E09C51 /* companioncube.xml */; };
AF3581FF143330F900E09C51 /* voronoi.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF0DCA610C4CBB8E00D76972 /* voronoi.xml */; };
AF4FF4C10D52CBDE00666F98 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
AF4FF4D10D52CC8400666F98 /* cubicgrid.c in Sources */ = {isa = PBXBuildFile; fileRef = AF4FF4D00D52CC8400666F98 /* cubicgrid.c */; };
AF4FF4D40D52CCAA00666F98 /* cubicgrid.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF4FF4D30D52CCAA00666F98 /* cubicgrid.xml */; };
- AF51FD3315845CC900E5741F /* apple2.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC2586F0988A468000655EE /* apple2.xml */; };
AF51FD3415845CD500E5741F /* phosphor.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC258F30988A469000655EE /* phosphor.xml */; };
AF51FD3515845D1400E5741F /* SaverListController.m in Sources */ = {isa = PBXBuildFile; fileRef = AF84AF1E15829AF000607E4C /* SaverListController.m */; };
AF51FD3615845F9900E5741F /* iSaverRunner.xib in Resources */ = {isa = PBXBuildFile; fileRef = AF56019B157DAA3D00DB2055 /* iSaverRunner.xib */; };
AF51FD3715845F9F00E5741F /* iSaverRunner.xib in Resources */ = {isa = PBXBuildFile; fileRef = AF56019B157DAA3D00DB2055 /* iSaverRunner.xib */; };
- AF51FD3815845FC300E5741F /* SaverRunner.icns in Resources */ = {isa = PBXBuildFile; fileRef = AF2D522513E954A0002AA818 /* SaverRunner.icns */; };
AF51FD3915845FCB00E5741F /* SaverRunner.icns in Resources */ = {isa = PBXBuildFile; fileRef = AF2D522513E954A0002AA818 /* SaverRunner.icns */; };
AF51FD3A15845FD300E5741F /* iSaverRunner29.png in Resources */ = {isa = PBXBuildFile; fileRef = AF01295A157D5C2C00C396E1 /* iSaverRunner29.png */; };
AF51FD3B15845FD800E5741F /* iSaverRunner29.png in Resources */ = {isa = PBXBuildFile; fileRef = AF01295A157D5C2C00C396E1 /* iSaverRunner29.png */; };
AF6427BE09A2DF47000F4CD4 /* bubbles-default.c in Sources */ = {isa = PBXBuildFile; fileRef = AF6427BB09A2DF47000F4CD4 /* bubbles-default.c */; };
AF6427BF09A2DF47000F4CD4 /* bubbles.c in Sources */ = {isa = PBXBuildFile; fileRef = AF6427BC09A2DF47000F4CD4 /* bubbles.c */; };
AF69640B0E4FE3470085DBCE /* teapot.c in Sources */ = {isa = PBXBuildFile; fileRef = AFC211930E4E30C800D87B6E /* teapot.c */; };
- AF6D7ED4158567240080DDC4 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; };
- AF6D7ED7158567420080DDC4 /* xscreensaver-text in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF0B09CA6FF900EE1051 /* xscreensaver-text */; };
- AF6D7ED81585674C0080DDC4 /* xscreensaver-text in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF0B09CA6FF900EE1051 /* xscreensaver-text */; };
+ AF7511051782B5B900380EA1 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
+ AF7511081782B5B900380EA1 /* libjwxyz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AF4808C1098C3B6C00FB32B8 /* libjwxyz.a */; };
+ AF7511091782B5B900380EA1 /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
+ AF75110A1782B5B900380EA1 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+ AF75110B1782B5B900380EA1 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
+ AF75110C1782B5B900380EA1 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF48112B0990A2C700FB32B8 /* Carbon.framework */; };
+ AF7511151782B64300380EA1 /* kaleidocycle.c in Sources */ = {isa = PBXBuildFile; fileRef = AF7511141782B64300380EA1 /* kaleidocycle.c */; };
AF7776EA09B63ABF00EA3033 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
AF77770209B63B3900EA3033 /* phosphor.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC258F30988A469000655EE /* phosphor.xml */; };
AF77770409B63B5F00EA3033 /* phosphor.c in Sources */ = {isa = PBXBuildFile; fileRef = AF77770309B63B5F00EA3033 /* phosphor.c */; };
AF78D179142DD8F3002AAF77 /* voronoi.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF0DCA610C4CBB8E00D76972 /* voronoi.xml */; };
AF78D17B142DD8F3002AAF77 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
AF78D17C142DD8F3002AAF77 /* voronoi.c in Sources */ = {isa = PBXBuildFile; fileRef = AF0DCA5F0C4CBB7300D76972 /* voronoi.c */; };
- AF78D18B142DD96E002AAF77 /* hilbert.c in Sources */ = {isa = PBXBuildFile; fileRef = AF78D18A142DD96E002AAF77 /* hilbert.c */; };
- AF78D18C142DD96E002AAF77 /* hilbert.c in Sources */ = {isa = PBXBuildFile; fileRef = AF78D18A142DD96E002AAF77 /* hilbert.c */; };
AF78D18D142DD96E002AAF77 /* hilbert.c in Sources */ = {isa = PBXBuildFile; fileRef = AF78D18A142DD96E002AAF77 /* hilbert.c */; };
AF78D191142DD99B002AAF77 /* hilbert.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF78D18E142DD99A002AAF77 /* hilbert.xml */; };
AF794F6A099748450059A8B0 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
AFA5638F0993980D00F3E977 /* timetunnel.c in Sources */ = {isa = PBXBuildFile; fileRef = AFA5638E0993980D00F3E977 /* timetunnel.c */; };
AFA563B8099398F700F3E977 /* juggler3d.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC258D10988A468000655EE /* juggler3d.xml */; };
AFA563BA0993991300F3E977 /* juggler3d.c in Sources */ = {isa = PBXBuildFile; fileRef = AFA563B90993991300F3E977 /* juggler3d.c */; };
+ AFAA6B2B1773863000DE720C /* iSaverRunner29t.png in Resources */ = {isa = PBXBuildFile; fileRef = AF7E080315932A1600D81407 /* iSaverRunner29t.png */; };
+ AFAA6B2C1773866200DE720C /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AFC6BBC1161CE07E0084EDB1 /* Default-568h@2x.png */; };
+ AFAA6B2D1773870700DE720C /* apple2-main.c in Sources */ = {isa = PBXBuildFile; fileRef = AF9D4E0509B5BC9D006E59CF /* apple2-main.c */; };
+ AFAA6B2E1773870700DE720C /* apple2.c in Sources */ = {isa = PBXBuildFile; fileRef = AF9D4DD309B5B990006E59CF /* apple2.c */; };
+ AFAA6B2F1773871900DE720C /* analogtv.c in Sources */ = {isa = PBXBuildFile; fileRef = AF9D4CFA09B5AC94006E59CF /* analogtv.c */; };
+ AFAA6B301773876900DE720C /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFEB9C3A1590054B003974F3 /* OpenGLES.framework */; };
+ AFAA6B311773876E00DE720C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFEB9C3815900514003974F3 /* UIKit.framework */; };
+ AFAA6B321773877300DE720C /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF561DF715969C5B007CA5ED /* AssetsLibrary.framework */; };
+ AFAA6B331773877800DE720C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFEB9C3C15900558003974F3 /* Foundation.framework */; };
+ AFAA6B341773877C00DE720C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFEB9C3E1590056A003974F3 /* CoreGraphics.framework */; };
+ AFAA6B351773878000DE720C /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF0FAF3B159BAC7B00BCE2F7 /* CoreText.framework */; };
+ AFAA6B361773878400DE720C /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFEB9C3F1590056A003974F3 /* QuartzCore.framework */; };
+ AFAA6B391773923900DE720C /* iSaverRunner29t.png in Resources */ = {isa = PBXBuildFile; fileRef = AF7E080315932A1600D81407 /* iSaverRunner29t.png */; };
+ AFAA6B3A1773923D00DE720C /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AFC6BBC1161CE07E0084EDB1 /* Default-568h@2x.png */; };
+ AFAA6B3B1773926C00DE720C /* phosphor.c in Sources */ = {isa = PBXBuildFile; fileRef = AF77770309B63B5F00EA3033 /* phosphor.c */; };
+ AFAA6B3D177392DD00DE720C /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFEB9C3A1590054B003974F3 /* OpenGLES.framework */; };
+ AFAA6B3E177392E000DE720C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFEB9C3815900514003974F3 /* UIKit.framework */; };
+ AFAA6B3F177392E400DE720C /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF561DF715969C5B007CA5ED /* AssetsLibrary.framework */; };
+ AFAA6B40177392E800DE720C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFEB9C3C15900558003974F3 /* Foundation.framework */; };
+ AFAA6B41177392EC00DE720C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFEB9C3E1590056A003974F3 /* CoreGraphics.framework */; };
+ AFAA6B42177392F000DE720C /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF0FAF3B159BAC7B00BCE2F7 /* CoreText.framework */; };
+ AFAA6B43177392F600DE720C /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFEB9C3F1590056A003974F3 /* QuartzCore.framework */; };
+ AFAA6B451773F07800DE720C /* ios-function-table.m in Sources */ = {isa = PBXBuildFile; fileRef = AFAA6B441773F07700DE720C /* ios-function-table.m */; };
+ AFAA6B461773F30500DE720C /* ios-function-table.m in Sources */ = {isa = PBXBuildFile; fileRef = AFAA6B441773F07700DE720C /* ios-function-table.m */; };
+ AFAA6B471773F35600DE720C /* ios-function-table.m in Sources */ = {isa = PBXBuildFile; fileRef = AFAA6B441773F07700DE720C /* ios-function-table.m */; };
AFAD462309D5F4DA00AB5F95 /* grabclient.c in Sources */ = {isa = PBXBuildFile; fileRef = AFAD462209D5F4DA00AB5F95 /* grabclient.c */; };
+ AFB591AE178B812C00EA4005 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
+ AFB591B0178B812C00EA4005 /* libjwxyz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AF4808C1098C3B6C00FB32B8 /* libjwxyz.a */; };
+ AFB591B1178B812C00EA4005 /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
+ AFB591B2178B812C00EA4005 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+ AFB591B3178B812C00EA4005 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
+ AFB591B4178B812C00EA4005 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF48112B0990A2C700FB32B8 /* Carbon.framework */; };
+ AFB591BE178B81E600EA4005 /* hexadrop.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFB591BC178B81E600EA4005 /* hexadrop.xml */; };
+ AFB591BF178B81E600EA4005 /* hexadrop.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFB591BC178B81E600EA4005 /* hexadrop.xml */; };
+ AFB591C0178B81E600EA4005 /* hexadrop.c in Sources */ = {isa = PBXBuildFile; fileRef = AFB591BD178B81E600EA4005 /* hexadrop.c */; };
+ AFB591C1178B81E600EA4005 /* hexadrop.c in Sources */ = {isa = PBXBuildFile; fileRef = AFB591BD178B81E600EA4005 /* hexadrop.c */; };
+ AFB8A69B1782BA34004EDB85 /* kaleidocycle.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFB8A69A1782BA34004EDB85 /* kaleidocycle.xml */; };
+ AFB8A69C1782BF6C004EDB85 /* kaleidocycle.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFB8A69A1782BA34004EDB85 /* kaleidocycle.xml */; };
+ AFB8A69D1782BFA6004EDB85 /* kaleidocycle.c in Sources */ = {isa = PBXBuildFile; fileRef = AF7511141782B64300380EA1 /* kaleidocycle.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; };
AFBF893E0E41D930006A2D66 /* fps.c in Sources */ = {isa = PBXBuildFile; fileRef = AFBF893C0E41D930006A2D66 /* fps.c */; };
AFBF893F0E41D930006A2D66 /* fps.h in Headers */ = {isa = PBXBuildFile; fileRef = AFBF893D0E41D930006A2D66 /* fps.h */; };
AFBF89AF0E423FC3006A2D66 /* fps-gl.c in Sources */ = {isa = PBXBuildFile; fileRef = AFBF89AE0E423FC3006A2D66 /* fps-gl.c */; };
AFBF89B20E424036006A2D66 /* fpsI.h in Headers */ = {isa = PBXBuildFile; fileRef = AFBF89B10E424036006A2D66 /* fpsI.h */; };
+ AFBFE74F178642DC00432B21 /* SaverRunner.nib in Resources */ = {isa = PBXBuildFile; fileRef = AF9772E10989DFC6001F8B92 /* SaverRunner.nib */; };
+ AFBFE750178642DC00432B21 /* SaverRunner.icns in Resources */ = {isa = PBXBuildFile; fileRef = AF2D522513E954A0002AA818 /* SaverRunner.icns */; };
+ AFBFE752178642DC00432B21 /* SaverRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = AFE1FD400981E32E00F7970E /* SaverRunner.m */; };
+ AFBFE753178642DC00432B21 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
+ AFBFE754178642DC00432B21 /* SaverListController.m in Sources */ = {isa = PBXBuildFile; fileRef = AF84AF1E15829AF000607E4C /* SaverListController.m */; };
+ AFBFE756178642DC00432B21 /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
+ AFBFE757178642DC00432B21 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+ AFBFE758178642DC00432B21 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
+ AFBFE759178642DC00432B21 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF48112B0990A2C700FB32B8 /* Carbon.framework */; };
+ AFBFE765178643B200432B21 /* Apple2.saver in Resources */ = {isa = PBXBuildFile; fileRef = AF9D4DFE09B5BB19006E59CF /* Apple2.saver */; };
+ AFBFE76F178647FE00432B21 /* SaverRunner.nib in Resources */ = {isa = PBXBuildFile; fileRef = AF9772E10989DFC6001F8B92 /* SaverRunner.nib */; };
+ AFBFE770178647FE00432B21 /* SaverRunner.icns in Resources */ = {isa = PBXBuildFile; fileRef = AF2D522513E954A0002AA818 /* SaverRunner.icns */; };
+ AFBFE772178647FE00432B21 /* SaverRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = AFE1FD400981E32E00F7970E /* SaverRunner.m */; };
+ AFBFE773178647FE00432B21 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
+ AFBFE774178647FE00432B21 /* SaverListController.m in Sources */ = {isa = PBXBuildFile; fileRef = AF84AF1E15829AF000607E4C /* SaverListController.m */; };
+ AFBFE776178647FE00432B21 /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
+ AFBFE777178647FE00432B21 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+ AFBFE778178647FE00432B21 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
+ AFBFE779178647FE00432B21 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF48112B0990A2C700FB32B8 /* Carbon.framework */; };
+ AFBFE7831786483B00432B21 /* Phosphor.saver in Resources */ = {isa = PBXBuildFile; fileRef = AF7776F609B63ABF00EA3033 /* Phosphor.saver */; };
+ AFBFE78B17895CD000432B21 /* apple2.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC2586F0988A468000655EE /* apple2.xml */; };
AFC211950E4E30C800D87B6E /* teapot.c in Sources */ = {isa = PBXBuildFile; fileRef = AFC211930E4E30C800D87B6E /* teapot.c */; };
AFC6BBC2161CE07E0084EDB1 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AFC6BBC1161CE07E0084EDB1 /* Default-568h@2x.png */; };
AFC7592D158D8E8B00C5458E /* textclient.c in Sources */ = {isa = PBXBuildFile; fileRef = AFC7592B158D8E8B00C5458E /* textclient.c */; };
AFD573630997411200BA26F7 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
AFD573700997418D00BA26F7 /* strange.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC2591D0988A469000655EE /* strange.xml */; };
AFD57372099741A200BA26F7 /* strange.c in Sources */ = {isa = PBXBuildFile; fileRef = AFD57371099741A200BA26F7 /* strange.c */; };
+ AFDA6595178A52B70070D24B /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
+ AFDA6597178A52B70070D24B /* libjwxyz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AF4808C1098C3B6C00FB32B8 /* libjwxyz.a */; };
+ AFDA6598178A52B70070D24B /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
+ AFDA6599178A52B70070D24B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+ AFDA659A178A52B70070D24B /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
+ AFDA659B178A52B70070D24B /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF48112B0990A2C700FB32B8 /* Carbon.framework */; };
+ AFDA65A5178A541A0070D24B /* unknownpleasures.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFDA65A3178A541A0070D24B /* unknownpleasures.xml */; };
+ AFDA65A6178A541A0070D24B /* unknownpleasures.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFDA65A3178A541A0070D24B /* unknownpleasures.xml */; };
+ AFDA65A7178A541A0070D24B /* unknownpleasures.c in Sources */ = {isa = PBXBuildFile; fileRef = AFDA65A4178A541A0070D24B /* unknownpleasures.c */; };
+ AFDA65A8178A541A0070D24B /* unknownpleasures.c in Sources */ = {isa = PBXBuildFile; fileRef = AFDA65A4178A541A0070D24B /* unknownpleasures.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; };
AFE2A45C0E2E904600ADB298 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
AFE2A4730E2E90E300ADB298 /* skytentacles.c in Sources */ = {isa = PBXBuildFile; fileRef = AFE2A4720E2E90E300ADB298 /* skytentacles.c */; };
AFE2A4750E2E911200ADB298 /* skytentacles.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFE2A4740E2E911200ADB298 /* skytentacles.xml */; };
AFEB9C3D15900558003974F3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFEB9C3C15900558003974F3 /* Foundation.framework */; };
AFEB9C401590056A003974F3 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFEB9C3E1590056A003974F3 /* CoreGraphics.framework */; };
AFEB9C411590056A003974F3 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFEB9C3F1590056A003974F3 /* QuartzCore.framework */; };
+ AFF2868617860E830050A578 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
+ AFF2868817860E830050A578 /* libjwxyz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AF4808C1098C3B6C00FB32B8 /* libjwxyz.a */; };
+ AFF2868917860E830050A578 /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
+ AFF2868A17860E830050A578 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+ AFF2868B17860E830050A578 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
+ AFF2868C17860E830050A578 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF48112B0990A2C700FB32B8 /* Carbon.framework */; };
+ AFF28696178611720050A578 /* quasicrystal.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFF28694178611720050A578 /* quasicrystal.xml */; };
+ AFF28697178611720050A578 /* quasicrystal.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFF28694178611720050A578 /* quasicrystal.xml */; };
+ AFF28698178611720050A578 /* quasicrystal.c in Sources */ = {isa = PBXBuildFile; fileRef = AFF28695178611720050A578 /* quasicrystal.c */; };
+ AFF28699178611720050A578 /* quasicrystal.c in Sources */ = {isa = PBXBuildFile; fileRef = AFF28695178611720050A578 /* quasicrystal.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; };
AFF4633C0C4403E400EE6509 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
AFF4634A0C44044F00EE6509 /* cwaves.c in Sources */ = {isa = PBXBuildFile; fileRef = AFF463490C44044E00EE6509 /* cwaves.c */; };
AFF4634C0C44046500EE6509 /* cwaves.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFF4634B0C44046500EE6509 /* cwaves.xml */; };
remoteGlobalIDString = AF4808C0098C3B6C00FB32B8;
remoteInfo = jwxyz;
};
- AF2D4F8A13E91108002AA818 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = AF2D4F6A13E91093002AA818;
- remoteInfo = Apple2App;
- };
- AF2D4F8C13E9111D002AA818 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = AF2D4D7F13E902F5002AA818;
- remoteInfo = PhosphorApp;
- };
AF2D4F8E13E91127002AA818 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
remoteGlobalIDString = AFD570C90996B9F800BA26F7;
remoteInfo = Ant;
};
+ AF7511011782B5B900380EA1 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AF4808C0098C3B6C00FB32B8;
+ remoteInfo = jwxyz;
+ };
AF7776E609B63ABF00EA3033 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
remoteGlobalIDString = AFD571B50996D9DC00BA26F7;
remoteInfo = Juggle;
};
+ AFB591A9178B812C00EA4005 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AF4808C0098C3B6C00FB32B8;
+ remoteInfo = jwxyz;
+ };
+ AFB591C2178B821E00EA4005 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AFB591A7178B812C00EA4005;
+ remoteInfo = Hexadrop;
+ };
+ AFBFE73F1786405E00432B21 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AFF2867F17860E830050A578;
+ remoteInfo = QuasiCrystal;
+ };
+ AFBFE7411786407000432B21 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AF7510FF1782B5B900380EA1;
+ remoteInfo = Kaleidocycle;
+ };
+ AFBFE74D178642DC00432B21 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AF4808C0098C3B6C00FB32B8;
+ remoteInfo = jwxyz;
+ };
+ AFBFE7631786438900432B21 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AF9D4DEC09B5BB19006E59CF;
+ remoteInfo = Apple2;
+ };
+ AFBFE76B178647FE00432B21 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AF4808C0098C3B6C00FB32B8;
+ remoteInfo = jwxyz;
+ };
+ AFBFE7801786482B00432B21 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AF7776E409B63ABF00EA3033;
+ remoteInfo = Phosphor;
+ };
+ AFBFE784178648E600432B21 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AFBFE74B178642DC00432B21;
+ remoteInfo = "Apple2-OSX";
+ };
+ AFBFE786178648F500432B21 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AFBFE767178647FE00432B21;
+ remoteInfo = "Phosphor-OSX";
+ };
AFCAD5F80992DFE00009617A /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
remoteGlobalIDString = AF4808C0098C3B6C00FB32B8;
remoteInfo = jwxyz;
};
+ AFDA6590178A52B70070D24B /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AF4808C0098C3B6C00FB32B8;
+ remoteInfo = jwxyz;
+ };
+ AFDA65A9178A54690070D24B /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AFDA658E178A52B70070D24B;
+ remoteInfo = "Unknown Pleasures";
+ };
AFE2A4580E2E904600ADB298 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
remoteGlobalIDString = AFE6A41B0CDD7FAA002805BF;
remoteInfo = Abstractile;
};
+ AFF2868117860E830050A578 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AF4808C0098C3B6C00FB32B8;
+ remoteInfo = jwxyz;
+ };
AFF463380C4403E400EE6509 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
};
/* End PBXContainerItemProxy section */
-/* Begin PBXCopyFilesBuildPhase section */
- AF2D4DDE13E903F2002AA818 /* Copy Plugins */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 13;
- files = (
- AF2D4DBD13E90372002AA818 /* Phosphor.saver in Copy Plugins */,
- );
- name = "Copy Plugins";
- runOnlyForDeploymentPostprocessing = 0;
- };
- AF2D4F7213E91093002AA818 /* Copy Plugins */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 13;
- files = (
- AF2D4FA913E9115E002AA818 /* Apple2.saver in Copy Plugins */,
- );
- name = "Copy Plugins";
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXCopyFilesBuildPhase section */
-
/* Begin PBXFileReference section */
089C165DFE840E0CC02AAC07 /* InfoPlist.strings */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = InfoPlist.strings; path = OSX/English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
AF6427BB09A2DF47000F4CD4 /* bubbles-default.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "bubbles-default.c"; path = "hacks/bubbles-default.c"; sourceTree = "<group>"; };
AF6427BC09A2DF47000F4CD4 /* bubbles.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = bubbles.c; path = hacks/bubbles.c; sourceTree = "<group>"; };
AF6427BD09A2DF47000F4CD4 /* bubbles.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = bubbles.h; path = hacks/bubbles.h; sourceTree = "<group>"; };
+ AF7511121782B5B900380EA1 /* Kaleidocycle.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Kaleidocycle.saver; sourceTree = BUILT_PRODUCTS_DIR; };
+ AF7511141782B64300380EA1 /* kaleidocycle.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = kaleidocycle.c; path = hacks/glx/kaleidocycle.c; sourceTree = "<group>"; };
+ AF7511161782B66400380EA1 /* kaleidescope.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = kaleidescope.xml; sourceTree = "<group>"; };
AF7776F609B63ABF00EA3033 /* Phosphor.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Phosphor.saver; sourceTree = BUILT_PRODUCTS_DIR; };
AF77770309B63B5F00EA3033 /* phosphor.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = phosphor.c; path = hacks/phosphor.c; sourceTree = "<group>"; };
AF77772A09B6416100EA3033 /* Pacman.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Pacman.saver; sourceTree = BUILT_PRODUCTS_DIR; };
AFA5638E0993980D00F3E977 /* timetunnel.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = timetunnel.c; path = hacks/glx/timetunnel.c; sourceTree = "<group>"; };
AFA563B6099398BB00F3E977 /* Juggler3D.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Juggler3D.saver; sourceTree = BUILT_PRODUCTS_DIR; };
AFA563B90993991300F3E977 /* juggler3d.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = juggler3d.c; path = hacks/glx/juggler3d.c; sourceTree = "<group>"; };
+ AFAA6B441773F07700DE720C /* ios-function-table.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "ios-function-table.m"; path = "OSX/ios-function-table.m"; sourceTree = "<group>"; };
AFAD462209D5F4DA00AB5F95 /* grabclient.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = grabclient.c; path = utils/grabclient.c; sourceTree = "<group>"; };
+ AFB591BA178B812C00EA4005 /* Hexadrop.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Hexadrop.saver; sourceTree = BUILT_PRODUCTS_DIR; };
+ AFB591BC178B81E600EA4005 /* hexadrop.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = hexadrop.xml; sourceTree = "<group>"; };
+ AFB591BD178B81E600EA4005 /* hexadrop.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = hexadrop.c; path = hacks/hexadrop.c; sourceTree = "<group>"; };
AFB5A06B0981F4C600871B16 /* screenhack.h */ = {isa = PBXFileReference; fileEncoding = 12; lastKnownFileType = sourcecode.c.h; name = screenhack.h; path = hacks/screenhack.h; sourceTree = "<group>"; };
AFB5A0ED0981FF8B00871B16 /* usleep.c */ = {isa = PBXFileReference; fileEncoding = 12; lastKnownFileType = sourcecode.c.c; name = usleep.c; path = utils/usleep.c; sourceTree = "<group>"; };
AFB5A0EE0981FF8B00871B16 /* usleep.h */ = {isa = PBXFileReference; fileEncoding = 12; lastKnownFileType = sourcecode.c.h; name = usleep.h; path = utils/usleep.h; sourceTree = "<group>"; };
+ AFB8A69A1782BA34004EDB85 /* kaleidocycle.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = kaleidocycle.xml; sourceTree = "<group>"; };
AFBF893C0E41D930006A2D66 /* fps.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = fps.c; path = hacks/fps.c; sourceTree = "<group>"; };
AFBF893D0E41D930006A2D66 /* fps.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = fps.h; path = hacks/fps.h; sourceTree = "<group>"; };
AFBF89AE0E423FC3006A2D66 /* fps-gl.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "fps-gl.c"; path = "hacks/glx/fps-gl.c"; sourceTree = "<group>"; };
AFBF89B10E424036006A2D66 /* fpsI.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = fpsI.h; path = hacks/fpsI.h; sourceTree = "<group>"; };
+ AFBFE75E178642DC00432B21 /* Apple2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Apple2.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ AFBFE77E178647FE00432B21 /* Phosphor.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Phosphor.app; sourceTree = BUILT_PRODUCTS_DIR; };
AFC211930E4E30C800D87B6E /* teapot.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = teapot.c; path = hacks/glx/teapot.c; sourceTree = "<group>"; };
AFC211940E4E30C800D87B6E /* teapot.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = teapot.h; path = hacks/glx/teapot.h; sourceTree = "<group>"; };
AFC254B909873AF9000655EE /* screenhackI.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = screenhackI.h; path = hacks/screenhackI.h; sourceTree = "<group>"; };
AFD5730C099702C800BA26F7 /* julia.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = julia.c; path = hacks/julia.c; sourceTree = "<group>"; };
AFD5736D0997411200BA26F7 /* Strange.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Strange.saver; sourceTree = BUILT_PRODUCTS_DIR; };
AFD57371099741A200BA26F7 /* strange.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = strange.c; path = hacks/strange.c; sourceTree = "<group>"; };
+ AFDA65A1178A52B70070D24B /* UnknownPleasures.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UnknownPleasures.saver; sourceTree = BUILT_PRODUCTS_DIR; };
+ AFDA65A3178A541A0070D24B /* unknownpleasures.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = unknownpleasures.xml; sourceTree = "<group>"; };
+ AFDA65A4178A541A0070D24B /* unknownpleasures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = unknownpleasures.c; path = hacks/glx/unknownpleasures.c; sourceTree = "<group>"; };
AFE1FD3F0981E32E00F7970E /* SaverRunner.h */ = {isa = PBXFileReference; fileEncoding = 12; lastKnownFileType = sourcecode.c.h; name = SaverRunner.h; path = OSX/SaverRunner.h; sourceTree = "<group>"; };
AFE1FD400981E32E00F7970E /* SaverRunner.m */ = {isa = PBXFileReference; fileEncoding = 12; lastKnownFileType = sourcecode.c.objc; name = SaverRunner.m; path = OSX/SaverRunner.m; sourceTree = "<group>"; };
AFE1FD410981E32E00F7970E /* InvertedSlider.h */ = {isa = PBXFileReference; fileEncoding = 12; lastKnownFileType = sourcecode.c.h; name = InvertedSlider.h; path = OSX/InvertedSlider.h; sourceTree = "<group>"; };
AFEB9C3C15900558003974F3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
AFEB9C3E1590056A003974F3 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; };
AFEB9C3F1590056A003974F3 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; };
+ AFF2869217860E830050A578 /* QuasiCrystal.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = QuasiCrystal.saver; sourceTree = BUILT_PRODUCTS_DIR; };
+ AFF28694178611720050A578 /* quasicrystal.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = quasicrystal.xml; sourceTree = "<group>"; };
+ AFF28695178611720050A578 /* quasicrystal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = quasicrystal.c; path = hacks/glx/quasicrystal.c; sourceTree = "<group>"; };
AFF463470C4403E400EE6509 /* CWaves.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CWaves.saver; sourceTree = BUILT_PRODUCTS_DIR; };
AFF463490C44044E00EE6509 /* cwaves.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = cwaves.c; path = hacks/cwaves.c; sourceTree = "<group>"; };
AFF4634B0C44046500EE6509 /* cwaves.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = cwaves.xml; sourceTree = "<group>"; };
buildActionMask = 2147483647;
files = (
AF1FD7F3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
- AF1FD7F4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
- AF2C322215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
- AF1FD7F5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
- AF1FD7F6158FF96500C40F17 /* Carbon.framework in Frameworks */,
+ AFAA6B3D177392DD00DE720C /* OpenGLES.framework in Frameworks */,
+ AFAA6B3E177392E000DE720C /* UIKit.framework in Frameworks */,
+ AFAA6B3F177392E400DE720C /* AssetsLibrary.framework in Frameworks */,
+ AFAA6B40177392E800DE720C /* Foundation.framework in Frameworks */,
+ AFAA6B41177392EC00DE720C /* CoreGraphics.framework in Frameworks */,
+ AFAA6B42177392F000DE720C /* CoreText.framework in Frameworks */,
+ AFAA6B43177392F600DE720C /* QuartzCore.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
buildActionMask = 2147483647;
files = (
AF1FD723158FF96500C40F17 /* libjwxyz.a in Frameworks */,
- AF1FD724158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
- AF2C31EE15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
- AF1FD725158FF96500C40F17 /* Cocoa.framework in Frameworks */,
- AF1FD726158FF96500C40F17 /* Carbon.framework in Frameworks */,
+ AFAA6B301773876900DE720C /* OpenGLES.framework in Frameworks */,
+ AFAA6B311773876E00DE720C /* UIKit.framework in Frameworks */,
+ AFAA6B321773877300DE720C /* AssetsLibrary.framework in Frameworks */,
+ AFAA6B331773877800DE720C /* Foundation.framework in Frameworks */,
+ AFAA6B341773877C00DE720C /* CoreGraphics.framework in Frameworks */,
+ AFAA6B351773878000DE720C /* CoreText.framework in Frameworks */,
+ AFAA6B361773878400DE720C /* QuartzCore.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AF7511071782B5B900380EA1 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AF7511081782B5B900380EA1 /* libjwxyz.a in Frameworks */,
+ AF7511091782B5B900380EA1 /* ScreenSaver.framework in Frameworks */,
+ AF75110A1782B5B900380EA1 /* QuartzCore.framework in Frameworks */,
+ AF75110B1782B5B900380EA1 /* Cocoa.framework in Frameworks */,
+ AF75110C1782B5B900380EA1 /* Carbon.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AF7776EE09B63ABF00EA3033 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AFB591AF178B812C00EA4005 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFB591B0178B812C00EA4005 /* libjwxyz.a in Frameworks */,
+ AFB591B1178B812C00EA4005 /* ScreenSaver.framework in Frameworks */,
+ AFB591B2178B812C00EA4005 /* QuartzCore.framework in Frameworks */,
+ AFB591B3178B812C00EA4005 /* Cocoa.framework in Frameworks */,
+ AFB591B4178B812C00EA4005 /* Carbon.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ AFBFE755178642DC00432B21 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFBFE756178642DC00432B21 /* ScreenSaver.framework in Frameworks */,
+ AFBFE757178642DC00432B21 /* QuartzCore.framework in Frameworks */,
+ AFBFE758178642DC00432B21 /* Cocoa.framework in Frameworks */,
+ AFBFE759178642DC00432B21 /* Carbon.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ AFBFE775178647FE00432B21 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFBFE776178647FE00432B21 /* ScreenSaver.framework in Frameworks */,
+ AFBFE777178647FE00432B21 /* QuartzCore.framework in Frameworks */,
+ AFBFE778178647FE00432B21 /* Cocoa.framework in Frameworks */,
+ AFBFE779178647FE00432B21 /* Carbon.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AFD51B240F063B4A00471C02 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AFDA6596178A52B70070D24B /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFDA6597178A52B70070D24B /* libjwxyz.a in Frameworks */,
+ AFDA6598178A52B70070D24B /* ScreenSaver.framework in Frameworks */,
+ AFDA6599178A52B70070D24B /* QuartzCore.framework in Frameworks */,
+ AFDA659A178A52B70070D24B /* Cocoa.framework in Frameworks */,
+ AFDA659B178A52B70070D24B /* Carbon.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AFE2A45E0E2E904600ADB298 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AFF2868717860E830050A578 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFF2868817860E830050A578 /* libjwxyz.a in Frameworks */,
+ AFF2868917860E830050A578 /* ScreenSaver.framework in Frameworks */,
+ AFF2868A17860E830050A578 /* QuartzCore.framework in Frameworks */,
+ AFF2868B17860E830050A578 /* Cocoa.framework in Frameworks */,
+ AFF2868C17860E830050A578 /* Carbon.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AFF4633E0C4403E400EE6509 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
AF3581D51431D47B00E09C51 /* CompanionCube.saver */,
AF358216143330F900E09C51 /* TronBit.saver */,
AF91898F158FC00A002B5D1E /* XScreenSaver.app */,
+ AF7511121782B5B900380EA1 /* Kaleidocycle.saver */,
+ AFF2869217860E830050A578 /* QuasiCrystal.saver */,
+ AFBFE75E178642DC00432B21 /* Apple2.app */,
+ AFBFE77E178647FE00432B21 /* Phosphor.app */,
+ AFDA65A1178A52B70070D24B /* UnknownPleasures.saver */,
+ AFB591BA178B812C00EA4005 /* Hexadrop.saver */,
);
name = Products;
sourceTree = "<group>";
AF84AF1E15829AF000607E4C /* SaverListController.m */,
AFE1FD3F0981E32E00F7970E /* SaverRunner.h */,
AFE1FD400981E32E00F7970E /* SaverRunner.m */,
+ AFAA6B441773F07700DE720C /* ios-function-table.m */,
);
name = SaverRunner;
sourceTree = "<group>";
AF477266099D5768001F091E /* halftone.c */,
AF480C29098E295D00FB32B8 /* halo.c */,
AF480C2F098E2A6700FB32B8 /* helix.c */,
+ AFB591BD178B81E600EA4005 /* hexadrop.c */,
AF64262209A18E1E000F4CD4 /* hyperball.c */,
AF6425DF09A188FB000F4CD4 /* hypercube.c */,
AF47743A099D7CEA001F091E /* ifs.c */,
AF35EB250E6382BA00691F2F /* jigsaw.c */,
AFA55F210993620200F3E977 /* jigglypuff.c */,
AFA563B90993991300F3E977 /* juggler3d.c */,
+ AF7511141782B64300380EA1 /* kaleidocycle.c */,
AFA55F3F0993626E00F3E977 /* klein.c */,
AFA55A8E0993369100F3E977 /* lament.c */,
AFA55DDD09935DB600F3E977 /* lavalite.c */,
AFA560C3099371D500F3E977 /* polytopes.c */,
AFA5621C099384F600F3E977 /* providence.c */,
AFA55B3F09933EC600F3E977 /* pulsar.c */,
+ AFF28695178611720050A578 /* quasicrystal.c */,
AFA55E0609935EB800F3E977 /* queens.c */,
AFA559EA0993335C00F3E977 /* rubik.c */,
AF32D9FA0F3AD1200080F535 /* rubikblocks.c */,
AF998EF80A083E750051049D /* topblock.c */,
AF083A58099312B000277BE9 /* tunnel_draw.c */,
AF083A5D099312DB00277BE9 /* tunnel_draw.h */,
+ AFDA65A4178A541A0070D24B /* unknownpleasures.c */,
AF0DCA5F0C4CBB7300D76972 /* voronoi.c */,
AF0839AD09930C4900277BE9 /* whale.c */,
);
AFC258C20988A468000655EE /* halftone.xml */,
AFC258C30988A468000655EE /* halo.xml */,
AFC258C40988A468000655EE /* helix.xml */,
+ AFB591BC178B81E600EA4005 /* hexadrop.xml */,
AF78D18E142DD99A002AAF77 /* hilbert.xml */,
AFC258C50988A468000655EE /* hopalong.xml */,
AFC258C60988A468000655EE /* hyperball.xml */,
AFC258D10988A468000655EE /* juggler3d.xml */,
AFC258D20988A468000655EE /* julia.xml */,
AFC258D30988A468000655EE /* kaleidescope.xml */,
+ AF7511161782B66400380EA1 /* kaleidescope.xml */,
+ AFB8A69A1782BA34004EDB85 /* kaleidocycle.xml */,
AFC258D40988A468000655EE /* klein.xml */,
AFC258D50988A468000655EE /* kumppa.xml */,
AFC258D60988A468000655EE /* lament.xml */,
AFC258FD0988A469000655EE /* pulsar.xml */,
AFC258FE0988A469000655EE /* pyro.xml */,
AFC258FF0988A469000655EE /* qix.xml */,
+ AFF28694178611720050A578 /* quasicrystal.xml */,
AFC259000988A469000655EE /* queens.xml */,
AFCCCBAD09BFE4B000353F4D /* rdbomb.xml */,
AFC259030988A469000655EE /* ripples.xml */,
AFC259280988A469000655EE /* vermiculate.xml */,
AFC259290988A469000655EE /* vidwhacker.xml */,
AFC2592A0988A469000655EE /* vines.xml */,
+ AFDA65A3178A541A0070D24B /* unknownpleasures.xml */,
AF0DCA610C4CBB8E00D76972 /* voronoi.xml */,
AFC2592B0988A469000655EE /* wander.xml */,
AFC2592C0988A469000655EE /* webcollage.xml */,
productReference = AF1A17730D6D6EE3008AF328 /* LCDscrub.saver */;
productType = "com.apple.product-type.bundle";
};
- AF2D4D7F13E902F5002AA818 /* PhosphorApp */ = {
+ AF2D4D7F13E902F5002AA818 /* Phosphor-iOS */ = {
isa = PBXNativeTarget;
- buildConfigurationList = AF2D4D8C13E902F5002AA818 /* Build configuration list for PBXNativeTarget "PhosphorApp" */;
+ buildConfigurationList = AF2D4D8C13E902F5002AA818 /* Build configuration list for PBXNativeTarget "Phosphor-iOS" */;
buildPhases = (
AF2D4D8213E902F5002AA818 /* Resources */,
- AF2D4DDE13E903F2002AA818 /* Copy Plugins */,
AF2D4D8513E902F5002AA818 /* Sources */,
AF2D4D8813E902F5002AA818 /* Frameworks */,
AF2D51F413E94AC4002AA818 /* Run Update Info Plist */,
AF2D4D8013E902F5002AA818 /* PBXTargetDependency */,
AF2D4D9E13E90347002AA818 /* PBXTargetDependency */,
);
- name = PhosphorApp;
+ name = "Phosphor-iOS";
productName = PhosphorApp;
productReference = AF2D4D8F13E902F5002AA818 /* Phosphor.app */;
productType = "com.apple.product-type.application";
};
- AF2D4F6A13E91093002AA818 /* Apple2App */ = {
+ AF2D4F6A13E91093002AA818 /* Apple2-iOS */ = {
isa = PBXNativeTarget;
- buildConfigurationList = AF2D4F7B13E91093002AA818 /* Build configuration list for PBXNativeTarget "Apple2App" */;
+ buildConfigurationList = AF2D4F7B13E91093002AA818 /* Build configuration list for PBXNativeTarget "Apple2-iOS" */;
buildPhases = (
AF2D4F6F13E91093002AA818 /* Resources */,
- AF2D4F7213E91093002AA818 /* Copy Plugins */,
AF2D4F7413E91093002AA818 /* Sources */,
AF2D4F7713E91093002AA818 /* Frameworks */,
AF2D51FD13E94B2D002AA818 /* Run Update Info Plist */,
buildRules = (
);
dependencies = (
- AF2D4F8F13E91127002AA818 /* PBXTargetDependency */,
AF2D4F6B13E91093002AA818 /* PBXTargetDependency */,
+ AF2D4F8F13E91127002AA818 /* PBXTargetDependency */,
);
- name = Apple2App;
+ name = "Apple2-iOS";
productName = Apple2App;
productReference = AF2D4F7E13E91093002AA818 /* Apple2.app */;
productType = "com.apple.product-type.application";
productReference = AF6427B809A2DE36000F4CD4 /* Bubbles.saver */;
productType = "com.apple.product-type.bundle";
};
+ AF7510FF1782B5B900380EA1 /* Kaleidocycle */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = AF75110F1782B5B900380EA1 /* Build configuration list for PBXNativeTarget "Kaleidocycle" */;
+ buildPhases = (
+ AF7511021782B5B900380EA1 /* Resources */,
+ AF7511041782B5B900380EA1 /* Sources */,
+ AF7511071782B5B900380EA1 /* Frameworks */,
+ AF75110D1782B5B900380EA1 /* Rez */,
+ AF75110E1782B5B900380EA1 /* Run Update Info Plist */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ AF7511001782B5B900380EA1 /* PBXTargetDependency */,
+ );
+ name = Kaleidocycle;
+ productName = Voronoi;
+ productReference = AF7511121782B5B900380EA1 /* Kaleidocycle.saver */;
+ productType = "com.apple.product-type.bundle";
+ };
AF7776E409B63ABF00EA3033 /* Phosphor */ = {
isa = PBXNativeTarget;
buildConfigurationList = AF7776F309B63ABF00EA3033 /* Build configuration list for PBXNativeTarget "Phosphor" */;
productReference = AFA563B6099398BB00F3E977 /* Juggler3D.saver */;
productType = "com.apple.product-type.bundle";
};
+ AFB591A7178B812C00EA4005 /* Hexadrop */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = AFB591B7178B812C00EA4005 /* Build configuration list for PBXNativeTarget "Hexadrop" */;
+ buildPhases = (
+ AFB591AA178B812C00EA4005 /* Resources */,
+ AFB591AC178B812C00EA4005 /* Sources */,
+ AFB591AF178B812C00EA4005 /* Frameworks */,
+ AFB591B5178B812C00EA4005 /* Rez */,
+ AFB591B6178B812C00EA4005 /* Run Update Info Plist */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ AFB591A8178B812C00EA4005 /* PBXTargetDependency */,
+ );
+ name = Hexadrop;
+ productName = Attraction;
+ productReference = AFB591BA178B812C00EA4005 /* Hexadrop.saver */;
+ productType = "com.apple.product-type.bundle";
+ };
+ AFBFE74B178642DC00432B21 /* Apple2-OSX */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = AFBFE75B178642DC00432B21 /* Build configuration list for PBXNativeTarget "Apple2-OSX" */;
+ buildPhases = (
+ AFBFE74E178642DC00432B21 /* Resources */,
+ AFBFE751178642DC00432B21 /* Sources */,
+ AFBFE755178642DC00432B21 /* Frameworks */,
+ AFBFE78817894FFA00432B21 /* Copy Standalone Preferences XML File */,
+ AFBFE75A178642DC00432B21 /* Run Update Info Plist */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ AFBFE7641786438900432B21 /* PBXTargetDependency */,
+ AFBFE74C178642DC00432B21 /* PBXTargetDependency */,
+ );
+ name = "Apple2-OSX";
+ productName = SaverTester;
+ productReference = AFBFE75E178642DC00432B21 /* Apple2.app */;
+ productType = "com.apple.product-type.application";
+ };
+ AFBFE767178647FE00432B21 /* Phosphor-OSX */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = AFBFE77B178647FE00432B21 /* Build configuration list for PBXNativeTarget "Phosphor-OSX" */;
+ buildPhases = (
+ AFBFE76C178647FE00432B21 /* Resources */,
+ AFBFE771178647FE00432B21 /* Sources */,
+ AFBFE775178647FE00432B21 /* Frameworks */,
+ AFBFE78917895AAF00432B21 /* Copy Standalone Preferences XML File */,
+ AFBFE77A178647FE00432B21 /* Run Update Info Plist */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ AFBFE7811786482B00432B21 /* PBXTargetDependency */,
+ AFBFE76A178647FE00432B21 /* PBXTargetDependency */,
+ );
+ name = "Phosphor-OSX";
+ productName = SaverTester;
+ productReference = AFBFE77E178647FE00432B21 /* Phosphor.app */;
+ productType = "com.apple.product-type.application";
+ };
AFD51B1B0F063B4A00471C02 /* Photopile */ = {
isa = PBXNativeTarget;
buildConfigurationList = AFD51B2D0F063B4A00471C02 /* Build configuration list for PBXNativeTarget "Photopile" */;
productReference = AFD5736D0997411200BA26F7 /* Strange.saver */;
productType = "com.apple.product-type.bundle";
};
+ AFDA658E178A52B70070D24B /* Unknown Pleasures */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = AFDA659E178A52B70070D24B /* Build configuration list for PBXNativeTarget "Unknown Pleasures" */;
+ buildPhases = (
+ AFDA6591178A52B70070D24B /* Resources */,
+ AFDA6593178A52B70070D24B /* Sources */,
+ AFDA6596178A52B70070D24B /* Frameworks */,
+ AFDA659C178A52B70070D24B /* Rez */,
+ AFDA659D178A52B70070D24B /* Run Update Info Plist */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ AFDA658F178A52B70070D24B /* PBXTargetDependency */,
+ );
+ name = "Unknown Pleasures";
+ productName = DangerBall;
+ productReference = AFDA65A1178A52B70070D24B /* UnknownPleasures.saver */;
+ productType = "com.apple.product-type.bundle";
+ };
AFE2A4560E2E904600ADB298 /* SkyTentacles */ = {
isa = PBXNativeTarget;
buildConfigurationList = AFE2A4670E2E904600ADB298 /* Build configuration list for PBXNativeTarget "SkyTentacles" */;
productReference = AFE6A42D0CDD7FAA002805BF /* Abstractile.saver */;
productType = "com.apple.product-type.bundle";
};
+ AFF2867F17860E830050A578 /* QuasiCrystal */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = AFF2868F17860E830050A578 /* Build configuration list for PBXNativeTarget "QuasiCrystal" */;
+ buildPhases = (
+ AFF2868217860E830050A578 /* Resources */,
+ AFF2868417860E830050A578 /* Sources */,
+ AFF2868717860E830050A578 /* Frameworks */,
+ AFF2868D17860E830050A578 /* Rez */,
+ AFF2868E17860E830050A578 /* Run Update Info Plist */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ AFF2868017860E830050A578 /* PBXTargetDependency */,
+ );
+ name = QuasiCrystal;
+ productName = DangerBall;
+ productReference = AFF2869217860E830050A578 /* QuasiCrystal.saver */;
+ productType = "com.apple.product-type.bundle";
+ };
AFF463360C4403E400EE6509 /* CWaves */ = {
isa = PBXNativeTarget;
buildConfigurationList = AFF463440C4403E400EE6509 /* Build configuration list for PBXNativeTarget "CWaves" */;
AF47721E099D4F67001F091E /* Anemone */,
AF4773C1099D67B9001F091E /* Anemotaxis */,
AF9D4DEC09B5BB19006E59CF /* Apple2 */,
- AF2D4F6A13E91093002AA818 /* Apple2App */,
+ AF2D4F6A13E91093002AA818 /* Apple2-iOS */,
+ AFBFE74B178642DC00432B21 /* Apple2-OSX */,
AF9770660989D2F6001F8B92 /* Attraction */,
AF975A86099C6BC300B05160 /* Barcode */,
AF47768F099DAA6F001F091E /* Blaster */,
AF477253099D5717001F091E /* Halftone */,
AF975C12099C8C1500B05160 /* Halo */,
AF480C49098E301400FB32B8 /* Helix */,
+ AFB591A7178B812C00EA4005 /* Hexadrop */,
AF477426099D7C70001F091E /* IFS */,
AF97572D099C317000B05160 /* IMSMap */,
AF477752099DB61E001F091E /* Interaggregate */,
AF4778AB099DDB79001F091E /* Penetrate */,
AF477670099DA849001F091E /* Petri */,
AF7776E409B63ABF00EA3033 /* Phosphor */,
- AF2D4D7F13E902F5002AA818 /* PhosphorApp */,
+ AF2D4D7F13E902F5002AA818 /* Phosphor-iOS */,
+ AFBFE767178647FE00432B21 /* Phosphor-OSX */,
AF477283099D5926001F091E /* Piecewise */,
AF9D4CE709B5AA8E006E59CF /* Pong */,
AF47726B099D57B9001F091E /* PopSquares */,
AFA55F06099361B700F3E977 /* JigglyPuff */,
AF35E88A0E63823600691F2F /* Jigsaw */,
AFA563A4099398BB00F3E977 /* Juggler3D */,
+ AF7510FF1782B5B900380EA1 /* Kaleidocycle */,
AFA55F2A0993622F00F3E977 /* Klein */,
AFA55A790993364300F3E977 /* Lament */,
AFA55DC809935D7000F3E977 /* Lavalite */,
AFA560AE0993718D00F3E977 /* Polytopes */,
AFA562060993849F00F3E977 /* Providence */,
AFA55B2509933E8D00F3E977 /* Pulsar */,
+ AFF2867F17860E830050A578 /* QuasiCrystal */,
AFA55DF009935E4900F3E977 /* Queens */,
AFA559CF0993330600F3E977 /* Rubik */,
AF32D9E00F3AD0B40080F535 /* RubikBlocks */,
AFA56379099397B300F3E977 /* TimeTunnel */,
AF998EDA0A083DB30051049D /* TopBlock */,
AF3581FB143330F900E09C51 /* TronBit */,
+ AFDA658E178A52B70070D24B /* Unknown Pleasures */,
AF0DCA420C4CBB0D00D76972 /* Voronoi */,
AF137D410F075C9B004DE3B2 /* Obsolete */,
AFA55CCC09934CE400F3E977 /* GLForestFire */,
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- AF2D4D8413E902F5002AA818 /* SaverRunner.nib in Resources */,
- AF2D522613E954A0002AA818 /* SaverRunner.icns in Resources */,
- AF51FD3415845CD500E5741F /* phosphor.xml in Resources */,
AF51FD3715845F9F00E5741F /* iSaverRunner.xib in Resources */,
+ AFAA6B3A1773923D00DE720C /* Default-568h@2x.png in Resources */,
AF51FD3B15845FD800E5741F /* iSaverRunner29.png in Resources */,
+ AFAA6B391773923900DE720C /* iSaverRunner29t.png in Resources */,
AF51FD3C15845FDB00E5741F /* iSaverRunner50.png in Resources */,
AF51FD3F15845FF700E5741F /* iSaverRunner57.png in Resources */,
AF51FD4015845FF900E5741F /* iSaverRunner72.png in Resources */,
AF51FD431584600300E5741F /* iSaverRunner114.png in Resources */,
- AF6D7ED7158567420080DDC4 /* xscreensaver-text in Resources */,
+ AF51FD3415845CD500E5741F /* phosphor.xml in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- AF2D4F7113E91093002AA818 /* SaverRunner.nib in Resources */,
- AF51FD3315845CC900E5741F /* apple2.xml in Resources */,
AF51FD3615845F9900E5741F /* iSaverRunner.xib in Resources */,
- AF51FD3815845FC300E5741F /* SaverRunner.icns in Resources */,
+ AFAA6B2C1773866200DE720C /* Default-568h@2x.png in Resources */,
AF51FD3A15845FD300E5741F /* iSaverRunner29.png in Resources */,
+ AFAA6B2B1773863000DE720C /* iSaverRunner29t.png in Resources */,
AF51FD3D15845FDE00E5741F /* iSaverRunner50.png in Resources */,
AF51FD3E15845FE200E5741F /* iSaverRunner57.png in Resources */,
AF51FD4115845FFC00E5741F /* iSaverRunner72.png in Resources */,
AF51FD4215845FFF00E5741F /* iSaverRunner114.png in Resources */,
- AF6D7ED4158567240080DDC4 /* xscreensaver-getimage-file in Resources */,
- AF6D7ED81585674C0080DDC4 /* xscreensaver-text in Resources */,
+ AFBFE78B17895CD000432B21 /* apple2.xml in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AF7511021782B5B900380EA1 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFB8A69B1782BA34004EDB85 /* kaleidocycle.xml in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AF7776E709B63ABF00EA3033 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ AF918983158FC00A002B5D1E /* iSaverRunner.xib in Resources */,
+ AFC6BBC2161CE07E0084EDB1 /* Default-568h@2x.png in Resources */,
AF91897E158FC00A002B5D1E /* iSaverRunner29.png in Resources */,
AF7E080415932A1600D81407 /* iSaverRunner29t.png in Resources */,
AF91897F158FC00A002B5D1E /* iSaverRunner50.png in Resources */,
AF918980158FC00A002B5D1E /* iSaverRunner57.png in Resources */,
AF918981158FC00A002B5D1E /* iSaverRunner72.png in Resources */,
AF918982158FC00A002B5D1E /* iSaverRunner114.png in Resources */,
- AF918983158FC00A002B5D1E /* iSaverRunner.xib in Resources */,
AF918AB4158FC53D002B5D1E /* abstractile.xml in Resources */,
AF918AB5158FC53D002B5D1E /* anemone.xml in Resources */,
AF918AB6158FC53D002B5D1E /* anemotaxis.xml in Resources */,
AF918B11158FC53D002B5D1E /* halftone.xml in Resources */,
AF918B12158FC53D002B5D1E /* halo.xml in Resources */,
AF918B13158FC53D002B5D1E /* helix.xml in Resources */,
+ AFB591BF178B81E600EA4005 /* hexadrop.xml in Resources */,
AF918B14158FC53D002B5D1E /* hilbert.xml in Resources */,
AF918B15158FC53D002B5D1E /* hopalong.xml in Resources */,
AF918B18158FC53D002B5D1E /* hypertorus.xml in Resources */,
AF39483F15A1647A0000FFCD /* jigsaw.xml in Resources */,
AF918B22158FC53D002B5D1E /* juggler3d.xml in Resources */,
AF918B23158FC53D002B5D1E /* julia.xml in Resources */,
+ AFB8A69C1782BF6C004EDB85 /* kaleidocycle.xml in Resources */,
AF918B24158FC53D002B5D1E /* kaleidescope.xml in Resources */,
AF918B25158FC53D002B5D1E /* klein.xml in Resources */,
AF918B26158FC53D002B5D1E /* kumppa.xml in Resources */,
AF918B53158FC53E002B5D1E /* pulsar.xml in Resources */,
AF918B54158FC53E002B5D1E /* pyro.xml in Resources */,
AF918B55158FC53E002B5D1E /* qix.xml in Resources */,
+ AFF28697178611720050A578 /* quasicrystal.xml in Resources */,
AF918B56158FC53E002B5D1E /* queens.xml in Resources */,
AF918B57158FC53E002B5D1E /* rdbomb.xml in Resources */,
AF918B58158FC53E002B5D1E /* ripples.xml in Resources */,
AF918B7E158FC53E002B5D1E /* truchet.xml in Resources */,
AF918B7F158FC53E002B5D1E /* twang.xml in Resources */,
AF918B80158FC53E002B5D1E /* vermiculate.xml in Resources */,
+ AFDA65A6178A541A0070D24B /* unknownpleasures.xml in Resources */,
AF918B83158FC53E002B5D1E /* voronoi.xml in Resources */,
AF918B84158FC53E002B5D1E /* wander.xml in Resources */,
AF918B86158FC53E002B5D1E /* whirlwindwarp.xml in Resources */,
AF918B8F158FC53E002B5D1E /* xrayswarm.xml in Resources */,
AF918B90158FC53E002B5D1E /* xspirograph.xml in Resources */,
AF918B91158FC554002B5D1E /* zoom.xml in Resources */,
- AFC6BBC2161CE07E0084EDB1 /* Default-568h@2x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AFB591AA178B812C00EA4005 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFB591BE178B81E600EA4005 /* hexadrop.xml in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ AFBFE74E178642DC00432B21 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFBFE765178643B200432B21 /* Apple2.saver in Resources */,
+ AFBFE74F178642DC00432B21 /* SaverRunner.nib in Resources */,
+ AFBFE750178642DC00432B21 /* SaverRunner.icns in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ AFBFE76C178647FE00432B21 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFBFE7831786483B00432B21 /* Phosphor.saver in Resources */,
+ AFBFE76F178647FE00432B21 /* SaverRunner.nib in Resources */,
+ AFBFE770178647FE00432B21 /* SaverRunner.icns in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AFD51B1E0F063B4A00471C02 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AFDA6591178A52B70070D24B /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFDA65A5178A541A0070D24B /* unknownpleasures.xml in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AFE2A4590E2E904600ADB298 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AFF2868217860E830050A578 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFF28696178611720050A578 /* quasicrystal.xml in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AFF463390C4403E400EE6509 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AF75110D1782B5B900380EA1 /* Rez */ = {
+ isa = PBXRezBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AF7776F209B63ABF00EA3033 /* Rez */ = {
isa = PBXRezBuildPhase;
buildActionMask = 2147483647;
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AFB591B5178B812C00EA4005 /* Rez */ = {
+ isa = PBXRezBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AFD51B2B0F063B4A00471C02 /* Rez */ = {
isa = PBXRezBuildPhase;
buildActionMask = 2147483647;
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AFDA659C178A52B70070D24B /* Rez */ = {
+ isa = PBXRezBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AFE2A4650E2E904600ADB298 /* Rez */ = {
isa = PBXRezBuildPhase;
buildActionMask = 2147483647;
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AFF2868D17860E830050A578 /* Rez */ = {
+ isa = PBXRezBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AFF463420C4403E400EE6509 /* Rez */ = {
isa = PBXRezBuildPhase;
buildActionMask = 2147483647;
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "$SOURCE_ROOT/OSX/update-info-plist.pl -q `/bin/ls -d $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX/{Contents/,}PlugIns/*.saver 2>&-`\n$SOURCE_ROOT/OSX/update-info-plist.pl -q `/bin/ls -d $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX 2>&-`\n";
+ shellScript = "$SOURCE_ROOT/OSX/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
showEnvVarsInLog = 0;
};
AF2D51FD13E94B2D002AA818 /* Run Update Info Plist */ = {
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "$SOURCE_ROOT/OSX/update-info-plist.pl -q `/bin/ls -d $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX/{Contents/,}PlugIns/*.saver 2>&-`\n$SOURCE_ROOT/OSX/update-info-plist.pl -q `/bin/ls -d $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX 2>&-`\n";
+ shellScript = "$SOURCE_ROOT/OSX/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
showEnvVarsInLog = 0;
};
AF32D9F00F3AD0B40080F535 /* Run Update Info Plist */ = {
shellScript = "$SOURCE_ROOT/OSX/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
showEnvVarsInLog = 0;
};
+ AF75110E1782B5B900380EA1 /* Run Update Info Plist */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Update Info Plist";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "$SOURCE_ROOT/OSX/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
+ showEnvVarsInLog = 0;
+ };
AF78D185142DD8F3002AAF77 /* Run Update Info Plist */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
shellScript = "$SOURCE_ROOT/OSX/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
showEnvVarsInLog = 0;
};
+ AFB591B6178B812C00EA4005 /* Run Update Info Plist */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Update Info Plist";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "$SOURCE_ROOT/OSX/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
+ showEnvVarsInLog = 0;
+ };
+ AFBFE75A178642DC00432B21 /* Run Update Info Plist */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Update Info Plist";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "$SOURCE_ROOT/OSX/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
+ showEnvVarsInLog = 0;
+ };
+ AFBFE77A178647FE00432B21 /* Run Update Info Plist */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Update Info Plist";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "$SOURCE_ROOT/OSX/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
+ showEnvVarsInLog = 0;
+ };
+ AFBFE78817894FFA00432B21 /* Copy Standalone Preferences XML File */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Copy Standalone Preferences XML File";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "SRC=$SRCROOT/OSX/$PRODUCT_NAME-app.xml\nDST=$BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX/Contents/Resources\nNAME=`echo $PRODUCT_NAME.xml | tr A-Z a-z`\ncp -p $SRC $DST/$NAME\nln -sf ../../../$NAME $DST/$PRODUCT_NAME.saver/Contents/Resources/";
+ };
+ AFBFE78917895AAF00432B21 /* Copy Standalone Preferences XML File */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Copy Standalone Preferences XML File";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "SRC=$SRCROOT/OSX/$PRODUCT_NAME-app.xml\nDST=$BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX/Contents/Resources\nNAME=`echo $PRODUCT_NAME.xml | tr A-Z a-z`\ncp -p $SRC $DST/$NAME\nln -sf ../../../$NAME $DST/$PRODUCT_NAME.saver/Contents/Resources/";
+ };
AFCCCBB509C033DF00353F4D /* Run Update Info Plist */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
shellScript = "$SOURCE_ROOT/OSX/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
showEnvVarsInLog = 0;
};
+ AFDA659D178A52B70070D24B /* Run Update Info Plist */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Update Info Plist";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "$SOURCE_ROOT/OSX/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
+ showEnvVarsInLog = 0;
+ };
AFE2A4660E2E904600ADB298 /* Run Update Info Plist */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
shellScript = "$SOURCE_ROOT/OSX/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
showEnvVarsInLog = 0;
};
+ AFF2868E17860E830050A578 /* Run Update Info Plist */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Update Info Plist";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "$SOURCE_ROOT/OSX/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
+ showEnvVarsInLog = 0;
+ };
AFF463430C4403E400EE6509 /* Run Update Info Plist */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
AF2D4D8613E902F5002AA818 /* SaverRunner.m in Sources */,
AF2D4D8713E902F5002AA818 /* main.m in Sources */,
- AF78D18C142DD96E002AAF77 /* hilbert.c in Sources */,
- AF3581DB1431D5FC00E09C51 /* companion_disc.c in Sources */,
- AF3581DE1431D5FC00E09C51 /* companion_heart.c in Sources */,
- AF3581E11431D5FC00E09C51 /* companion_quad.c in Sources */,
- AF3581E41431D5FC00E09C51 /* companion.c in Sources */,
AF84AF1F15829AF000607E4C /* SaverListController.m in Sources */,
+ AFAA6B461773F30500DE720C /* ios-function-table.m in Sources */,
+ AFAA6B3B1773926C00DE720C /* phosphor.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
files = (
AF2D4F7513E91093002AA818 /* SaverRunner.m in Sources */,
AF2D4F7613E91093002AA818 /* main.m in Sources */,
- AF78D18B142DD96E002AAF77 /* hilbert.c in Sources */,
- AF3581DA1431D5FC00E09C51 /* companion_disc.c in Sources */,
- AF3581DD1431D5FC00E09C51 /* companion_heart.c in Sources */,
- AF3581E01431D5FC00E09C51 /* companion_quad.c in Sources */,
- AF3581E31431D5FC00E09C51 /* companion.c in Sources */,
AF51FD3515845D1400E5741F /* SaverListController.m in Sources */,
+ AFAA6B471773F35600DE720C /* ios-function-table.m in Sources */,
+ AFAA6B2F1773871900DE720C /* analogtv.c in Sources */,
+ AFAA6B2D1773870700DE720C /* apple2-main.c in Sources */,
+ AFAA6B2E1773870700DE720C /* apple2.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AF7511041782B5B900380EA1 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AF7511151782B64300380EA1 /* kaleidocycle.c in Sources */,
+ AF7511051782B5B900380EA1 /* XScreenSaverSubclass.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AF7776E909B63ABF00EA3033 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
AF918A0A158FC38A002B5D1E /* flow.c in Sources */,
AF918A0C158FC38A002B5D1E /* galaxy.c in Sources */,
AF918A0D158FC38A002B5D1E /* grav.c in Sources */,
+ AFB591C1178B81E600EA4005 /* hexadrop.c in Sources */,
AF918A0E158FC38A002B5D1E /* hopalong.c in Sources */,
AF918A11158FC38A002B5D1E /* julia.c in Sources */,
AF918A16158FC38A002B5D1E /* loop.c in Sources */,
AF918A6E158FC417002B5D1E /* jigglypuff.c in Sources */,
AF39483E15A164680000FFCD /* jigsaw.c in Sources */,
AF918A6F158FC417002B5D1E /* juggler3d.c in Sources */,
+ AFB8A69D1782BFA6004EDB85 /* kaleidocycle.c in Sources */,
AF918A70158FC417002B5D1E /* klein.c in Sources */,
AF918A71158FC417002B5D1E /* lament.c in Sources */,
AF918A72158FC417002B5D1E /* lavalite.c in Sources */,
AF918A82158FC417002B5D1E /* polytopes.c in Sources */,
AF918A83158FC417002B5D1E /* providence.c in Sources */,
AF918A84158FC417002B5D1E /* pulsar.c in Sources */,
+ AFF28699178611720050A578 /* quasicrystal.c in Sources */,
AF918A85158FC417002B5D1E /* queens.c in Sources */,
AF918A86158FC417002B5D1E /* rubik.c in Sources */,
AF918A87158FC417002B5D1E /* rubikblocks.c in Sources */,
AF9189ED158FC35D002B5D1E /* tronbit_no.c in Sources */,
AF9189EE158FC35D002B5D1E /* tronbit_yes.c in Sources */,
AF918AB1158FC47B002B5D1E /* tunnel_draw.c in Sources */,
+ AFDA65A8178A541A0070D24B /* unknownpleasures.c in Sources */,
AF918AB2158FC47B002B5D1E /* voronoi.c in Sources */,
AF918AB3158FC47B002B5D1E /* whale.c in Sources */,
+ AFAA6B451773F07800DE720C /* ios-function-table.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AFB591AC178B812C00EA4005 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFB591AE178B812C00EA4005 /* XScreenSaverSubclass.m in Sources */,
+ AFB591C0178B81E600EA4005 /* hexadrop.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ AFBFE751178642DC00432B21 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFBFE752178642DC00432B21 /* SaverRunner.m in Sources */,
+ AFBFE753178642DC00432B21 /* main.m in Sources */,
+ AFBFE754178642DC00432B21 /* SaverListController.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ AFBFE771178647FE00432B21 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFBFE772178647FE00432B21 /* SaverRunner.m in Sources */,
+ AFBFE773178647FE00432B21 /* main.m in Sources */,
+ AFBFE774178647FE00432B21 /* SaverListController.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AFD51B210F063B4A00471C02 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AFDA6593178A52B70070D24B /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFDA6595178A52B70070D24B /* XScreenSaverSubclass.m in Sources */,
+ AFDA65A7178A541A0070D24B /* unknownpleasures.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AFE2A45B0E2E904600ADB298 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AFF2868417860E830050A578 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFF2868617860E830050A578 /* XScreenSaverSubclass.m in Sources */,
+ AFF28698178611720050A578 /* quasicrystal.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AFF4633B0C4403E400EE6509 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
target = AF4808C0098C3B6C00FB32B8 /* jwxyz */;
targetProxy = AF2D4F6C13E91093002AA818 /* PBXContainerItemProxy */;
};
- AF2D4F8B13E91108002AA818 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = AF2D4F6A13E91093002AA818 /* Apple2App */;
- targetProxy = AF2D4F8A13E91108002AA818 /* PBXContainerItemProxy */;
- };
- AF2D4F8D13E9111D002AA818 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = AF2D4D7F13E902F5002AA818 /* PhosphorApp */;
- targetProxy = AF2D4F8C13E9111D002AA818 /* PBXContainerItemProxy */;
- };
AF2D4F8F13E91127002AA818 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = AF9D4DEC09B5BB19006E59CF /* Apple2 */;
target = AFD570C90996B9F800BA26F7 /* Ant */;
targetProxy = AF714E50105613580046AB1D /* PBXContainerItemProxy */;
};
+ AF7511001782B5B900380EA1 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AF4808C0098C3B6C00FB32B8 /* jwxyz */;
+ targetProxy = AF7511011782B5B900380EA1 /* PBXContainerItemProxy */;
+ };
AF7776E509B63ABF00EA3033 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = AF4808C0098C3B6C00FB32B8 /* jwxyz */;
target = AFD571B50996D9DC00BA26F7 /* Juggle */;
targetProxy = AFB581AF102F363300342B11 /* PBXContainerItemProxy */;
};
+ AFB591A8178B812C00EA4005 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AF4808C0098C3B6C00FB32B8 /* jwxyz */;
+ targetProxy = AFB591A9178B812C00EA4005 /* PBXContainerItemProxy */;
+ };
+ AFB591C3178B821E00EA4005 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AFB591A7178B812C00EA4005 /* Hexadrop */;
+ targetProxy = AFB591C2178B821E00EA4005 /* PBXContainerItemProxy */;
+ };
+ AFBFE7401786405E00432B21 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AFF2867F17860E830050A578 /* QuasiCrystal */;
+ targetProxy = AFBFE73F1786405E00432B21 /* PBXContainerItemProxy */;
+ };
+ AFBFE7421786407000432B21 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AF7510FF1782B5B900380EA1 /* Kaleidocycle */;
+ targetProxy = AFBFE7411786407000432B21 /* PBXContainerItemProxy */;
+ };
+ AFBFE74C178642DC00432B21 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AF4808C0098C3B6C00FB32B8 /* jwxyz */;
+ targetProxy = AFBFE74D178642DC00432B21 /* PBXContainerItemProxy */;
+ };
+ AFBFE7641786438900432B21 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AF9D4DEC09B5BB19006E59CF /* Apple2 */;
+ targetProxy = AFBFE7631786438900432B21 /* PBXContainerItemProxy */;
+ };
+ AFBFE76A178647FE00432B21 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AF4808C0098C3B6C00FB32B8 /* jwxyz */;
+ targetProxy = AFBFE76B178647FE00432B21 /* PBXContainerItemProxy */;
+ };
+ AFBFE7811786482B00432B21 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AF7776E409B63ABF00EA3033 /* Phosphor */;
+ targetProxy = AFBFE7801786482B00432B21 /* PBXContainerItemProxy */;
+ };
+ AFBFE785178648E600432B21 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AFBFE74B178642DC00432B21 /* Apple2-OSX */;
+ targetProxy = AFBFE784178648E600432B21 /* PBXContainerItemProxy */;
+ };
+ AFBFE787178648F500432B21 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AFBFE767178647FE00432B21 /* Phosphor-OSX */;
+ targetProxy = AFBFE786178648F500432B21 /* PBXContainerItemProxy */;
+ };
AFCAD5F90992DFE00009617A /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = AF9771D60989DC4A001F8B92 /* SaverTester */;
target = AF4808C0098C3B6C00FB32B8 /* jwxyz */;
targetProxy = AFD5735F0997411200BA26F7 /* PBXContainerItemProxy */;
};
+ AFDA658F178A52B70070D24B /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AF4808C0098C3B6C00FB32B8 /* jwxyz */;
+ targetProxy = AFDA6590178A52B70070D24B /* PBXContainerItemProxy */;
+ };
+ AFDA65AA178A54690070D24B /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AFDA658E178A52B70070D24B /* Unknown Pleasures */;
+ targetProxy = AFDA65A9178A54690070D24B /* PBXContainerItemProxy */;
+ };
AFE2A4570E2E904600ADB298 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = AF4808C0098C3B6C00FB32B8 /* jwxyz */;
target = AFE6A41B0CDD7FAA002805BF /* Abstractile */;
targetProxy = AFE6A42F0CDD7FEE002805BF /* PBXContainerItemProxy */;
};
+ AFF2868017860E830050A578 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AF4808C0098C3B6C00FB32B8 /* jwxyz */;
+ targetProxy = AFF2868117860E830050A578 /* PBXContainerItemProxy */;
+ };
AFF463370C4403E400EE6509 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = AF4808C0098C3B6C00FB32B8 /* jwxyz */;
AF0839A009930B6B00277BE9 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF0839A109930B6B00277BE9 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF083A46099311D700277BE9 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF083A47099311D700277BE9 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF0DC7BB0C4C73F600D76972 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF0DC7BC0C4C73F600D76972 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF0DCA540C4CBB0D00D76972 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF0DCA550C4CBB0D00D76972 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF137D420F075C9C004DE3B2 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = Obsolete;
};
name = Debug;
AF137D430F075C9C004DE3B2 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = Obsolete;
};
name = Release;
AF1A17710D6D6EE3008AF328 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF1A17720D6D6EE3008AF328 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF2D4D8D13E902F5002AA818 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Jamie Zawinski (Y5M82TL69N)";
- COMBINE_HIDPI_IMAGES = YES;
- DEAD_CODE_STRIPPING = YES;
- "DEAD_CODE_STRIPPING[sdk=iphoneos*]" = NO;
- "DEAD_CODE_STRIPPING[sdk=iphonesimulator*]" = NO;
- "GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*]" = (
- "USE_IPHONE=1",
- "$(inherited)",
- );
- "GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = (
+ GCC_PREPROCESSOR_DEFINITIONS = (
"USE_IPHONE=1",
+ "PHOSPHOR_ONLY=1",
"$(inherited)",
);
- GCC_SYMBOLS_PRIVATE_EXTERN = NO;
- GCC_WARN_UNINITIALIZED_AUTOS = YES;
- INFOPLIST_FILE = OSX/SaverRunner.plist;
- "INFOPLIST_FILE[sdk=iphoneos*]" = OSX/iSaverRunner.plist;
- "INFOPLIST_FILE[sdk=iphonesimulator*]" = OSX/iSaverRunner.plist;
+ INFOPLIST_FILE = OSX/iSaverRunner.plist;
INSTALL_PATH = "$(HOME)/Applications";
- IPHONEOS_DEPLOYMENT_TARGET = 5.0;
- "OTHER_LDFLAGS[sdk=iphoneos*]" = (
- "-ljwxyz",
- "-framework",
- OpenGLES,
- "-framework",
- Foundation,
- "-framework",
- UIKit,
- "-framework",
- CoreGraphics,
- "-framework",
- QuartzCore,
- );
- "OTHER_LDFLAGS[sdk=iphonesimulator*]" = (
- "-ljwxyz",
- "-framework",
- OpenGLES,
- "-framework",
- Foundation,
- "-framework",
- UIKit,
- "-framework",
- CoreGraphics,
- "-framework",
- QuartzCore,
- );
PRODUCT_NAME = Phosphor;
- "PROVISIONING_PROFILE[sdk=iphoneos*]" = "AC8EDA6B-E061-4508-B2BA-129DD6D2AF72";
- TARGETED_DEVICE_FAMILY = "1,2";
+ SDKROOT = iphoneos;
WRAPPER_EXTENSION = app;
};
name = Debug;
AF2D4D8E13E902F5002AA818 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Jamie Zawinski (Y5M82TL69N)";
- COMBINE_HIDPI_IMAGES = YES;
- COPY_PHASE_STRIP = YES;
- DEAD_CODE_STRIPPING = YES;
- "DEAD_CODE_STRIPPING[sdk=iphoneos*]" = NO;
- "DEAD_CODE_STRIPPING[sdk=iphonesimulator*]" = NO;
- "GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*]" = (
- "USE_IPHONE=1",
- "$(inherited)",
- );
- "GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = (
+ GCC_PREPROCESSOR_DEFINITIONS = (
"USE_IPHONE=1",
+ "PHOSPHOR_ONLY=1",
"$(inherited)",
);
- GCC_WARN_UNINITIALIZED_AUTOS = YES;
- INFOPLIST_FILE = OSX/SaverRunner.plist;
- "INFOPLIST_FILE[sdk=iphoneos*]" = OSX/iSaverRunner.plist;
- "INFOPLIST_FILE[sdk=iphonesimulator*]" = OSX/iSaverRunner.plist;
+ INFOPLIST_FILE = OSX/iSaverRunner.plist;
INSTALL_PATH = "$(HOME)/Applications";
- IPHONEOS_DEPLOYMENT_TARGET = 5.0;
- "OTHER_LDFLAGS[sdk=iphoneos*]" = (
- "-ljwxyz",
- "-framework",
- OpenGLES,
- "-framework",
- Foundation,
- "-framework",
- UIKit,
- "-framework",
- CoreGraphics,
- "-framework",
- QuartzCore,
- );
- "OTHER_LDFLAGS[sdk=iphonesimulator*]" = (
- "-ljwxyz",
- "-framework",
- OpenGLES,
- "-framework",
- Foundation,
- "-framework",
- UIKit,
- "-framework",
- CoreGraphics,
- "-framework",
- QuartzCore,
- );
PRODUCT_NAME = Phosphor;
- "PROVISIONING_PROFILE[sdk=iphoneos*]" = "AC8EDA6B-E061-4508-B2BA-129DD6D2AF72";
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
+ SDKROOT = iphoneos;
WRAPPER_EXTENSION = app;
};
name = Release;
AF2D4F7C13E91093002AA818 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Jamie Zawinski (Y5M82TL69N)";
- COMBINE_HIDPI_IMAGES = YES;
- DEAD_CODE_STRIPPING = YES;
- "DEAD_CODE_STRIPPING[sdk=iphoneos*]" = NO;
- "DEAD_CODE_STRIPPING[sdk=iphonesimulator*]" = NO;
- "GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*]" = (
- "USE_IPHONE=1",
- "$(inherited)",
- );
- "GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = (
+ GCC_PREPROCESSOR_DEFINITIONS = (
"USE_IPHONE=1",
+ "APPLE2_ONLY=1",
"$(inherited)",
);
- GCC_SYMBOLS_PRIVATE_EXTERN = NO;
- GCC_WARN_UNINITIALIZED_AUTOS = YES;
- INFOPLIST_FILE = OSX/SaverRunner.plist;
- "INFOPLIST_FILE[sdk=iphoneos*]" = OSX/iSaverRunner.plist;
- "INFOPLIST_FILE[sdk=iphonesimulator*]" = OSX/iSaverRunner.plist;
+ INFOPLIST_FILE = OSX/iSaverRunner.plist;
INSTALL_PATH = "$(HOME)/Applications";
- IPHONEOS_DEPLOYMENT_TARGET = 5.0;
- "OTHER_LDFLAGS[sdk=iphoneos*]" = (
- "-ljwxyz",
- "-framework",
- OpenGLES,
- "-framework",
- Foundation,
- "-framework",
- UIKit,
- "-framework",
- CoreGraphics,
- "-framework",
- QuartzCore,
- );
- "OTHER_LDFLAGS[sdk=iphonesimulator*]" = (
- "-ljwxyz",
- "-framework",
- OpenGLES,
- "-framework",
- Foundation,
- "-framework",
- UIKit,
- "-framework",
- CoreGraphics,
- "-framework",
- QuartzCore,
- );
PRODUCT_NAME = Apple2;
- "PROVISIONING_PROFILE[sdk=iphoneos*]" = "AC8EDA6B-E061-4508-B2BA-129DD6D2AF72";
- TARGETED_DEVICE_FAMILY = "1,2";
+ SDKROOT = iphoneos;
WRAPPER_EXTENSION = app;
};
name = Debug;
AF2D4F7D13E91093002AA818 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Jamie Zawinski (Y5M82TL69N)";
- COMBINE_HIDPI_IMAGES = YES;
- COPY_PHASE_STRIP = YES;
- DEAD_CODE_STRIPPING = YES;
- "DEAD_CODE_STRIPPING[sdk=iphoneos*]" = NO;
- "DEAD_CODE_STRIPPING[sdk=iphonesimulator*]" = NO;
- "GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*]" = (
- "USE_IPHONE=1",
- "$(inherited)",
- );
- "GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = (
+ GCC_PREPROCESSOR_DEFINITIONS = (
"USE_IPHONE=1",
+ "APPLE2_ONLY=1",
"$(inherited)",
);
- GCC_WARN_UNINITIALIZED_AUTOS = YES;
- INFOPLIST_FILE = OSX/SaverRunner.plist;
- "INFOPLIST_FILE[sdk=iphoneos*]" = OSX/iSaverRunner.plist;
- "INFOPLIST_FILE[sdk=iphonesimulator*]" = OSX/iSaverRunner.plist;
+ INFOPLIST_FILE = OSX/iSaverRunner.plist;
INSTALL_PATH = "$(HOME)/Applications";
- IPHONEOS_DEPLOYMENT_TARGET = 5.0;
- "OTHER_LDFLAGS[sdk=iphoneos*]" = (
- "-ljwxyz",
- "-framework",
- OpenGLES,
- "-framework",
- Foundation,
- "-framework",
- UIKit,
- "-framework",
- CoreGraphics,
- "-framework",
- QuartzCore,
- );
- "OTHER_LDFLAGS[sdk=iphonesimulator*]" = (
- "-ljwxyz",
- "-framework",
- OpenGLES,
- "-framework",
- Foundation,
- "-framework",
- UIKit,
- "-framework",
- CoreGraphics,
- "-framework",
- QuartzCore,
- );
PRODUCT_NAME = Apple2;
- "PROVISIONING_PROFILE[sdk=iphoneos*]" = "AC8EDA6B-E061-4508-B2BA-129DD6D2AF72";
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
+ SDKROOT = iphoneos;
WRAPPER_EXTENSION = app;
};
name = Release;
AF32D9F20F3AD0B40080F535 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF32D9F30F3AD0B40080F535 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF3581D31431D47B00E09C51 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF3581D41431D47B00E09C51 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF358214143330F900E09C51 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF358215143330F900E09C51 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF35E89E0E63823600691F2F /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF35E89F0E63823600691F2F /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF3C71570D624BF50030CC0D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF3C71580D624BF50030CC0D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF476FC4099D154F001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF476FC5099D154F001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF476FE9099D1686001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF476FEA099D1686001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF47705A099D4385001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF47705B099D4385001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477177099D4786001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477178099D4786001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF47718D099D4803001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF47718E099D4803001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4771B5099D4949001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4771B6099D4949001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4771E9099D4D9A001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4771EA099D4D9A001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477200099D4E63001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477201099D4E63001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477216099D4EE8001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477217099D4EE8001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF47722C099D4F67001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
- GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
};
name = Debug;
};
AF47722D099D4F67001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
- GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
};
name = Release;
};
AF477261099D5717001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477262099D5717001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477279099D57B9001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF47727A099D57B9001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477291099D5926001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477292099D5926001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477390099D65A1001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477391099D65A1001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4773A8099D6648001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4773A9099D6648001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4773CF099D67B9001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4773D0099D67B9001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477410099D69E7001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477411099D69E7001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477435099D7C70001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477436099D7C70001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477450099D7D33001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477451099D7D33001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477491099D89E4001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477492099D89E4001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4774A7099D8A74001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4774A8099D8A74001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4774C2099D8B5F001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4774C3099D8B5F001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4774DC099D8BFF001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4774DD099D8BFF001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF47756B099D9A1A001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF47756C099D9A1A001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477591099D9C28001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477592099D9C28001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4775AD099D9CF7001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4775AE099D9CF7001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4775E6099D9F69001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4775E7099D9F69001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477600099DA030001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477601099DA030001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477621099DA26C001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477622099DA26C001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477652099DA6D0001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477653099DA6D0001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477668099DA78E001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477669099DA78E001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF47767E099DA849001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF47767F099DA849001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF47769D099DAA6F001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF47769E099DAA6F001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4776B8099DABDD001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4776B9099DABDD001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4776CE099DAC8A001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4776CF099DAC8A001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4776E9099DADDF001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4776EA099DADDF001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4776FF099DAE7A001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477700099DAE7A001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF47771B099DAF9F001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF47771C099DAF9F001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477731099DB044001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477732099DB044001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477760099DB61E001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477761099DB61E001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477782099DB965001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477783099DB965001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF47779E099DBA90001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF47779F099DBA90001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4777DF099DC183001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4777E0099DC183001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4778B9099DDB79001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4778BA099DDB79001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4778D5099DDCAE001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4778D6099DDCAE001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4778F6099DDDC8001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF4778F7099DDDC8001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477917099DE379001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477918099DE379001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF477938099DE4C7001F091E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF477939099DE4C7001F091E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4808C3098C3B8B00FB32B8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ARCHS = (
- "$(ARCHS_STANDARD_32_64_BIT)",
- armv6,
- armv7,
- );
- COMBINE_HIDPI_IMAGES = YES;
INSTALL_PATH = /usr/local/lib;
- SDKROOT = macosx;
- "SDKROOT[arch=armv6]" = iphoneos;
- "SDKROOT[arch=armv7]" = iphoneos;
SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
- VALID_ARCHS = "i386 x86_64 armv7 armv7s";
+ VALID_ARCHS = "i386 x86_64 armv6 armv7 armv7s";
};
name = Debug;
};
AF4808C4098C3B8B00FB32B8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ARCHS = (
- "$(ARCHS_STANDARD_32_64_BIT)",
- armv6,
- armv7,
- );
- COMBINE_HIDPI_IMAGES = YES;
INSTALL_PATH = /usr/local/lib;
- SDKROOT = macosx;
- "SDKROOT[arch=armv6]" = iphoneos;
- "SDKROOT[arch=armv7]" = iphoneos;
SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
- VALID_ARCHS = "i386 x86_64 armv7 armv7s";
+ VALID_ARCHS = "i386 x86_64 armv6 armv7 armv7s";
};
name = Release;
};
AF480ABB098C66E300FB32B8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = "All Savers (XScreenSaver)";
};
name = Debug;
AF480ABC098C66E300FB32B8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = "All Savers (XScreenSaver)";
};
name = Release;
AF480C56098E301400FB32B8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF480C57098E301400FB32B8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF480D65098EED6E00FB32B8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = "All Savers (XLockmore)";
};
name = Debug;
AF480D66098EED6E00FB32B8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = "All Savers (XLockmore)";
};
name = Release;
AF480D68098EED6E00FB32B8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = "All Savers (OpenGL)";
};
name = Debug;
AF480D69098EED6E00FB32B8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = "All Savers (OpenGL)";
};
name = Release;
AF480D6B098EED6E00FB32B8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = "All Savers";
};
name = Debug;
AF480D6C098EED6E00FB32B8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = "All Savers";
};
name = Release;
AF480D7F098EEDDE00FB32B8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF480D80098EEDDE00FB32B8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF4810F909909FBA00FB32B8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "HAVE_COCOA=1",
- "GETTIMEOFDAY_TWO_ARGS=1",
- "HAVE_UNISTD_H=1",
- "STANDALONE=1",
- "HAVE_GLBINDTEXTURE=1",
- "HAVE_UNAME=1",
- "HAVE_ICMP=1",
- "HAVE_FORKPTY=1",
- "HAVE_UTIL_H=1",
- "$(GCC_PREPROCESSOR_DEFINITIONS)",
- );
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF4810FA09909FBA00FB32B8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "HAVE_COCOA=1",
- "GETTIMEOFDAY_TWO_ARGS=1",
- "HAVE_UNISTD_H=1",
- "STANDALONE=1",
- "HAVE_GLBINDTEXTURE=1",
- "HAVE_UNAME=1",
- "HAVE_ICMP=1",
- "HAVE_FORKPTY=1",
- "HAVE_UTIL_H=1",
- "$(GCC_PREPROCESSOR_DEFINITIONS)",
- );
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF4812620990CE2700FB32B8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF4812630990CE2700FB32B8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF4812C40990D3D900FB32B8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF4812C50990D3D900FB32B8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF48DF010A0C25E000F94CF9 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF48DF020A0C25E000F94CF9 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF4A345B102A593600A81B2A /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF4A345C102A593600A81B2A /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF4FD6F80CE7A486005EE58E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF4FD6F90CE7A486005EE58E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF4FF4950D52CA0800666F98 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = m6502.h;
};
name = Debug;
AF4FF4960D52CA0800666F98 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = m6502.h;
};
name = Release;
AF4FF4CC0D52CBDE00666F98 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF4FF4CD0D52CBDE00666F98 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF642403099FF9C2000F4CD4 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF642404099FF9C2000F4CD4 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF6425DA09A18855000F4CD4 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF6425DB09A18855000F4CD4 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF6425FA09A189EC000F4CD4 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF6425FB09A189EC000F4CD4 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF64261D09A18D6C000F4CD4 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF64261E09A18D6C000F4CD4 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF64263A09A18F54000F4CD4 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF64263B09A18F54000F4CD4 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF64265D09A19229000F4CD4 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF64265E09A19229000F4CD4 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF64268909A194B0000F4CD4 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF64268A09A194B0000F4CD4 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF64277F09A1D37A000F4CD4 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF64278009A1D37A000F4CD4 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF6427B609A2DE36000F4CD4 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF6427B709A2DE36000F4CD4 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
+ };
+ name = Release;
+ };
+ AF7511101782B5B900380EA1 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
+ "USE_GL=1",
+ "$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
+ );
+ "OTHER_LDFLAGS[sdk=macosx*]" = (
+ "-ljwxyz",
+ "-framework",
+ ScreenSaver,
+ "-framework",
+ Cocoa,
+ "-framework",
+ Carbon,
+ "-framework",
+ AGL,
+ "-framework",
+ OpenGL,
+ );
+ PRODUCT_NAME = Kaleidocycle;
+ };
+ name = Debug;
+ };
+ AF7511111782B5B900380EA1 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
+ "USE_GL=1",
+ "$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
+ );
+ "OTHER_LDFLAGS[sdk=macosx*]" = (
+ "-ljwxyz",
+ "-framework",
+ ScreenSaver,
+ "-framework",
+ Cocoa,
+ "-framework",
+ Carbon,
+ "-framework",
+ AGL,
+ "-framework",
+ OpenGL,
+ );
+ PRODUCT_NAME = Kaleidocycle;
};
name = Release;
};
AF7776F409B63ABF00EA3033 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF7776F509B63ABF00EA3033 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF77772809B6416100EA3033 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF77772909B6416100EA3033 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF77774F09B6446500EA3033 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF77775009B6446500EA3033 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF77778609B6497800EA3033 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF77778709B6497800EA3033 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF7777A009B64A5200EA3033 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF7777A109B64A5200EA3033 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF7777BA09B64B2600EA3033 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF7777BB09B64B2600EA3033 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF7777E209B64C6B00EA3033 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF7777E309B64C6B00EA3033 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF7777FC09B64E3100EA3033 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF7777FD09B64E3100EA3033 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF77782309B6504400EA3033 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF77782409B6504400EA3033 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF77785609B6528100EA3033 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF77785709B6528100EA3033 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF77787209B6536000EA3033 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF77787309B6536000EA3033 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF77788D09B6563500EA3033 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF77788E09B6563500EA3033 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF7778B309B659C800EA3033 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF7778B409B659C800EA3033 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF78D187142DD8F3002AAF77 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF78D188142DD8F3002AAF77 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF794F72099748450059A8B0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF794F73099748450059A8B0 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF794F9C09974A320059A8B0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF794F9D09974A320059A8B0 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF794FDB09974FA60059A8B0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF794FDC09974FA60059A8B0 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF91898D158FC00A002B5D1E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
- CODE_SIGN_IDENTITY = "iPhone Developer";
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Library/Frameworks\"",
- );
+ BUNDLE_IDENTIFIER = "org.jwz.${PROJECT_NAME:rfc1034identifier}";
GCC_PREPROCESSOR_DEFINITIONS = (
"USE_IPHONE=1",
"$(inherited)",
);
- GCC_SYMBOLS_PRIVATE_EXTERN = NO;
- GCC_THUMB_SUPPORT = NO;
INFOPLIST_FILE = OSX/iSaverRunner.plist;
INSTALL_PATH = "$(HOME)/Applications";
- IPHONEOS_DEPLOYMENT_TARGET = 4.3;
PRODUCT_NAME = XScreenSaver;
- PROVISIONING_PROFILE = "";
SDKROOT = iphoneos;
- "SDKROOT[arch=*]" = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
WRAPPER_EXTENSION = app;
};
name = Debug;
AF91898E158FC00A002B5D1E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
- CODE_SIGN_IDENTITY = "iPhone Distribution: Jamie Zawinski";
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Library/Frameworks\"",
- );
+ BUNDLE_IDENTIFIER = "org.jwz.${PROJECT_NAME:rfc1034identifier}";
GCC_PREPROCESSOR_DEFINITIONS = (
"USE_IPHONE=1",
"$(inherited)",
);
- GCC_THUMB_SUPPORT = NO;
INFOPLIST_FILE = OSX/iSaverRunner.plist;
INSTALL_PATH = "$(HOME)/Applications";
- IPHONEOS_DEPLOYMENT_TARGET = 4.3;
PRODUCT_NAME = XScreenSaver;
- PROVISIONING_PROFILE = "6713E214-60AD-43CF-AFD3-825AEB87AA75";
SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
WRAPPER_EXTENSION = app;
};
name = Release;
AF97573B099C317000B05160 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF97573C099C317000B05160 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF975783099C374A00B05160 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF975784099C374A00B05160 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF9757D0099C3E6300B05160 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF9757D1099C3E6300B05160 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF975816099C41D500B05160 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF975817099C41D500B05160 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF975873099C475900B05160 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF975874099C475900B05160 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF975A44099C681F00B05160 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF975A45099C681F00B05160 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF975A7A099C6AB200B05160 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF975A7B099C6AB200B05160 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF975A94099C6BC300B05160 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF975A95099C6BC300B05160 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF975AE5099C6EB100B05160 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF975AE6099C6EB100B05160 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF975B0A099C6FE400B05160 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF975B0B099C6FE400B05160 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF975C20099C8C1500B05160 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF975C21099C8C1500B05160 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF975C4C099C8DCF00B05160 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF975C4D099C8DCF00B05160 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF975C6C099C8F3F00B05160 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF975C6D099C8F3F00B05160 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF975D61099CA0F000B05160 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF975D62099CA0F000B05160 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF976FBF0989CAA4001F8B92 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF976FC00989CAA4001F8B92 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF97703E0989D1E6001F8B92 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF97703F0989D1E6001F8B92 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF97707B0989D2F6001F8B92 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF97707C0989D2F6001F8B92 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF9771DB0989DC4B001F8B92 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = OSX/SaverRunner.plist;
INSTALL_PATH = "$(HOME)/Applications";
WRAPPER_EXTENSION = app;
AF9771DC0989DC4B001F8B92 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = OSX/SaverRunner.plist;
INSTALL_PATH = "$(HOME)/Applications";
WRAPPER_EXTENSION = app;
AF998EEC0A083DB30051049D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF998EED0A083DB30051049D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AF9D467409B5109C006E59CF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF9D467509B5109C006E59CF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF9D475209B5300A006E59CF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF9D475309B5300A006E59CF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF9D476D09B53166006E59CF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF9D476E09B53166006E59CF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF9D48E909B53322006E59CF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF9D48EA09B53322006E59CF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF9D490209B535DA006E59CF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF9D490309B535DA006E59CF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF9D493909B53CBA006E59CF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF9D493A09B53CBA006E59CF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF9D496209B53FC9006E59CF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF9D496309B53FC9006E59CF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF9D497A09B5411D006E59CF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF9D497B09B5411D006E59CF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF9D49A509B544C2006E59CF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF9D49A609B544C2006E59CF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF9D4C7709B59F27006E59CF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF9D4C7809B59F27006E59CF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF9D4CF509B5AA8E006E59CF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF9D4CF609B5AA8E006E59CF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF9D4D8D09B5B2DC006E59CF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF9D4D8E09B5B2DC006E59CF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF9D4DBE09B5B71E006E59CF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF9D4DBF09B5B71E006E59CF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AF9D4DFC09B5BB19006E59CF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AF9D4DFD09B5BB19006E59CF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFA3393E0B058505002B0E7D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFA3393F0B058505002B0E7D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFA33C080B058E67002B0E7D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = webcollage;
};
name = Debug;
AFA33C090B058E67002B0E7D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = webcollage;
};
name = Release;
AFA55958099330B000F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55959099330B000F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5597D0993317900F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5597E0993317900F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA559A20993322100F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA559A30993322100F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA559C50993328000F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA559C60993328000F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA559DF0993330600F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA559E00993330600F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55A130993340300F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55A140993340300F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55A30099334A000F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55A31099334A000F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55A890993364300F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55A8A0993364300F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55ADF09933CEF00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55AE009933CEF00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55B1C09933E0500F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55B1D09933E0500F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55B3509933E8D00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55B3609933E8D00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55B8909933F7200F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55B8A09933F7200F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55BA109933FDA00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55BA209933FDA00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55BBB099340CE00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55BBC099340CE00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55BF40993429100F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55BF50993429100F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55C1E0993431300F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55C1F0993431300F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55C87099349A600F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55C88099349A600F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55CB909934BB200F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55CBA09934BB200F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55CDC09934CE400F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55CDD09934CE400F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55D4C0993565300F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55D4D0993565300F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55D720993584B00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55D730993584B00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55D8F099358C400F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55D90099358C400F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55DD809935D7000F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55DD909935D7000F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55E0109935E4900F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55E0209935E4900F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55E1D09935EDC00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55E1E09935EDC00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55E4009935F8E00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55E4109935F8E00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55E5E09935FF900F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55E5F09935FF900F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55EE1099360E300F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55EE2099360E300F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55F1C099361B700F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55F1D099361B700F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55F3A0993622F00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55F3B0993622F00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55F520993629000F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55F530993629000F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55F820993643600F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55F830993643600F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55FE309936BFA00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA55FE409936BFA00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5600909936C6D00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5600A09936C6D00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5602409936CC800F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5602509936CC800F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5604209936D5100F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5604309936D5100F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5605A09936E2100F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5605B09936E2100F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5607209936F3800F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5607309936F3800F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA560BE0993718D00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA560BF0993718D00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5610D0993781600F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5610E0993781600F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5611B099378EA00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = molecules.h;
};
name = Debug;
AFA5611C099378EA00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = molecules.h;
};
name = Release;
AFA5616809937C0D00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5616909937C0D00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5618B09937CF100F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5618C09937CF100F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA561AD09937D7E00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA561AE09937D7E00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA562170993849F00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA562180993849F00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5622F0993852500F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA562300993852500F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA562CF099392C600F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA562D0099392C600F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA562EA099393C900F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA562EB099393C900F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA563020993943B00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA563030993943B00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA563240993951000F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA563250993951000F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA56341099395ED00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA56342099395ED00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA56361099396C000F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA56362099396C000F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA56389099397B300F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA5638A099397B300F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA563B4099398BB00F3E977 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFA563B5099398BB00F3E977 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
};
name = Release;
};
+ AFB591B8178B812C00EA4005 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = Hexadrop;
+ };
+ name = Debug;
+ };
+ AFB591B9178B812C00EA4005 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = Hexadrop;
+ };
+ name = Release;
+ };
+ AFBFE75C178642DC00432B21 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ INFOPLIST_FILE = OSX/SaverRunner.plist;
+ INSTALL_PATH = "$(HOME)/Applications";
+ "OTHER_CFLAGS[sdk=macosx*]" = "";
+ PRODUCT_NAME = Apple2;
+ WRAPPER_EXTENSION = app;
+ };
+ name = Debug;
+ };
+ AFBFE75D178642DC00432B21 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ INFOPLIST_FILE = OSX/SaverRunner.plist;
+ INSTALL_PATH = "$(HOME)/Applications";
+ "OTHER_CFLAGS[sdk=macosx*]" = "";
+ PRODUCT_NAME = Apple2;
+ WRAPPER_EXTENSION = app;
+ };
+ name = Release;
+ };
+ AFBFE77C178647FE00432B21 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ INFOPLIST_FILE = OSX/SaverRunner.plist;
+ INSTALL_PATH = "$(HOME)/Applications";
+ "OTHER_CFLAGS[sdk=macosx*]" = "";
+ PRODUCT_NAME = Phosphor;
+ WRAPPER_EXTENSION = app;
+ };
+ name = Debug;
+ };
+ AFBFE77D178647FE00432B21 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ INFOPLIST_FILE = OSX/SaverRunner.plist;
+ INSTALL_PATH = "$(HOME)/Applications";
+ "OTHER_CFLAGS[sdk=macosx*]" = "";
+ PRODUCT_NAME = Phosphor;
+ WRAPPER_EXTENSION = app;
+ };
+ name = Release;
+ };
AFD51B2E0F063B4A00471C02 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFD51B2F0F063B4A00471C02 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFD56E020996A03800BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFD56E030996A03800BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFD56EBC0996A72600BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD56EBD0996A72600BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD56EE80996A95700BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD56EE90996A95700BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD56F190996AAFA00BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD56F1A0996AAFA00BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD56F310996AB8A00BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD56F320996AB8A00BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD56F5D0996AEEE00BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD56F5E0996AEEE00BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD56F790996B01600BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD56F7A0996B01600BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD56F9A0996B09400BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD56F9B0996B09400BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD56FB10996B10F00BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD56FB20996B10F00BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD56FC70996B18F00BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD56FC80996B18F00BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD56FDD0996B20900BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD56FDE0996B20900BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD570060996B43800BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD570070996B43800BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD5701D0996B4CC00BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD5701E0996B4CC00BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD570340996B56D00BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD570350996B56D00BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD570510996B61600BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD570520996B61600BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD570670996B6A300BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD570680996B6A300BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD5707D0996B72700BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD5707E0996B72700BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD570930996B80300BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD570940996B80300BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD570A90996B88E00BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD570AA0996B88E00BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD570BF0996B93000BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD570C00996B93000BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD570D70996B9F800BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD570D80996B9F800BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD570F80996BBBF00BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD570F90996BBBF00BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD571210996BE9300BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD571220996BE9300BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD5713A0996BF2E00BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD5713B0996BF2E00BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD571510996C01700BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD571520996C01700BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD571670996C0CE00BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD571680996C0CE00BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD571C30996D9DC00BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD571C40996D9DC00BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD572300996E4A300BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD572310996E4A300BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD5727B0996EE8500BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD5727C0996EE8500BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD572B30996F99600BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD572B40996F99600BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD572D00996FC0F00BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD572D10996FC0F00BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD57307099701C000BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD57308099701C000BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFD5736B0997411200BA26F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFD5736C0997411200BA26F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
+ };
+ name = Release;
+ };
+ AFDA659F178A52B70070D24B /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
+ "USE_GL=1",
+ "$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
+ );
+ "OTHER_LDFLAGS[sdk=macosx*]" = (
+ "-ljwxyz",
+ "-framework",
+ ScreenSaver,
+ "-framework",
+ Cocoa,
+ "-framework",
+ Carbon,
+ "-framework",
+ AGL,
+ "-framework",
+ OpenGL,
+ );
+ PRODUCT_NAME = UnknownPleasures;
+ };
+ name = Debug;
+ };
+ AFDA65A0178A52B70070D24B /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
+ "USE_GL=1",
+ "$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
+ );
+ "OTHER_LDFLAGS[sdk=macosx*]" = (
+ "-ljwxyz",
+ "-framework",
+ ScreenSaver,
+ "-framework",
+ Cocoa,
+ "-framework",
+ Carbon,
+ "-framework",
+ AGL,
+ "-framework",
+ OpenGL,
+ );
+ PRODUCT_NAME = UnknownPleasures;
};
name = Release;
};
AFE2A4680E2E904600ADB298 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFE2A4690E2E904600ADB298 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFE30BFA0E52B14700CCF4A5 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFE30BFB0E52B14700CCF4A5 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFE6A1950CDD7B2E002805BF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFE6A1960CDD7B2E002805BF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFE6A42B0CDD7FAA002805BF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFE6A42C0CDD7FAA002805BF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
+ };
+ name = Release;
+ };
+ AFF2869017860E830050A578 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
+ "USE_GL=1",
+ "$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
+ );
+ "OTHER_LDFLAGS[sdk=macosx*]" = (
+ "-ljwxyz",
+ "-framework",
+ ScreenSaver,
+ "-framework",
+ Cocoa,
+ "-framework",
+ Carbon,
+ "-framework",
+ AGL,
+ "-framework",
+ OpenGL,
+ );
+ PRODUCT_NAME = QuasiCrystal;
+ };
+ name = Debug;
+ };
+ AFF2869117860E830050A578 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
+ "USE_GL=1",
+ "$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
+ );
+ "OTHER_LDFLAGS[sdk=macosx*]" = (
+ "-ljwxyz",
+ "-framework",
+ ScreenSaver,
+ "-framework",
+ Cocoa,
+ "-framework",
+ Carbon,
+ "-framework",
+ AGL,
+ "-framework",
+ OpenGL,
+ );
+ PRODUCT_NAME = QuasiCrystal;
};
name = Release;
};
AFF463450C4403E400EE6509 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Debug;
};
AFF463460C4403E400EE6509 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
};
name = Release;
};
AFF4636A0C440AEF00EE6509 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
AFF4636B0C440AEF00EE6509 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
"USE_GL=1",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
- GCC_ENABLE_OBJC_GC = supported;
- "GCC_ENABLE_OBJC_GC[sdk=iphoneos*][arch=*]" = unsupported;
- "GCC_ENABLE_OBJC_GC[sdk=iphonesimulator*][arch=*]" = unsupported;
+ BUNDLE_IDENTIFIER = "org.jwz.${PROJECT_NAME:rfc1034identifier}.${PRODUCT_NAME:rfc1034identifier}";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphonesimulator*]" = "iPhone Developer";
+ COMBINE_HIDPI_IMAGES = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = OSX/xscreensaver_Prefix.pch;
"CLASS=XScreenSaver${EXECUTABLE_NAME}View",
"$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
);
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_MISSING_PARENTHESES = YES;
GCC_WARN_SHADOW = NO;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_LABEL = YES;
GCC_WARN_UNUSED_VALUE = YES;
);
INFOPLIST_FILE = OSX/XScreenSaver.plist;
INSTALL_PATH = "$(HOME)/Library/Screen Savers";
- MACOSX_DEPLOYMENT_TARGET = 10.5;
- "MACOSX_DEPLOYMENT_TARGET[sdk=iphoneos*][arch=*]" = "";
- "MACOSX_DEPLOYMENT_TARGET[sdk=iphonesimulator*][arch=*]" = "";
+ IPHONEOS_DEPLOYMENT_TARGET = 4.3;
+ LIBRARY_SEARCH_PATHS = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
+ MACOSX_DEPLOYMENT_TARGET = 10.4;
+ "OTHER_CFLAGS[sdk=macosx*]" = "-fobjc-gc";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
+ "SDKROOT[arch=arm*]" = iphoneos;
SYMROOT = OSX/build;
+ TARGETED_DEVICE_FAMILY = "1,2";
USER_HEADER_SEARCH_PATHS = "$(PROJECT_DIR) $(USER_HEADER_SEARCH_PATHS)";
WARNING_CFLAGS = "-Wimplicit";
WRAPPER_EXTENSION = saver;
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
- GCC_ENABLE_OBJC_GC = supported;
- "GCC_ENABLE_OBJC_GC[sdk=iphoneos*][arch=*]" = unsupported;
- "GCC_ENABLE_OBJC_GC[sdk=iphonesimulator*][arch=*]" = unsupported;
+ BUNDLE_IDENTIFIER = "org.jwz.${PROJECT_NAME:rfc1034identifier}.${PRODUCT_NAME:rfc1034identifier}";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Jamie Zawinski";
+ "CODE_SIGN_IDENTITY[sdk=iphonesimulator*]" = "iPhone Distribution: Jamie Zawinski";
+ COMBINE_HIDPI_IMAGES = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = OSX/xscreensaver_Prefix.pch;
GCC_PREPROCESSOR_DEFINITIONS = (
);
INFOPLIST_FILE = OSX/XScreenSaver.plist;
INSTALL_PATH = "$(HOME)/Library/Screen Savers";
- MACOSX_DEPLOYMENT_TARGET = 10.5;
- "MACOSX_DEPLOYMENT_TARGET[sdk=iphoneos*][arch=*]" = "";
- "MACOSX_DEPLOYMENT_TARGET[sdk=iphonesimulator*][arch=*]" = "";
+ IPHONEOS_DEPLOYMENT_TARGET = 4.3;
+ LIBRARY_SEARCH_PATHS = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
+ MACOSX_DEPLOYMENT_TARGET = 10.4;
+ "OTHER_CFLAGS[sdk=macosx*]" = "-fobjc-gc";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
+ "SDKROOT[arch=arm*]" = iphoneos;
SYMROOT = OSX/build;
+ TARGETED_DEVICE_FAMILY = "1,2";
USER_HEADER_SEARCH_PATHS = "$(PROJECT_DIR) $(USER_HEADER_SEARCH_PATHS)";
+ VALIDATE_PRODUCT = YES;
WARNING_CFLAGS = "-Wimplicit";
WRAPPER_EXTENSION = saver;
};
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- AF2D4D8C13E902F5002AA818 /* Build configuration list for PBXNativeTarget "PhosphorApp" */ = {
+ AF2D4D8C13E902F5002AA818 /* Build configuration list for PBXNativeTarget "Phosphor-iOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
AF2D4D8D13E902F5002AA818 /* Debug */,
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- AF2D4F7B13E91093002AA818 /* Build configuration list for PBXNativeTarget "Apple2App" */ = {
+ AF2D4F7B13E91093002AA818 /* Build configuration list for PBXNativeTarget "Apple2-iOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
AF2D4F7C13E91093002AA818 /* Debug */,
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ AF75110F1782B5B900380EA1 /* Build configuration list for PBXNativeTarget "Kaleidocycle" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ AF7511101782B5B900380EA1 /* Debug */,
+ AF7511111782B5B900380EA1 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
AF7776F309B63ABF00EA3033 /* Build configuration list for PBXNativeTarget "Phosphor" */ = {
isa = XCConfigurationList;
buildConfigurations = (
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ AFB591B7178B812C00EA4005 /* Build configuration list for PBXNativeTarget "Hexadrop" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ AFB591B8178B812C00EA4005 /* Debug */,
+ AFB591B9178B812C00EA4005 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ AFBFE75B178642DC00432B21 /* Build configuration list for PBXNativeTarget "Apple2-OSX" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ AFBFE75C178642DC00432B21 /* Debug */,
+ AFBFE75D178642DC00432B21 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ AFBFE77B178647FE00432B21 /* Build configuration list for PBXNativeTarget "Phosphor-OSX" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ AFBFE77C178647FE00432B21 /* Debug */,
+ AFBFE77D178647FE00432B21 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
AFD51B2D0F063B4A00471C02 /* Build configuration list for PBXNativeTarget "Photopile" */ = {
isa = XCConfigurationList;
buildConfigurations = (
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ AFDA659E178A52B70070D24B /* Build configuration list for PBXNativeTarget "Unknown Pleasures" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ AFDA659F178A52B70070D24B /* Debug */,
+ AFDA65A0178A52B70070D24B /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
AFE2A4670E2E904600ADB298 /* Build configuration list for PBXNativeTarget "SkyTentacles" */ = {
isa = XCConfigurationList;
buildConfigurations = (
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ AFF2868F17860E830050A578 /* Build configuration list for PBXNativeTarget "QuasiCrystal" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ AFF2869017860E830050A578 /* Debug */,
+ AFF2869117860E830050A578 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
AFF463440C4403E400EE6509 /* Build configuration list for PBXNativeTarget "CWaves" */ = {
isa = XCConfigurationList;
buildConfigurations = (