From 4ade52359b6eba3621566dac79793a33aa4c915f Mon Sep 17 00:00:00 2001 From: Zygo Blaxell Date: Tue, 16 Jul 2013 11:07:35 -0400 Subject: [PATCH] From http://www.jwz.org/xscreensaver/xscreensaver-5.22.tar.gz -rw-r--r-- 1 zblaxell zblaxell 7411666 Jul 16 05:35 xscreensaver-5.22.tar.gz b1d7f97d9b60d9c68c0f3e019cad885f5c7bd6ec xscreensaver-5.22.tar.gz --- Makefile.in | 4 +- OSX/InvertedSlider.h | 7 +- OSX/InvertedSlider.m | 136 +- OSX/Makefile | 11 +- OSX/README | 30 + OSX/SaverListController.m | 5 +- OSX/SaverRunner.h | 6 +- OSX/SaverRunner.m | 354 ++- OSX/SaverRunner.plist | 6 +- OSX/XScreenSaver.plist | 6 +- OSX/XScreenSaverConfigSheet.m | 15 +- OSX/XScreenSaverGLView.m | 22 +- OSX/XScreenSaverView.h | 5 +- OSX/XScreenSaverView.m | 103 +- OSX/apple2-app.xml | 35 + OSX/bindist.rtf | 4 +- OSX/build-fntable.pl | 50 +- OSX/iSaverRunner.plist | 13 +- ...function_tables.h => ios-function-table.m} | 27 +- OSX/phosphor-app.xml | 30 + OSX/update-info-plist.pl | 6 +- OSX/update-thumbnail.pl | 6 +- README | 14 + driver/XScreenSaver.ad.in | 12 +- driver/XScreenSaver_ad.h | 8 +- driver/exec.c | 3 +- driver/xscreensaver-getimage-file | 6 +- driver/xscreensaver-getimage.c | 23 +- driver/xscreensaver.c | 55 +- hacks/Makefile.in | 22 +- hacks/abstractile.c | 459 ++-- hacks/anemone.c | 3 +- hacks/anemotaxis.c | 3 +- hacks/apple2-main.c | 8 +- hacks/attraction.c | 159 +- hacks/attraction.man | 21 +- hacks/blaster.c | 3 + hacks/blitspin.c | 3 + hacks/bouboule.c | 3 +- hacks/boxfit.c | 9 +- hacks/braid.c | 1 + hacks/bumps.c | 112 +- hacks/ccurve.c | 6 +- hacks/celtic.c | 9 +- hacks/cloudlife.c | 6 +- hacks/compile_axp.com | 1 + hacks/compile_decc.com | 1 + hacks/config/README | 4 +- hacks/config/apple2.xml | 4 + hacks/config/fliptext.xml | 21 +- hacks/config/hexadrop.xml | 56 + hacks/config/kaleidocycle.xml | 47 + hacks/config/phosphor.xml | 2 +- hacks/config/quasicrystal.xml | 51 + hacks/config/unknownpleasures.xml | 47 + hacks/coral.c | 8 +- hacks/critical.c | 8 +- hacks/crystal.c | 30 +- hacks/cwaves.c | 10 +- hacks/cynosure.c | 6 +- hacks/decayscreen.c | 9 +- hacks/deco.c | 21 +- hacks/deluxe.c | 16 +- hacks/demon.c | 1 + hacks/discrete.c | 1 + hacks/distort.c | 3 + hacks/drift.c | 1 + hacks/epicycle.c | 8 +- hacks/euler2d.c | 1 + hacks/fadeplot.c | 1 + hacks/fireworkx.c | 8 +- hacks/flame.c | 8 +- hacks/fluidballs.c | 51 +- hacks/galaxy.c | 1 + hacks/glx/Makefile.in | 73 +- hacks/glx/companion.c | 1 - hacks/glx/cubenetic.c | 2 +- hacks/glx/dnalogo.c | 5 +- hacks/glx/engine.c | 6 +- hacks/glx/font-ximage.c | 4 +- hacks/glx/glschool.c | 2 +- hacks/glx/gltrackball.c | 17 +- hacks/glx/jwzgles.c | 222 +- hacks/glx/jwzglesI.h | 28 +- hacks/glx/kaleidocycle.c | 566 +++++ hacks/glx/kaleidocycle.man | 96 + hacks/glx/quasicrystal.c | 441 ++++ hacks/glx/quasicrystal.man | 84 + hacks/glx/tangram.c | 2 + hacks/glx/texfont.c | 5 +- hacks/glx/unknownpleasures.c | 512 +++++ hacks/glx/unknownpleasures.man | 74 + hacks/glx/xpm-ximage.c | 6 +- hacks/goop.c | 3 + hacks/grav.c | 1 + hacks/greynetic.c | 3 + hacks/halftone.c | 5 +- hacks/halo.c | 12 +- hacks/helix.c | 3 + hacks/hexadrop.c | 408 ++++ hacks/hexadrop.man | 74 + hacks/hopalong.c | 1 + hacks/ifs.c | 5 +- hacks/imsmap.c | 9 +- hacks/interaggregate.c | 3 + hacks/interference.c | 705 +++++- hacks/intermomentary.c | 5 +- hacks/julia.c | 11 +- hacks/kaleidescope.c | 3 + hacks/kumppa.c | 3 + hacks/loop.c | 1 + hacks/maze.c | 3 + hacks/memscroller.c | 2 +- hacks/metaballs.c | 3 + hacks/moire.c | 7 +- hacks/moire2.c | 8 +- hacks/munch.c | 3 + hacks/nerverot.c | 6 +- hacks/pacman.c | 4 +- hacks/pacman_level.c | 4 +- hacks/pedal.c | 3 + hacks/penrose.c | 1 + hacks/petri.c | 5 +- hacks/phosphor.c | 5 +- hacks/piecewise.c | 7 +- hacks/polyominoes.c | 90 +- hacks/popsquares.c | 5 +- hacks/qix.c | 3 + hacks/rd-bomb.c | 8 +- hacks/ripples.c | 8 +- hacks/rocks.c | 8 +- hacks/rorschach.c | 3 + hacks/rotzoomer.c | 3 + hacks/screenhack.c | 8 +- hacks/shadebobs.c | 3 + hacks/sierpinski.c | 1 + hacks/slidescreen.c | 3 + hacks/slip.c | 3 +- hacks/speedmine.c | 19 +- hacks/spotlight.c | 3 + hacks/squiral.c | 8 +- hacks/starfish.c | 13 +- hacks/strange.c | 3 +- hacks/substrate.c | 3 + hacks/swirl.c | 10 +- hacks/thornbird.c | 1 + hacks/triangle.c | 4 +- hacks/truchet.c | 3 + hacks/twang.c | 3 + hacks/vermiculate.c | 8 +- hacks/wander.c | 8 +- hacks/whirlwindwarp.c | 3 + hacks/whirlygig.c | 4 +- hacks/wormhole.c | 3 + hacks/xflame.c | 24 +- hacks/xjack.c | 33 +- hacks/xlockmore.c | 11 +- hacks/xlyap.c | 17 +- hacks/xml2man.pl | 25 +- hacks/xrayswarm.c | 3 + hacks/xspirograph.c | 3 + hacks/zoom.c | 3 + po/POTFILES.in | 6 +- setup.com | 1 + utils/colors.c | 101 +- utils/colors.h | 35 +- utils/grabclient.c | 16 +- utils/grabscreen.c | 4 +- utils/minixpm.c | 18 +- utils/spline.c | 2 +- utils/version.h | 2 +- xscreensaver.spec | 2 +- xscreensaver.xcodeproj/project.pbxproj | 1933 ++++++++++------- 173 files changed, 6268 insertions(+), 1930 deletions(-) create mode 100644 OSX/apple2-app.xml rename OSX/{ios_function_tables.h => ios-function-table.m} (95%) create mode 100644 OSX/phosphor-app.xml create mode 100644 hacks/config/hexadrop.xml create mode 100644 hacks/config/kaleidocycle.xml create mode 100644 hacks/config/quasicrystal.xml create mode 100644 hacks/config/unknownpleasures.xml create mode 100644 hacks/glx/kaleidocycle.c create mode 100644 hacks/glx/kaleidocycle.man create mode 100644 hacks/glx/quasicrystal.c create mode 100644 hacks/glx/quasicrystal.man create mode 100644 hacks/glx/unknownpleasures.c create mode 100644 hacks/glx/unknownpleasures.man create mode 100644 hacks/hexadrop.c create mode 100644 hacks/hexadrop.man diff --git a/Makefile.in b/Makefile.in index c905925f..ccbe5f8b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -334,7 +334,9 @@ www:: 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 \ diff --git a/OSX/InvertedSlider.h b/OSX/InvertedSlider.h index 6e9dece8..986e8edd 100644 --- a/OSX/InvertedSlider.h +++ b/OSX/InvertedSlider.h @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 2006-2013 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 @@ -30,4 +30,9 @@ - (id) initWithFrame:(NSRect)r inverted:(BOOL)_inv integers:(BOOL)_int; +# ifdef USE_IPHONE +- (double) transformedValue; +- (void) setTransformedValue:(double)v; +# endif + @end diff --git a/OSX/InvertedSlider.m b/OSX/InvertedSlider.m index c4fd5e37..605d6e2d 100644 --- a/OSX/InvertedSlider.m +++ b/OSX/InvertedSlider.m @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 2006-2013 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 @@ -49,72 +49,36 @@ 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; @@ -123,18 +87,18 @@ 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 )v @@ -146,14 +110,42 @@ [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 diff --git a/OSX/Makefile b/OSX/Makefile index b2354dfa..7e99452e 100644 --- a/OSX/Makefile +++ b/OSX/Makefile @@ -1,4 +1,4 @@ -# 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" @@ -12,7 +12,7 @@ all: debug release clean: -rm -rf build -# cd ..; $(XCODEBUILD) -target $(TARGETS) clean +# cd ..; $(XCODEBUILD) $(TARGETS) clean distclean: -rm -f config.status config.cache config.log \ @@ -33,7 +33,8 @@ release:: update_thumbs 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 @@ -62,8 +63,8 @@ update_thumbs:: # 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: diff --git a/OSX/README b/OSX/README index 551e3bb6..f8f7458b 100644 --- a/OSX/README +++ b/OSX/README @@ -8,3 +8,33 @@ directories. 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. diff --git a/OSX/SaverListController.m b/OSX/SaverListController.m index 484cb168..e0abeca6 100644 --- a/OSX/SaverListController.m +++ b/OSX/SaverListController.m @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 2012-2013 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 @@ -36,6 +36,7 @@ { // 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] @@ -315,6 +316,8 @@ */ - (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) diff --git a/OSX/SaverRunner.h b/OSX/SaverRunner.h index 0284ccf5..b8716263 100644 --- a/OSX/SaverRunner.h +++ b/OSX/SaverRunner.h @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 2006-2013 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 @@ -55,6 +55,8 @@ GLuint gl_framebuffer, gl_renderbuffer; IBOutlet UIView *view; UIImage *saved_screenshot; + UIView *aboutBox; + NSTimer *splashTimer; # endif // USE_IPHONE } @@ -62,9 +64,9 @@ - (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; diff --git a/OSX/SaverRunner.m b/OSX/SaverRunner.m index 526f62eb..c94e6c14 100644 --- a/OSX/SaverRunner.m +++ b/OSX/SaverRunner.m @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 2006-2013 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 @@ -19,7 +19,7 @@ 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. @@ -118,7 +118,10 @@ 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" @@ -211,6 +214,7 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) } NSAssert (sv, @"no saver view"); + if (!sv) return; NSWindow *prefs = [sv configureSheet]; [NSApp beginSheet:prefs @@ -362,8 +366,6 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) - (void)loadSaver:(NSString *)name launch:(BOOL)launch { - // NSLog (@"selecting saver \"%@\"", name); - # ifndef USE_IPHONE if (saverName && [saverName isEqualToString: name]) { @@ -413,6 +415,10 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) # else // USE_IPHONE +# if TARGET_IPHONE_SIMULATOR + NSLog (@"selecting saver \"%@\"", name); +# endif + NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; [prefs setObject:name forKey:@"selectedSaverName"]; [prefs synchronize]; @@ -429,7 +435,7 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) 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]]; @@ -469,6 +475,7 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) [backgroundView addSubview: saverView]; [saverView becomeFirstResponder]; [saverView startAnimation]; + [self aboutPanel:nil]; } # endif // USE_IPHONE } @@ -480,10 +487,10 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) } -# ifndef USE_IPHONE - - (void)aboutPanel:(id)sender { +# ifndef USE_IPHONE + NSDictionary *bd = [saverBundle infoDictionary]; NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:20]; @@ -499,9 +506,168 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) [[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 @@ -560,6 +726,9 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) [result addObject: name]; } + if (! [result count]) + result = 0; + return result; } @@ -570,7 +739,11 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) 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. @@ -578,14 +751,16 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) 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++) { @@ -656,6 +831,84 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) #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:@"" + 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. */ @@ -663,73 +916,9 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) { 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:@"" - 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; } @@ -969,8 +1158,9 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) # 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 diff --git a/OSX/SaverRunner.plist b/OSX/SaverRunner.plist index 0a864dc5..28460692 100644 --- a/OSX/SaverRunner.plist +++ b/OSX/SaverRunner.plist @@ -12,7 +12,7 @@ http://www.jwz.org/xscreensaver/ CFBundleIconFile SaverRunner CFBundleIdentifier - org.jwz.xscreensaver.${EXECUTABLE_NAME} + ${BUNDLE_IDENTIFIER} CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString @@ -22,11 +22,11 @@ http://www.jwz.org/xscreensaver/ CFBundlePackageType APPL CFBundleShortVersionString - 5.21 + 5.22 CFBundleSignature ???? CFBundleVersion - 5.21 + 5.22 LSMinimumSystemVersion 10.4 NSHumanReadableCopyright diff --git a/OSX/XScreenSaver.plist b/OSX/XScreenSaver.plist index 36c8a0ef..b47a5fd3 100644 --- a/OSX/XScreenSaver.plist +++ b/OSX/XScreenSaver.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - org.jwz.xscreensaver.${EXECUTABLE_NAME} + ${BUNDLE_IDENTIFIER} CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -15,11 +15,11 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 5.21 + 5.22 CFBundleSignature ???? CFBundleVersion - 5.21 + 5.22 LSMinimumSystemVersion 10.4 NSMainNibFile diff --git a/OSX/XScreenSaverConfigSheet.m b/OSX/XScreenSaverConfigSheet.m index b32e4761..ebf33827 100644 --- a/OSX/XScreenSaverConfigSheet.m +++ b/OSX/XScreenSaverConfigSheet.m @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 2006-2013 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 @@ -533,7 +533,12 @@ static void layout_group (NSView *group, BOOL horiz_p); 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 @@ -689,7 +694,11 @@ static void layout_group (NSView *group, BOOL horiz_p); 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)]; diff --git a/OSX/XScreenSaverGLView.m b/OSX/XScreenSaverGLView.m index 3d3aeeab..7ec10090 100644 --- a/OSX/XScreenSaverGLView.m +++ b/OSX/XScreenSaverGLView.m @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 2006-2013 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 @@ -207,13 +207,13 @@ extern void check_gl_error (const char *type); { # ifdef USE_IPHONE UIGraphicsPushContext (backbuffer); -#endif +# endif [self render_x11]; # ifdef USE_IPHONE UIGraphicsPopContext(); -#endif +# endif } @@ -233,6 +233,7 @@ extern void check_gl_error (const char *type); # 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); @@ -247,7 +248,7 @@ extern void check_gl_error (const char *type); CGColorSpaceRelease (cs); } } -# endif // USE_IPHONE +# endif // USE_BACKBUFFER - (void)dealloc { @@ -338,6 +339,7 @@ init_GL (ModeInfo *mi) NSAssert (pixfmt, @"unable to create NSOpenGLPixelFormat"); + // #### Analyze says: "Potential leak of an object stored into pixfmt" ctx = [[NSOpenGLContext alloc] initWithFormat:pixfmt shareContext:nil]; @@ -349,9 +351,8 @@ init_GL (ModeInfo *mi) [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"); @@ -397,9 +398,9 @@ init_GL (ModeInfo *mi) 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; @@ -410,6 +411,7 @@ init_GL (ModeInfo *mi) 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"); diff --git a/OSX/XScreenSaverView.h b/OSX/XScreenSaverView.h index 0fe2046c..6902c559 100644 --- a/OSX/XScreenSaverView.h +++ b/OSX/XScreenSaverView.h @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 2006-2013 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 @@ -86,12 +86,15 @@ 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 diff --git a/OSX/XScreenSaverView.m b/OSX/XScreenSaverView.m index a0dc3813..d773fc84 100644 --- a/OSX/XScreenSaverView.m +++ b/OSX/XScreenSaverView.m @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 2006-2013 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 @@ -22,11 +22,6 @@ #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. @@ -50,6 +45,8 @@ int mono_p = 0; # ifdef USE_IPHONE +extern NSDictionary *make_function_table_dict(void); // ios-function-table.m + /* Stub definition of the superclass, for iPhone. */ @implementation ScreenSaverView @@ -98,7 +95,6 @@ int mono_p = 0; @interface XScreenSaverView (Private) -- (void) stopAndClose; - (void) stopAndClose:(Bool)relaunch; @end @@ -120,6 +116,7 @@ int mono_p = 0; 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]; @@ -141,9 +138,9 @@ int mono_p = 0; # 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 @@ -236,7 +233,7 @@ add_default_options (const XrmOptionDescRec *opts, # 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 @@ -474,6 +471,7 @@ double_time (void) selector:@selector(allSystemsGo:) userInfo:nil repeats:NO]; + # endif // USE_IPHONE // Never automatically turn the screen off if we are docked, @@ -562,6 +560,10 @@ screenhack_do_fps (Display *dpy, Window w, fps_state *fpst, void *closure) 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 { @@ -629,9 +631,10 @@ double current_device_rotation (void) # 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]; } @@ -639,7 +642,7 @@ double current_device_rotation (void) - (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 @@ -784,6 +787,13 @@ double current_device_rotation (void) 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); @@ -995,18 +1005,19 @@ double current_device_rotation (void) # 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 @@ -1081,6 +1092,7 @@ double current_device_rotation (void) // #### 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; @@ -1207,7 +1219,7 @@ double current_device_rotation (void) break; } default: - NSAssert (0, @"unknown X11 event type: %d", type); + NSAssert1 (0, @"unknown X11 event type: %d", type); break; } @@ -1288,7 +1300,7 @@ double current_device_rotation (void) #else // USE_IPHONE -- (void) stopAndClose +- (void) stopAndClose:(Bool)relaunch_p { if ([self isAnimating]) [self stopAnimation]; @@ -1305,26 +1317,23 @@ double current_device_rotation (void) } 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; + }]; } } @@ -1505,6 +1514,10 @@ double current_device_rotation (void) - (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) { @@ -1542,6 +1555,10 @@ double current_device_rotation (void) - (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; @@ -1560,7 +1577,7 @@ double current_device_rotation (void) 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; } @@ -1581,6 +1598,10 @@ double current_device_rotation (void) - (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; diff --git a/OSX/apple2-app.xml b/OSX/apple2-app.xml new file mode 100644 index 00000000..583aeb18 --- /dev/null +++ b/OSX/apple2-app.xml @@ -0,0 +1,35 @@ + + + + + + +
+ + + + + + + + +
+ + <_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. + +
diff --git a/OSX/bindist.rtf b/OSX/bindist.rtf index 22875fa3..27d041c6 100644 --- a/OSX/bindist.rtf +++ b/OSX/bindist.rtf @@ -18,8 +18,8 @@ XScreenSaver\ 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/}} \ diff --git a/OSX/build-fntable.pl b/OSX/build-fntable.pl index f5e3b1f3..ed294aad 100755 --- a/OSX/build-fntable.pl +++ b/OSX/build-fntable.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# Copyright © 2012 Jamie Zawinski +# Copyright © 2012-2013 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 @@ -9,7 +9,7 @@ # 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. # @@ -23,7 +23,7 @@ require 5; 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; @@ -42,20 +42,40 @@ sub build_h($$) { 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 \n" . + "#import \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)) { @@ -64,7 +84,11 @@ sub build_h($$) { 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"; @@ -88,7 +112,7 @@ sub error($) { } sub usage() { - print STDERR "usage: $progname [--verbose] program.app output.h\n"; + print STDERR "usage: $progname [--verbose] program.app output.c\n"; exit 1; } diff --git a/OSX/iSaverRunner.plist b/OSX/iSaverRunner.plist index 8a2404a0..43ce2f4e 100644 --- a/OSX/iSaverRunner.plist +++ b/OSX/iSaverRunner.plist @@ -9,7 +9,7 @@ CFBundleDevelopmentRegion English CFBundleVersion - 5.21 + 5.22 NSMainNibFile iSaverRunner CFBundlePackageType @@ -19,13 +19,14 @@ UIStatusBarHidden CFBundleShortVersionString - 5.21 + 5.22 CFBundleInfoDictionaryVersion 6.0 UIRequiredDeviceCapabilities - - armv7 - + + opengles-1 + + CFBundleExecutable ${EXECUTABLE_NAME} UISupportedInterfaceOrientations~ipad @@ -38,7 +39,7 @@ CFBundleLongVersionString XScreenSaver 5.15, © 2001-2012 Jamie Zawinski. CFBundleIdentifier - org.jwz.xscreensaver + ${BUNDLE_IDENTIFIER} CFBundleSignature ???? CFBundleIconFiles diff --git a/OSX/ios_function_tables.h b/OSX/ios-function-table.m similarity index 95% rename from OSX/ios_function_tables.h rename to OSX/ios-function-table.m index 58545876..b109fb67 100644 --- a/OSX/ios_function_tables.h +++ b/OSX/ios-function-table.m @@ -1,3 +1,12 @@ +/* Generated file, do not edit. + Created: Mon Jul 8 16:42:29 2013 by build-fntable.pl 1.2. + */ + +#import +#import + +extern NSDictionary *make_function_table_dict(void); + extern struct xscreensaver_function_table *abstractile_xscreensaver_function_table, *anemone_xscreensaver_function_table, @@ -87,6 +96,7 @@ extern struct 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, @@ -101,6 +111,7 @@ extern struct 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, @@ -142,6 +153,7 @@ extern struct 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, @@ -180,6 +192,7 @@ extern struct 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, @@ -194,10 +207,16 @@ extern struct xscreensaver_function_table *xspirograph_xscreensaver_function_table, *zoom_xscreensaver_function_table; -static NSDictionary *make_function_tables_dict(void) +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", @@ -286,6 +305,7 @@ static NSDictionary *make_function_tables_dict(void) [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", @@ -300,6 +320,7 @@ static NSDictionary *make_function_tables_dict(void) [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", @@ -341,6 +362,7 @@ static NSDictionary *make_function_tables_dict(void) [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", @@ -379,6 +401,7 @@ static NSDictionary *make_function_tables_dict(void) [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", @@ -392,5 +415,7 @@ static NSDictionary *make_function_tables_dict(void) [NSValue valueWithPointer:&xrayswarm_xscreensaver_function_table], @"xrayswarm", [NSValue valueWithPointer:&xspirograph_xscreensaver_function_table], @"xspirograph", [NSValue valueWithPointer:&zoom_xscreensaver_function_table], @"zoom", +#endif nil]; } + diff --git a/OSX/phosphor-app.xml b/OSX/phosphor-app.xml new file mode 100644 index 00000000..7f10d5af --- /dev/null +++ b/OSX/phosphor-app.xml @@ -0,0 +1,30 @@ + + + + + + +
+ + + + + + + +
+ + <_description> +A fully-functional VT100 terminal emulator simulating an old terminal, +with large pixels and long-sustain phosphor. + +Written by Jamie Zawinski; 1999. + +
diff --git a/OSX/update-info-plist.pl b/OSX/update-info-plist.pl index ce17e1cd..ec8981a1 100755 --- a/OSX/update-info-plist.pl +++ b/OSX/update-info-plist.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# Copyright © 2006-2013 Jamie Zawinski +# Copyright © 2006-2013 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 @@ -24,7 +24,7 @@ use strict; 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 @@ -47,6 +47,7 @@ sub read_info_plist($) { } else { error ("$file: $!"); } + print STDERR "$progname: read $file\n" if ($verbose > 2); local $/ = undef; # read entire file my $body = <$in>; close $in; @@ -82,6 +83,7 @@ sub read_saver_xml($) { } else { error ("$file: $!"); } + print STDERR "$progname: read $file\n" if ($verbose > 2); local $/ = undef; # read entire file my $body = <$in>; close $in; diff --git a/OSX/update-thumbnail.pl b/OSX/update-thumbnail.pl index 407cc8f2..0df5d1f7 100755 --- a/OSX/update-thumbnail.pl +++ b/OSX/update-thumbnail.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# Copyright © 2006-2012 Jamie Zawinski +# Copyright © 2006-2013 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 @@ -18,10 +18,12 @@ require 5; 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 = @_; diff --git a/README b/README index 0b7de8bc..1e98c0a8 100644 --- a/README +++ b/README @@ -38,6 +38,20 @@ XScreenSaver has an extensive manual -- please read it! =============================================================================== +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'. diff --git a/driver/XScreenSaver.ad.in b/driver/XScreenSaver.ad.in index 12d49d23..9ab4425d 100644 --- a/driver/XScreenSaver.ad.in +++ b/driver/XScreenSaver.ad.in @@ -4,8 +4,8 @@ ! 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/ @@ -355,7 +355,11 @@ GetViewPortIsFullOfLies: False @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 @@ -474,6 +478,7 @@ XScreenSaver.bourneShell: /bin/sh *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 @@ -490,6 +495,7 @@ XScreenSaver.bourneShell: /bin/sh *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 diff --git a/driver/XScreenSaver_ad.h b/driver/XScreenSaver_ad.h index 3b6b133b..4c9d55f2 100644 --- a/driver/XScreenSaver_ad.h +++ b/driver/XScreenSaver_ad.h @@ -251,7 +251,11 @@ 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", @@ -340,6 +344,7 @@ "*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", @@ -356,6 +361,7 @@ "*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", diff --git a/driver/exec.c b/driver/exec.c index 5da53a01..38ca88a0 100644 --- a/driver/exec.c +++ b/driver/exec.c @@ -1,5 +1,5 @@ /* exec.c --- executes a program in *this* pid, without an intervening process. - * xscreensaver, Copyright (c) 1991-2008 Jamie Zawinski + * xscreensaver, Copyright (c) 1991-2013 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 @@ -286,6 +286,7 @@ on_path_p (const char *program) strcat (p2, "/"); strcat (p2, cmd); result = (0 == stat (p2, &st)); + free (p2); if (result) goto DONE; token = strtok (0, ":"); diff --git a/driver/xscreensaver-getimage-file b/driver/xscreensaver-getimage-file index cc61a08d..7b45988d 100755 --- a/driver/xscreensaver-getimage-file +++ b/driver/xscreensaver-getimage-file @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# Copyright © 2001-2012 Jamie Zawinski . +# Copyright © 2001-2013 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 @@ -57,7 +57,7 @@ BEGIN { eval 'use LWP::Simple;' } 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; @@ -330,6 +330,8 @@ sub write_cache($) { 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]+);?)/ diff --git a/driver/xscreensaver-getimage.c b/driver/xscreensaver-getimage.c index 8eac38de..7123265c 100644 --- a/driver/xscreensaver-getimage.c +++ b/driver/xscreensaver-getimage.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2001-2012 by Jamie Zawinski +/* xscreensaver, Copyright (c) 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 @@ -1666,6 +1666,8 @@ get_image (Screen *screen, draw_colorbars (screen, xgwa.visual, drawable, xgwa.colormap, 0, 0, 0, 0); XSync (dpy, False); + if (! file_prop) file_prop = ""; + } break; @@ -1706,8 +1708,23 @@ get_image (Screen *screen, { 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); diff --git a/driver/xscreensaver.c b/driver/xscreensaver.c index daacb410..e9ed44e3 100644 --- a/driver/xscreensaver.c +++ b/driver/xscreensaver.c @@ -1802,29 +1802,40 @@ handle_clientmessage (saver_info *si, XEvent *event, Bool until_idle_p) } 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) { diff --git a/hacks/Makefile.in b/hacks/Makefile.in index 92c67dfb..25bc2b0a 100644 --- a/hacks/Makefile.in +++ b/hacks/Makefile.in @@ -113,7 +113,7 @@ SRCS = attraction.c blitspin.c bouboule.c braid.c bubbles.c \ 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 @@ -153,7 +153,7 @@ OBJS = attraction.o blitspin.o bouboule.o braid.o bubbles.o \ 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 \ @@ -174,7 +174,7 @@ EXES = attraction blitspin bouboule braid decayscreen deco \ 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 @@ -226,7 +226,7 @@ MEN = anemone.man apollonian.man attraction.man \ 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 \ @@ -841,6 +841,9 @@ abstractile: abstractile.o $(HACK_OBJS) $(COL) 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. # @@ -1709,6 +1712,17 @@ helix.o: $(UTILS_SRC)/resources.h 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 diff --git a/hacks/abstractile.c b/hacks/abstractile.c index 647b7aab..aaac029e 100644 --- a/hacks/abstractile.c +++ b/hacks/abstractile.c @@ -1,4 +1,4 @@ -/* +/* * Copyright (c) 2004-2009 Steve Sundstrom * * Permission to use, copy, modify, distribute, and sell this software and its @@ -6,7 +6,7 @@ * 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. */ @@ -41,7 +41,7 @@ #define PT_NL 3 #define D3D_NONE 0 -#define D3D_BLOCK 1 +#define D3D_BLOCK 1 #define D3D_NEON 2 #define D3D_TILED 3 @@ -74,7 +74,7 @@ struct gridStruct { 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 */ @@ -118,10 +118,10 @@ struct state { 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 */ @@ -130,24 +130,24 @@ struct state { 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; @@ -163,10 +163,10 @@ _dist(struct state *st, int x1, int x2, int y1, int y2, int s) } } -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)); @@ -178,30 +178,30 @@ _wave(struct state *st, int x, int h, int l, int wave) 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; @@ -213,7 +213,7 @@ _init_zlist(struct state *st) 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; zgridn; z++) { y=random()%st->gridn; @@ -224,25 +224,24 @@ _init_zlist(struct state *st) } 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]; @@ -281,7 +280,7 @@ _init_colors(struct state *st) /* 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; c1cmap%4) { case 0: /* all */ - for (c1=0; c1ncolors; c1++) + for (c1=0; c1ncolors; c1++) col[c1]=random()%BASECOLORS; break; case 1: /* darks */ - for (c1=0; c1ncolors; c1++) + for (c1=0; c1ncolors; c1++) col[c1]=random()%15; break; case 2: /* semi consecutive darks */ col[0]=random()%15; - for (c1=1; c1ncolors; c1++) + for (c1=1; c1ncolors; c1++) col[c1]=(col[c1-1]+1+random()%2)%15; break; case 3: /* consecutive darks */ col[0]=random()%(15-st->ncolors); - for (c1=1; c1ncolors; c1++) + for (c1=1; c1ncolors; c1++) col[c1]=col[c1-1]+1; break; } for (c1=0; c1ncolors; 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; } @@ -366,9 +365,9 @@ _init_colors(struct state *st) 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: @@ -379,21 +378,21 @@ _init_colors(struct state *st) 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 */ @@ -401,12 +400,12 @@ _init_colors(struct state *st) 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]; @@ -414,9 +413,9 @@ _init_colors(struct state *st) } 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]; @@ -427,8 +426,8 @@ _init_colors(struct state *st) 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; } @@ -447,7 +446,7 @@ _init_colors(struct state *st) 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) @@ -457,7 +456,7 @@ static int _comparedeo(const void *i, const void *j) 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; @@ -495,7 +494,7 @@ _hv(struct state *st, int x, int y, int d1, int d2, int pn, Bool de) return(r); } -static int +static int _getdeo(struct state *st, int x, int y, int map, int de) { int cr; @@ -505,39 +504,39 @@ _getdeo(struct state *st, int x, int y, int map, int de) 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 */ @@ -546,19 +545,19 @@ _getdeo(struct state *st, int x, int y, int map, int de) 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; @@ -578,7 +577,7 @@ _getdeo(struct state *st, int x, int y, int map, int de) return(1); } -static void +static void _init_screen(struct state *st) { int nstr, x; @@ -606,7 +605,7 @@ _init_screen(struct state *st) 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"); @@ -627,7 +626,7 @@ _init_screen(struct state *st) 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); } @@ -637,9 +636,9 @@ _init_screen(struct state *st) 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); @@ -647,13 +646,13 @@ _init_screen(struct state *st) (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; @@ -663,7 +662,7 @@ _init_screen(struct state *st) st->lwid++; if (st->tile==TILE_THIN) st->lwid=2; - + _init_zlist(st); st->maxlen=(st->lwid>6) ? 2+(random()%4) : @@ -678,10 +677,10 @@ _init_screen(struct state *st) 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; @@ -694,10 +693,10 @@ _init_screen(struct state *st) 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; @@ -709,7 +708,7 @@ _init_screen(struct state *st) 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)); @@ -720,7 +719,7 @@ _init_screen(struct state *st) } } -static int +static int _shape(struct state *st, int x, int y, int rx, int ry, int n) { switch(st->shape[n]) { @@ -738,22 +737,22 @@ _shape(struct state *st, int x, int y, int rx, int ry, int 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; @@ -857,7 +856,7 @@ _pattern(struct state *st, int x, int y, int n) 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: @@ -897,7 +896,7 @@ _pattern(struct state *st, int x, int y, int n) 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 */ @@ -912,27 +911,27 @@ _pattern(struct state *st, int x, int y, int n) return (abs(v)); } -static int +static int _getcolor(struct state *st, int x, int y) { int n, cv[LAYERS]; - + for (n=0; nlayers; 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]); } @@ -940,58 +939,58 @@ _getcolor(struct state *st, int x, int y) /* 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 ((zgridn-st->gridx) && (!st->grid[z].hl) && - (!st->grid[z].hr) && (!st->grid[z+st->gridx].line)) { - od[no]=DIR_DOWN; - no++; + if ((zgridn-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; @@ -1006,14 +1005,14 @@ _fillgrid(struct state *st) st->grid[gridc].line=st->li; } if (st->dline[st->li].hv) { - if (n) + if (n) st->grid[gridc].hr=st->li; if (ndline[st->li].len) st->grid[gridc].hl=st->li; } else { - if (n) + if (n) st->grid[gridc].vd=st->li; - if (ndline[st->li].len) + if (ndline[st->li].len) st->grid[gridc].vu=st->li; } if (st->fi>=st->gridn) { @@ -1023,7 +1022,7 @@ _fillgrid(struct state *st) } } -static void +static void _newline(struct state *st) { int bl, bz, dir, lt, x, y, z; @@ -1035,60 +1034,60 @@ _newline(struct state *st) 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->olenmaxlen) && (random()%st->bnratio)) { + } else if ((st->bnratio>1) && (st->bln>0) && + (st->olenmaxlen) && (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) @@ -1096,18 +1095,18 @@ _create_screen(struct state *st) 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; @@ -1120,13 +1119,13 @@ _fill_outline(struct state *st, int di) 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; @@ -1137,7 +1136,7 @@ _XFillRectangle(struct state *st, int di, int adj) 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) { @@ -1154,25 +1153,25 @@ _XFillRectangle(struct state *st, int di, int adj) 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 (hlwid) { /* 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]; @@ -1184,12 +1183,12 @@ _XFillTriangle(struct state *st, int color, int x1, int y1, int x2, int y2, 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]; @@ -1203,11 +1202,11 @@ _XFillPolygon4(struct state *st, int color, int x1, int y1, int x2, int y2, 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; @@ -1223,26 +1222,26 @@ _draw_tiled(struct state *st, int color) 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 (cdline[st->di].len) + if (cdline[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 (cdline[st->di].len) + if (cdline[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) { @@ -1255,13 +1254,13 @@ _draw_tiled(struct state *st, int color) 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: @@ -1272,13 +1271,13 @@ _draw_tiled(struct state *st, int color) 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; } @@ -1339,7 +1338,7 @@ _draw_tiled(struct state *st, int color) } } -static long +static long _mselapsed(struct state *st) { struct timeval t; @@ -1349,7 +1348,7 @@ _mselapsed(struct state *st) 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; @@ -1366,7 +1365,7 @@ _draw_lines(struct state *st) st->dline[st->di].ndol=st->fdol[st->dline[st->di].obj]; st->fdol[st->dline[st->di].obj]=st->di; for (sh=0; shlwid/2; sh++) { - XSetForeground(st->display, st->fgc, + XSetForeground(st->display, st->fgc, st->colors[color+sh].pixel); di=st->di; while(di>0) { @@ -1379,7 +1378,7 @@ _draw_lines(struct state *st) st->dline[st->di].ndol=st->fdol[st->dline[st->di].obj]; st->fdol[st->dline[st->di].obj]=st->di; for (sh=0; shlwid/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) { @@ -1403,14 +1402,14 @@ _draw_lines(struct state *st) _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 (ndline[st->di].len) + if (ndline[st->di].len) st->grid[z].dhl=st->di; } else { - if (n) + if (n) st->grid[z].dvd=st->di; - if (ndline[st->di].len) + if (ndline[st->di].len) st->grid[z].dvu=st->di; } z+=a; @@ -1427,25 +1426,25 @@ _draw_lines(struct state *st) } } -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) { @@ -1493,7 +1492,7 @@ abstractile_init(Display *display, Window window) /* 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, @@ -1513,12 +1512,12 @@ abstractile_init(Display *display, Window window) 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! */ @@ -1538,9 +1537,9 @@ abstractile_draw (Display *dpy, Window window, void *closure) } 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; diff --git a/hacks/anemone.c b/hacks/anemone.c index f69e0967..27af0130 100644 --- a/hacks/anemone.c +++ b/hacks/anemone.c @@ -211,7 +211,8 @@ anemone_init (Display *disp, Window window) 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); diff --git a/hacks/anemotaxis.c b/hacks/anemotaxis.c index 1f3a859d..50f35348 100644 --- a/hacks/anemotaxis.c +++ b/hacks/anemotaxis.c @@ -379,7 +379,8 @@ anemotaxis_init (Display *disp, Window win) 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"); diff --git a/hacks/apple2-main.c b/hacks/apple2-main.c index 0e1508ff..ef21995b 100644 --- a/hacks/apple2-main.c +++ b/hacks/apple2-main.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1998-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 1998-2013 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 @@ -1778,7 +1778,8 @@ apple2_reshape (Display *dpy, Window window, void *closure, 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 @@ -1786,7 +1787,8 @@ apple2_event (Display *dpy, Window window, void *closure, XEvent *event) { 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; diff --git a/hacks/attraction.c b/hacks/attraction.c index ea85f9ad..c841b001 100644 --- a/hacks/attraction.c +++ b/hacks/attraction.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1992-2008 Jamie Zawinski +/* xscreensaver, Copyright (c) 1992-2013 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 @@ -11,8 +11,8 @@ /* 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 . Mouse control and - viscosity added by "Philip Edward Cutone, III" . + a Lispm screensaver by John Pezaris . Viscosity added by + Philip Edward Cutone, III . John sez: @@ -135,12 +135,11 @@ struct state { 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; @@ -210,11 +209,6 @@ attraction_init (Display *dpy, Window window) 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"); @@ -281,14 +275,16 @@ attraction_init (Display *dpy, Window window) 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; @@ -298,7 +294,8 @@ attraction_init (Display *dpy, Window window) 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: @@ -313,6 +310,10 @@ attraction_init (Display *dpy, Window window) 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); @@ -459,28 +460,6 @@ compute_force (struct state *st, int i, double *dx_ret, double *dy_ret) *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); - } - } } @@ -621,15 +600,33 @@ draw_meter_speed (Display *dpy, Window window, struct state *st, int i) 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++; @@ -671,12 +668,6 @@ attraction_draw (Display *dpy, Window window, void *closure) } - 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); @@ -688,6 +679,7 @@ attraction_draw (Display *dpy, Window window, void *closure) 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; @@ -789,6 +781,21 @@ attraction_draw (Display *dpy, Window window, void *closure) } } } + + 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; @@ -813,7 +820,9 @@ attraction_draw (Display *dpy, Window window, void *closure) 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)); } } @@ -967,6 +976,53 @@ attraction_reshape (Display *dpy, Window window, void *closure, 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; } @@ -999,11 +1055,9 @@ static const char *attraction_defaults [] = { "*threshold: 200", "*delay: 10000", "*glow: false", - "*mouseSize: 10", "*walls: true", "*maxspeed: true", "*cbounce: true", - "*mouse: false", "*viscosity: 1.0", "*orbit: false", "*colorShift: 3", @@ -1012,6 +1066,10 @@ static const char *attraction_defaults [] = { "*radius: 0", "*vx: 0", "*vy: 0", + "*mouseForeground: white", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; @@ -1029,10 +1087,7 @@ static XrmOptionDescRec attraction_options [] = { { "-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" }, diff --git a/hacks/attraction.man b/hacks/attraction.man index a0a9779a..66303553 100644 --- a/hacks/attraction.man +++ b/hacks/attraction.man @@ -23,7 +23,7 @@ attraction - interactions of opposing forces [\-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] @@ -145,23 +145,10 @@ aren't interesting; lower values cause less motion. 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 @@ -221,7 +208,7 @@ made about the suitability of this software for any purpose. It is provided .SH AUTHOR Jamie Zawinski , 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 diff --git a/hacks/blaster.c b/hacks/blaster.c index 1449e115..080a277b 100644 --- a/hacks/blaster.c +++ b/hacks/blaster.c @@ -1129,6 +1129,9 @@ static const char *blaster_defaults [] = { "*move_stars_x: 2", "*move_stars_y: 1", "*move_stars_random: 0", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/blitspin.c b/hacks/blitspin.c index 82661ab0..83f9bd4c 100644 --- a/hacks/blitspin.c +++ b/hacks/blitspin.c @@ -416,6 +416,9 @@ static const char *blitspin_defaults [] = { "*duration: 120", "*bitmap: (default)", "*geometry: 512x512", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/bouboule.c b/hacks/bouboule.c index 081ba485..d7be5a0f 100644 --- a/hacks/bouboule.c +++ b/hacks/bouboule.c @@ -84,7 +84,8 @@ static const char sccsid[] = "@(#)bouboule.c 4.00 97/01/01 xlockmore"; "*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 diff --git a/hacks/boxfit.c b/hacks/boxfit.c index 5daa72cb..3c811ca0 100644 --- a/hacks/boxfit.c +++ b/hacks/boxfit.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2005-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 2005-2013 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 @@ -70,7 +70,7 @@ reset_boxes (state *st) 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) { @@ -121,7 +121,7 @@ reset_boxes (state *st) { 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); @@ -531,6 +531,9 @@ static const char *boxfit_defaults [] = { "*peek: False", "*grabDesktopImages: False", /* HAVE_COCOA */ "*chooseRandomImages: True", /* HAVE_COCOA */ +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/braid.c b/hacks/braid.c index 9ba52c14..c73b89d7 100644 --- a/hacks/braid.c +++ b/hacks/braid.c @@ -38,6 +38,7 @@ static const char sccsid[] = "@(#)braid.c 5.00 2000/11/01 xlockmore"; "*size: -7 \n" \ "*ncolors: 64 \n" \ "*fpsSolid: true \n" \ + "*ignoreRotation: True" \ # define UNIFORM_COLORS # define braid_handle_event 0 diff --git a/hacks/bumps.c b/hacks/bumps.c index c65d46f0..71754d14 100644 --- a/hacks/bumps.c +++ b/hacks/bumps.c @@ -30,6 +30,7 @@ #include +#include #include "screenhack.h" #ifdef HAVE_XSHM_EXTENSION @@ -41,12 +42,6 @@ /* #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; @@ -68,6 +63,9 @@ static const char *bumps_defaults [] = { #ifdef HAVE_XSHM_EXTENSION "*useSHM: True", #endif /* HAVE_XSHM_EXTENSION */ +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; @@ -91,9 +89,9 @@ static XrmOptionDescRec bumps_options [] = { * 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; @@ -112,17 +110,17 @@ typedef struct 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; @@ -142,37 +140,37 @@ static void SoftenBumpMap( SBumps * ); /* 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; @@ -183,7 +181,7 @@ static void CreateSpotLight( SSpotLight *pSpotLight, uint16_ iDiameter, uint16_ 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; iDistYnLightRadius; ++iDistY ) @@ -192,7 +190,7 @@ static void CreateSpotLight( SSpotLight *pSpotLight, uint16_ iDiameter, uint16_ { 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; @@ -251,8 +249,8 @@ static void CreateBumps( SBumps *pBumps, Display *dpy, Window NewWin ) { 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 ); @@ -291,7 +289,7 @@ static void CreateBumps( SBumps *pBumps, Display *dpy, Window NewWin ) { 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. */ @@ -347,7 +345,7 @@ static void SetPalette(Display *dpy, SBumps *pBumps, XWindowAttributes *pXWinAtt XColor BaseColor; XColor Color; char *sColor; /* Spotlight Color */ - int16_ iColor; + int16_t iColor; sColor = get_string_resource(dpy, "color", "Color" ); @@ -374,7 +372,7 @@ static void SetPalette(Display *dpy, SBumps *pBumps, XWindowAttributes *pXWinAtt 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 )^ @@ -382,15 +380,15 @@ static void SetPalette(Display *dpy, SBumps *pBumps, XWindowAttributes *pXWinAtt 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; } @@ -424,11 +422,11 @@ static void InitBumpMap_2(Display *dpy, SBumps *pBumps) { 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; @@ -446,7 +444,7 @@ static void InitBumpMap_2(Display *dpy, SBumps *pBumps) 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-- ) @@ -510,10 +508,10 @@ static void InitBumpMap_2(Display *dpy, SBumps *pBumps) */ 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; @@ -539,7 +537,7 @@ static void SoftenBumpMap( SBumps *pBumps ) } } - memcpy( pBumps->aBumpMap, aTempBuffer, pBumps->iWinWidth * pBumps->iWinHeight * sizeof(uint16_) ); + memcpy( pBumps->aBumpMap, aTempBuffer, pBumps->iWinWidth * pBumps->iWinHeight * sizeof(uint16_t) ); free( aTempBuffer ); } @@ -547,14 +545,14 @@ static void SoftenBumpMap( SBumps *pBumps ) /* 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 ); @@ -569,7 +567,7 @@ static void Execute( SBumps *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; iLightXbytesPerPixel ) { @@ -659,7 +657,7 @@ bumps_init (Display *dpy, Window Win) #ifdef VERBOSE time_t Time = time( NULL ); - uint16_ iFrame = 0; + uint16_t iFrame = 0; #endif /* VERBOSE */ CreateBumps( Bumps, dpy, Win ); diff --git a/hacks/ccurve.c b/hacks/ccurve.c index 6f547bea..d17bda5e 100644 --- a/hacks/ccurve.c +++ b/hacks/ccurve.c @@ -701,7 +701,8 @@ ccurve_init (Display *dpy, Window window) 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, @@ -842,6 +843,9 @@ static const char *ccurve_defaults [] = ".delay: 3", ".pause: 0.4", ".limit: 200000", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/celtic.c b/hacks/celtic.c index e9cef13e..0bf241c2 100644 --- a/hacks/celtic.c +++ b/hacks/celtic.c @@ -838,6 +838,9 @@ static const char *celtic_defaults[] = { "*delay: 10000", "*delay2: 5", "*showGraph: False", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; @@ -919,10 +922,10 @@ celtic_init (Display *d_arg, Window w_arg) 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) @@ -979,7 +982,7 @@ celtic_draw (Display *dpy, Window window, void *closure) /* 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); diff --git a/hacks/cloudlife.c b/hacks/cloudlife.c index 911b99be..4e848ef5 100644 --- a/hacks/cloudlife.c +++ b/hacks/cloudlife.c @@ -302,7 +302,8 @@ cloudlife_init (Display *dpy, Window window) 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); } @@ -397,6 +398,9 @@ static const char *cloudlife_defaults[] = { "*maxAge: 64", "*initialDensity: 30", "*cellSize: 3", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/compile_axp.com b/hacks/compile_axp.com index ccd0e6de..c21080d8 100644 --- a/hacks/compile_axp.com +++ b/hacks/compile_axp.com @@ -55,6 +55,7 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS $ 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 diff --git a/hacks/compile_decc.com b/hacks/compile_decc.com index ccd0e6de..c21080d8 100644 --- a/hacks/compile_decc.com +++ b/hacks/compile_decc.com @@ -55,6 +55,7 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS $ 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 diff --git a/hacks/config/README b/hacks/config/README index 3c9a1f4e..aefbd919 100644 --- a/hacks/config/README +++ b/hacks/config/README @@ -4,8 +4,8 @@ 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/ diff --git a/hacks/config/apple2.xml b/hacks/config/apple2.xml index b4fd4dda..46e06553 100644 --- a/hacks/config/apple2.xml +++ b/hacks/config/apple2.xml @@ -16,6 +16,10 @@ + + diff --git a/hacks/config/fliptext.xml b/hacks/config/fliptext.xml index 270ee242..7079e6aa 100644 --- a/hacks/config/fliptext.xml +++ b/hacks/config/fliptext.xml @@ -4,14 +4,19 @@ - - - +
+ + + + + + +
diff --git a/hacks/config/hexadrop.xml b/hacks/config/hexadrop.xml new file mode 100644 index 00000000..d44ca841 --- /dev/null +++ b/hacks/config/hexadrop.xml @@ -0,0 +1,56 @@ + + + + + + +
+ + + + + + + + + + + + + + + + + +
+ + <_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. + +
diff --git a/hacks/config/kaleidocycle.xml b/hacks/config/kaleidocycle.xml new file mode 100644 index 00000000..7266e548 --- /dev/null +++ b/hacks/config/kaleidocycle.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + <_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. + + diff --git a/hacks/config/phosphor.xml b/hacks/config/phosphor.xml index 3bc86190..15a0025f 100644 --- a/hacks/config/phosphor.xml +++ b/hacks/config/phosphor.xml @@ -2,7 +2,7 @@ - +
diff --git a/hacks/config/quasicrystal.xml b/hacks/config/quasicrystal.xml new file mode 100644 index 00000000..9fd78c82 --- /dev/null +++ b/hacks/config/quasicrystal.xml @@ -0,0 +1,51 @@ + + + + + + +
+ + + + + + + + + + +
+ +
+ + + + +
+ + <_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. + +
diff --git a/hacks/config/unknownpleasures.xml b/hacks/config/unknownpleasures.xml new file mode 100644 index 00000000..655e5b49 --- /dev/null +++ b/hacks/config/unknownpleasures.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + +
+ + + +
+ + <_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. + +
diff --git a/hacks/coral.c b/hacks/coral.c index 62df14cd..6cc50daa 100644 --- a/hacks/coral.c +++ b/hacks/coral.c @@ -67,7 +67,7 @@ init_coral(struct state *st) 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"); @@ -75,7 +75,8 @@ init_coral(struct state *st) 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; @@ -289,6 +290,9 @@ static const char *coral_defaults[] = { "*seeds: 20", /* too many for 640x480, too few for 1280x1024 */ "*delay: 5", "*delay2: 20000", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/critical.c b/hacks/critical.c index 6f9fa760..ab3a6f73 100644 --- a/hacks/critical.c +++ b/hacks/critical.c @@ -216,21 +216,21 @@ setup_colormap (struct state *st, XColor **colors, int *n_colors) 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); @@ -242,7 +242,7 @@ setup_colormap (struct state *st, XColor **colors, int *n_colors) 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); } diff --git a/hacks/crystal.c b/hacks/crystal.c index a1c501d8..3acd7cae 100644 --- a/hacks/crystal.c +++ b/hacks/crystal.c @@ -74,7 +74,8 @@ static const char sccsid[] = "@(#)crystal.c 4.12 98/09/10 xlockmore"; "*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 */ @@ -582,7 +583,8 @@ draw_crystal(ModeInfo * mi) /* 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; @@ -808,7 +810,8 @@ release_crystal(ModeInfo * mi) 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 */ @@ -1175,7 +1178,8 @@ init_crystal(ModeInfo * mi) 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; @@ -1204,14 +1208,20 @@ init_crystal(ModeInfo * mi) } 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); diff --git a/hacks/cwaves.c b/hacks/cwaves.c index 912ccc70..94c23557 100644 --- a/hacks/cwaves.c +++ b/hacks/cwaves.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2007 Jamie Zawinski +/* xscreensaver, Copyright (c) 2007-2013 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 @@ -57,7 +57,7 @@ cwaves_init (Display *dpy, Window window) 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); @@ -170,7 +170,8 @@ cwaves_event (Display *dpy, Window window, void *closure, XEvent *event) 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; @@ -192,6 +193,9 @@ static const char *cwaves_defaults [] = { "*scale: 2", "*debug: False", "*delay: 20000", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/cynosure.c b/hacks/cynosure.c index baf3be43..246a4f0c 100644 --- a/hacks/cynosure.c +++ b/hacks/cynosure.c @@ -125,7 +125,8 @@ cynosure_init (Display *d, Window w) 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; @@ -418,6 +419,9 @@ static const char *cynosure_defaults [] = { "*sway: 30", "*tweak: 20", "*gridSize: 12", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/decayscreen.c b/hacks/decayscreen.c index 42f8149a..d4927b60 100644 --- a/hacks/decayscreen.c +++ b/hacks/decayscreen.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1992-2008 Jamie Zawinski +/* xscreensaver, Copyright (c) 1992-2013 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 @@ -332,8 +332,8 @@ decayscreen_reshape (Display *dpy, Window window, void *closure, 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; } @@ -366,6 +366,9 @@ static const char *decayscreen_defaults [] = { "*delay: 10000", "*mode: random", "*duration: 120", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/deco.c b/hacks/deco.c index 69085525..27ada050 100644 --- a/hacks/deco.c +++ b/hacks/deco.c @@ -1,5 +1,4 @@ -/* xscreensaver, Copyright (c) 1997, 1998, 2002, 2006 - * Jamie Zawinski +/* xscreensaver, Copyright (c) 1997-2013 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 @@ -54,16 +53,16 @@ struct state { /* 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; @@ -104,7 +103,7 @@ make_mondrian_colormap (Display *dpy, Visual *visual, Colormap cmap, 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]; @@ -240,17 +239,20 @@ deco_init (Display *dpy, Window window) 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; @@ -311,6 +313,9 @@ static const char *deco_defaults [] = { "*goldenRatio: False", "*smoothColors: False", "*mondrian: False", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/deluxe.c b/hacks/deluxe.c index 27ba0484..06cfe1b9 100644 --- a/hacks/deluxe.c +++ b/hacks/deluxe.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1999-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 1999-2013 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 @@ -62,7 +62,14 @@ draw_star (struct state *st, Drawable w, struct throbber *t) 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; @@ -312,7 +319,7 @@ deluxe_init (Display *dpy, Window window) #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; @@ -431,6 +438,9 @@ static const char *deluxe_defaults [] = { "*useDBE: True", "*useDBEClear: True", #endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/demon.c b/hacks/demon.c index c9a15e25..94713484 100644 --- a/hacks/demon.c +++ b/hacks/demon.c @@ -58,6 +58,7 @@ static const char sccsid[] = "@(#)demon.c 5.00 2000/11/01 xlockmore"; "*size: -7 \n" \ "*ncolors: 64 \n" \ "*fpsSolid: true \n" \ + "*ignoreRotation: True \n" \ # define demon_handle_event 0 # define UNIFORM_COLORS diff --git a/hacks/discrete.c b/hacks/discrete.c index 1746f726..a78690d0 100644 --- a/hacks/discrete.c +++ b/hacks/discrete.c @@ -38,6 +38,7 @@ static const char sccsid[] = "@(#)discrete.c 5.00 2000/11/01 xlockmore"; "*cycles: 2500 \n" \ "*ncolors: 100 \n" \ "*fpsSolid: true \n" \ + "*ignoreRotation: True \n" \ # define SMOOTH_COLORS # define discrete_handle_event 0 diff --git a/hacks/distort.c b/hacks/distort.c index b2411fc7..8173c43b 100644 --- a/hacks/distort.c +++ b/hacks/distort.c @@ -834,6 +834,9 @@ static const char *distort_defaults [] = { #ifdef HAVE_XSHM_EXTENSION "*useSHM: False", /* xshm turns out not to help. */ #endif /* HAVE_XSHM_EXTENSION */ +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/drift.c b/hacks/drift.c index 711bc09e..3547ca51 100644 --- a/hacks/drift.c +++ b/hacks/drift.c @@ -36,6 +36,7 @@ static const char sccsid[] = "@(#)drift.c 5.00 2000/11/01 xlockmore"; "*count: 30 \n" \ "*ncolors: 200 \n" \ "*fpsSolid: true \n" \ + "*ignoreRotation: True \n" \ # define SMOOTH_COLORS # define drift_handle_event 0 diff --git a/hacks/epicycle.c b/hacks/epicycle.c index 004c0ea5..288999fa 100644 --- a/hacks/epicycle.c +++ b/hacks/epicycle.c @@ -65,6 +65,9 @@ static const char *epicycle_defaults [] = { "*divisorPoisson: 0.4", "*sizeFactorMin: 1.05", "*sizeFactorMax: 2.05", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; @@ -401,7 +404,7 @@ colour_init(struct state *st, XWindowAttributes *pxgwa) */ 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; } @@ -421,7 +424,8 @@ colour_init(struct state *st, XWindowAttributes *pxgwa) 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) */ diff --git a/hacks/euler2d.c b/hacks/euler2d.c index 2a3700bf..307bfd29 100644 --- a/hacks/euler2d.c +++ b/hacks/euler2d.c @@ -47,6 +47,7 @@ static const char sccsid[] = "@(#)euler2d.c 5.00 2000/11/01 xlockmore"; "*cycles: 3000 \n" \ "*ncolors: 64 \n" \ "*fpsSolid: true \n" \ + "*ignoreRotation: True \n" \ # define euler2d_handle_event 0 # define SMOOTH_COLORS diff --git a/hacks/fadeplot.c b/hacks/fadeplot.c index 9fa65f8f..25fe7343 100644 --- a/hacks/fadeplot.c +++ b/hacks/fadeplot.c @@ -35,6 +35,7 @@ static const char sccsid[] = "@(#)fadeplot.c 5.00 2000/11/01 xlockmore"; "*cycles: 1500 \n" \ "*ncolors: 64 \n" \ "*fpsSolid: true \n" \ + "*ignoreRotation: True \n" \ # define BRIGHT_COLORS # define UNIFORM_COLORS diff --git a/hacks/fireworkx.c b/hacks/fireworkx.c index 18148a3e..11bc5e5b 100644 --- a/hacks/fireworkx.c +++ b/hacks/fireworkx.c @@ -45,7 +45,7 @@ #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 */ @@ -709,6 +709,9 @@ fireworkx_init (Display *dpy, Window win) 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); @@ -735,7 +738,8 @@ fireworkx_init (Display *dpy, Window win) { 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); diff --git a/hacks/flame.c b/hacks/flame.c index eed6287c..18db22da 100644 --- a/hacks/flame.c +++ b/hacks/flame.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1993-2008 Jamie Zawinski +/* xscreensaver, Copyright (c) 1993-2013 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 @@ -151,7 +151,8 @@ flame_init (Display *dpy, Window window) 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; @@ -418,6 +419,9 @@ static const char *flame_defaults [] = { "*delay: 50000", "*delay2: 2000000", "*points: 10000", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/fluidballs.c b/hacks/fluidballs.c index 958f7bc1..6bab2287 100644 --- a/hacks/fluidballs.c +++ b/hacks/fluidballs.c @@ -328,6 +328,12 @@ fluidballs_init (Display *dpy, Window window) 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) @@ -443,6 +449,20 @@ check_wall_clock (b_state *state, float max_d) 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)) - @@ -715,17 +735,29 @@ fluidballs_event (Display *dpy, Window window, void *closure, XEvent *event) 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 */ @@ -780,6 +812,9 @@ static const char *fluidballs_defaults [] = { "*useDBE: True", "*useDBEClear: True", #endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/galaxy.c b/hacks/galaxy.c index 43a0b5bf..80039413 100644 --- a/hacks/galaxy.c +++ b/hacks/galaxy.c @@ -45,6 +45,7 @@ static const char sccsid[] = "@(#)galaxy.c 4.04 97/07/28 xlockmore"; "*cycles: 250 \n" \ "*ncolors: 64 \n" \ "*fpsSolid: true \n" \ + "*ignoreRotation: True \n" \ # define UNIFORM_COLORS # define galaxy_handle_event 0 diff --git a/hacks/glx/Makefile.in b/hacks/glx/Makefile.in index 815ca6c2..03de047b 100644 --- a/hacks/glx/Makefile.in +++ b/hacks/glx/Makefile.in @@ -116,7 +116,8 @@ SRCS = xscreensaver-gl-helper.c normals.c glxfonts.c fps-gl.c \ 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 \ @@ -155,7 +156,8 @@ OBJS = xscreensaver-gl-helper.o normals.o glxfonts.o fps-gl.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 \ @@ -170,7 +172,8 @@ GL_EXES = cage gears moebius pipes sproingies stairs superquadrics \ 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 @@ -225,7 +228,8 @@ GL_MEN = atlantis.man boxed.man bubble3d.man cage.man circuit.man \ 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 \ @@ -817,6 +821,17 @@ TBIT_OBJS=tronbit.o tronbit_idle1.o tronbit_idle2.o tronbit_no.o tronbit_yes.o\ 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 @@ -1960,6 +1975,24 @@ juggler3d.o: $(HACK_SRC)/xlockmoreI.h 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 @@ -2296,6 +2329,22 @@ pulsar.o: $(UTILS_SRC)/yarandom.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 @@ -2840,6 +2889,22 @@ tunnel_draw.o: $(UTILS_SRC)/visual.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 diff --git a/hacks/glx/companion.c b/hacks/glx/companion.c index d0c84ed0..b9a290e3 100644 --- a/hacks/glx/companion.c +++ b/hacks/glx/companion.c @@ -19,7 +19,6 @@ #define DEFAULTS "*delay: 30000 \n" \ - "*count: 1 \n" \ "*showFPS: False \n" \ "*count: 3 \n" \ "*wireframe: False \n" \ diff --git a/hacks/glx/cubenetic.c b/hacks/glx/cubenetic.c index 8ae8143f..3f92a545 100644 --- a/hacks/glx/cubenetic.c +++ b/hacks/glx/cubenetic.c @@ -458,7 +458,7 @@ init_cube (ModeInfo *mi) 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], diff --git a/hacks/glx/dnalogo.c b/hacks/glx/dnalogo.c index 1b192428..d6c55148 100644 --- a/hacks/glx/dnalogo.c +++ b/hacks/glx/dnalogo.c @@ -2305,10 +2305,7 @@ draw_logo (ModeInfo *mi) { 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]); diff --git a/hacks/glx/engine.c b/hacks/glx/engine.c index 8c44bff3..9c37c8b8 100644 --- a/hacks/glx/engine.c +++ b/hacks/glx/engine.c @@ -284,13 +284,13 @@ static void make_tables(Engine *e) 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); } } diff --git a/hacks/glx/font-ximage.c b/hacks/glx/font-ximage.c index 25ceb422..227327fc 100644 --- a/hacks/glx/font-ximage.c +++ b/hacks/glx/font-ximage.c @@ -1,5 +1,5 @@ /* font-ximage.c --- renders text to an XImage for use with OpenGL. - * xscreensaver, Copyright (c) 2001, 2003 Jamie Zawinski + * xscreensaver, Copyright (c) 2001-2013 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 @@ -134,6 +134,8 @@ text_to_ximage (Screen *screen, Visual *visual, 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; diff --git a/hacks/glx/glschool.c b/hacks/glx/glschool.c index eb522a03..158a4234 100644 --- a/hacks/glx/glschool.c +++ b/hacks/glx/glschool.c @@ -157,7 +157,7 @@ init_glschool(ModeInfo *mi) 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, diff --git a/hacks/glx/gltrackball.c b/hacks/glx/gltrackball.c index 93d4c542..ee54cf91 100644 --- a/hacks/glx/gltrackball.c +++ b/hacks/glx/gltrackball.c @@ -116,8 +116,8 @@ gltrackball_mousewheel (trackball_state *ts, 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. */ @@ -137,15 +137,14 @@ gltrackball_mousewheel (trackball_state *ts, 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 diff --git a/hacks/glx/jwzgles.c b/hacks/glx/jwzgles.c index f70b120b..8fe0ebcb 100644 --- a/hacks/glx/jwzgles.c +++ b/hacks/glx/jwzgles.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 2012-2013 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 @@ -1027,6 +1027,7 @@ jwzgles_glTexCoord1f (GLfloat s) } +/* glColor: GLfloat */ void jwzgles_glColor4fv (const GLfloat *v) @@ -1079,77 +1080,230 @@ jwzgles_glColor4f (GLfloat r, GLfloat g, GLfloat b, GLfloat a) 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) @@ -1758,10 +1912,10 @@ optimize_arrays (void) 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++) { @@ -2252,7 +2406,6 @@ copy_array_data (draw_array *A, int count, const char *name) data multiple times. */ int stride2, bytes, i, j; - const void *old; void *data2; const GLfloat *IF; GLfloat *OF; @@ -2306,7 +2459,6 @@ copy_array_data (draw_array *A, int count, const char *name) break; } - old = A->data; A->data = data2; A->bytes = bytes; A->stride = stride2; @@ -3054,6 +3206,9 @@ jwzgles_glEnable (GLuint bit) } 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 */ @@ -3095,6 +3250,9 @@ jwzgles_glDisable (GLuint bit) } 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 */ @@ -3131,6 +3289,10 @@ jwzgles_glIsEnabled (GLuint bit) 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); diff --git a/hacks/glx/jwzglesI.h b/hacks/glx/jwzglesI.h index faa26efd..afe0b35c 100644 --- a/hacks/glx/jwzglesI.h +++ b/hacks/glx/jwzglesI.h @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 2012-2013 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 @@ -197,12 +197,34 @@ extern void jwzgles_glColor3f (GLfloat, GLfloat, GLfloat); 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 *); diff --git a/hacks/glx/kaleidocycle.c b/hacks/glx/kaleidocycle.c new file mode 100644 index 00000000..025e45b4 --- /dev/null +++ b/hacks/glx/kaleidocycle.c @@ -0,0 +1,566 @@ +/* kaleidocycle, Copyright (c) 2013 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. + * + * 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 + +#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 */ diff --git a/hacks/glx/kaleidocycle.man b/hacks/glx/kaleidocycle.man new file mode 100644 index 00000000..874d82d4 --- /dev/null +++ b/hacks/glx/kaleidocycle.man @@ -0,0 +1,96 @@ +.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 diff --git a/hacks/glx/quasicrystal.c b/hacks/glx/quasicrystal.c new file mode 100644 index 00000000..d01d1edb --- /dev/null +++ b/hacks/glx/quasicrystal.c @@ -0,0 +1,441 @@ +/* quasicrystal, Copyright (c) 2013 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. + * + * 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 + +#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 */ diff --git a/hacks/glx/quasicrystal.man b/hacks/glx/quasicrystal.man new file mode 100644 index 00000000..cbf90400 --- /dev/null +++ b/hacks/glx/quasicrystal.man @@ -0,0 +1,84 @@ +.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. diff --git a/hacks/glx/tangram.c b/hacks/glx/tangram.c index 02247759..2529e2a3 100644 --- a/hacks/glx/tangram.c +++ b/hacks/glx/tangram.c @@ -899,6 +899,8 @@ ENTRYPOINT void init_tangram(ModeInfo * mi) gl_init(mi); } + reshape_tangram (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + wire = MI_IS_WIREFRAME(mi); tp->name_list = glGenLists(1); diff --git a/hacks/glx/texfont.c b/hacks/glx/texfont.c index f58755d1..2305a937 100644 --- a/hacks/glx/texfont.c +++ b/hacks/glx/texfont.c @@ -1,4 +1,4 @@ -/* texfonts, Copyright (c) 2005-2012 Jamie Zawinski +/* texfonts, Copyright (c) 2005-2013 Jamie Zawinski * Loads X11 fonts into textures for use with OpenGL. * * Permission to use, copy, modify, distribute, and sell this software and its @@ -440,7 +440,8 @@ print_texture_string (texture_font_data *data, const char *string) } 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]))) diff --git a/hacks/glx/unknownpleasures.c b/hacks/glx/unknownpleasures.c new file mode 100644 index 00000000..b59cff68 --- /dev/null +++ b/hacks/glx/unknownpleasures.c @@ -0,0 +1,512 @@ +/* unknownpleasures, Copyright (c) 2013 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. + * + * 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 + +#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 */ diff --git a/hacks/glx/unknownpleasures.man b/hacks/glx/unknownpleasures.man new file mode 100644 index 00000000..422c81fd --- /dev/null +++ b/hacks/glx/unknownpleasures.man @@ -0,0 +1,74 @@ +.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. diff --git a/hacks/glx/xpm-ximage.c b/hacks/glx/xpm-ximage.c index 94578c23..cf600bc7 100644 --- a/hacks/glx/xpm-ximage.c +++ b/hacks/glx/xpm-ximage.c @@ -1,5 +1,5 @@ /* xpm-ximage.c --- converts XPM data to an XImage for use with OpenGL. - * xscreensaver, Copyright (c) 1998-2008 Jamie Zawinski + * xscreensaver, Copyright (c) 1998-2013 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 @@ -157,7 +157,9 @@ xpm_to_ximage_1 (Display *dpy, Visual *visual, Colormap cmap, } row += stride; } - gdk_pixbuf_unref (pb); /* #### does doing this free colors? */ + + /* #### are colors getting freed here? */ + g_object_unref (pb); return image; } diff --git a/hacks/goop.c b/hacks/goop.c index 02a5b113..f7229cce 100644 --- a/hacks/goop.c +++ b/hacks/goop.c @@ -577,6 +577,9 @@ static const char *goop_defaults [] = { "*torque: 0.0075", "*elasticity: 0.9", "*maxVelocity: 0.5", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/grav.c b/hacks/grav.c index a6ea6312..38e97de8 100644 --- a/hacks/grav.c +++ b/hacks/grav.c @@ -33,6 +33,7 @@ static const char sccsid[] = "@(#)grav.c 5.00 2000/11/01 xlockmore"; "*count: 12 \n" \ "*ncolors: 64 \n" \ "*fpsSolid: true \n" \ + "*ignoreRotation: True \n" \ #define BRIGHT_COLORS # define grav_handle_event 0 diff --git a/hacks/greynetic.c b/hacks/greynetic.c index 2496cdf5..5ef65b81 100644 --- a/hacks/greynetic.c +++ b/hacks/greynetic.c @@ -257,6 +257,9 @@ static const char *greynetic_defaults [] = { "*fpsSolid: true", "*delay: 10000", "*grey: false", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/halftone.c b/hacks/halftone.c index 5cd78b50..84503c1f 100644 --- a/hacks/halftone.c +++ b/hacks/halftone.c @@ -191,7 +191,7 @@ halftone_init (Display *dpy, Window window) 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; @@ -373,6 +373,9 @@ static const char *halftone_defaults [] = { "*sizeFactor: 1.5", "*colors: 200", "*cycleSpeed: 10", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/halo.c b/hacks/halo.c index 2b7e30fb..40a55402 100644 --- a/hacks/halo.c +++ b/hacks/halo.c @@ -1,5 +1,4 @@ -/* xscreensaver, Copyright (c) 1993, 1995, 1996, 1997, 1998, 1999, 2003, 2006 - * Jamie Zawinski +/* xscreensaver, Copyright (c) 1993-2013 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 @@ -139,10 +138,12 @@ halo_init (Display *dpy, Window window) 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; @@ -404,6 +405,9 @@ static const char *halo_defaults [] = { "*delay2: 20", "*increment: 0", "*animate: False", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/helix.c b/hacks/helix.c index ea28f690..3b6f0f8c 100644 --- a/hacks/helix.c +++ b/hacks/helix.c @@ -341,6 +341,9 @@ static const char *helix_defaults [] = { "*fpsSolid: true", "*delay: 5", "*subdelay: 20000", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/hexadrop.c b/hacks/hexadrop.c new file mode 100644 index 00000000..dd8bfeea --- /dev/null +++ b/hacks/hexadrop.c @@ -0,0 +1,408 @@ +/* xscreensaver, Copyright (c) 1999-2013 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. + * + * Draws a grid of hexagons or other shapes and drops them out. + * Created 8-Jul-2013. + */ + +#include +#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) diff --git a/hacks/hexadrop.man b/hacks/hexadrop.man new file mode 100644 index 00000000..b4a5f841 --- /dev/null +++ b/hacks/hexadrop.man @@ -0,0 +1,74 @@ +.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. diff --git a/hacks/hopalong.c b/hacks/hopalong.c index 09614458..10e2656d 100644 --- a/hacks/hopalong.c +++ b/hacks/hopalong.c @@ -57,6 +57,7 @@ static const char sccsid[] = "@(#)hop.c 5.00 2000/11/01 xlockmore"; "*cycles: 2500 \n" \ "*ncolors: 200 \n" \ "*fpsSolid: true \n" \ + "*ignoreRotation: True \n" \ # define SMOOTH_COLORS # define reshape_hop 0 diff --git a/hacks/ifs.c b/hacks/ifs.c index 099b0d1c..d1f789c9 100644 --- a/hacks/ifs.c +++ b/hacks/ifs.c @@ -106,6 +106,9 @@ static const char *ifs_defaults [] = { "*doubleBuffer: False", #else "*doubleBuffer: True", +#endif +#ifdef USE_IPHONE + "*ignoreRotation: True", #endif 0 }; @@ -435,7 +438,7 @@ ifs_init (Display *d_arg, Window w_arg) 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); diff --git a/hacks/imsmap.c b/hacks/imsmap.c index aeee0308..d7f0147f 100644 --- a/hacks/imsmap.c +++ b/hacks/imsmap.c @@ -1,4 +1,4 @@ -/* 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 @@ -162,7 +162,7 @@ init_map (struct state *st) 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"); @@ -188,7 +188,7 @@ init_map (struct state *st) { 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) @@ -401,6 +401,9 @@ static const char *imsmap_defaults [] = { "*iterations: 7", "*delay: 5", "*delay2: 20000", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/interaggregate.c b/hacks/interaggregate.c index 6e48f3f2..35879f9c 100644 --- a/hacks/interaggregate.c +++ b/hacks/interaggregate.c @@ -85,6 +85,9 @@ static const char *interaggregate_defaults[] = "*baseOrbits: 75", "*baseOnCenter: False", "*drawCenters: False", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/interference.c b/hacks/interference.c index 60607981..3a270abe 100644 --- a/hacks/interference.c +++ b/hacks/interference.c @@ -27,38 +27,70 @@ * Last modified: Sun Aug 31 23:40:14 2003, * david slimp * 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 + * 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 +#include #include "screenhack.h" +#ifdef HAVE_STDINT_H +# include +#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 */ @@ -82,7 +114,7 @@ static const char *interference_defaults [] = { "*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 */ @@ -90,6 +122,9 @@ static const char *interference_defaults [] = { #ifdef HAVE_XSHM_EXTENSION "*useSHM: True", /* use shared memory extension */ #endif /* HAVE_XSHM_EXTENSION */ +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; @@ -114,7 +149,7 @@ static XrmOptionDescRec interference_options [] = { }; struct inter_source { - int x; + int x; int y; double x_theta; double y_theta; @@ -122,7 +157,7 @@ struct inter_source { struct inter_context { /* - * Display-related entries + * Display-related entries */ Display* dpy; Window win; @@ -138,7 +173,7 @@ struct inter_context { #endif /* USE_XIMAGE */ #ifdef HAVE_XSHM_EXTENSION - Bool use_shm; + Bool use_shm, shm_can_draw; XShmSegmentInfo shm_info; #endif /* HAVE_XSHM_EXTENSION */ @@ -152,7 +187,6 @@ struct inter_context { int speed; int delay; int shift; - int radius; /* * Drawing-related entries @@ -160,13 +194,21 @@ struct inter_context { 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 @@ -181,6 +223,268 @@ struct inter_context { # 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; @@ -188,10 +492,14 @@ static void inter_init(Display* dpy, Window win, struct inter_context* c) 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 @@ -203,29 +511,16 @@ static void inter_init(Display* dpy, Window win, struct inter_context* c) 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); @@ -250,39 +545,15 @@ static void inter_init(Display* dpy, Window win, struct inter_context* c) 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) { @@ -297,7 +568,7 @@ static void inter_init(Display* dpy, Window win, struct inter_context* c) 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], @@ -312,34 +583,77 @@ static void inter_init(Display* dpy, Window win, struct inter_context* c) 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) \ @@ -348,78 +662,201 @@ static void inter_init(Display* dpy, Window win, struct inter_context* c) (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) { @@ -435,12 +872,16 @@ static void do_inter(struct inter_context* c) 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; } @@ -449,8 +890,7 @@ static unsigned long 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 @@ -458,19 +898,54 @@ interference_reshape (Display *dpy, Window window, void *closure, 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) + diff --git a/hacks/intermomentary.c b/hacks/intermomentary.c index ba5268ab..bcbd19ee 100644 --- a/hacks/intermomentary.c +++ b/hacks/intermomentary.c @@ -419,7 +419,7 @@ intermomentary_init (Display *dpy, Window window) 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, @@ -554,6 +554,9 @@ static const char *intermomentary_defaults[] = { "*maxRiders: 40", "*maxRadius: 100", "*colors: 256", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/julia.c b/hacks/julia.c index fe7ad436..d7066b08 100644 --- a/hacks/julia.c +++ b/hacks/julia.c @@ -38,11 +38,12 @@ static const char sccsid[] = "@(#)julia.c 4.03 97/04/10 xlockmore"; */ #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 */ diff --git a/hacks/kaleidescope.c b/hacks/kaleidescope.c index 8c3f80b9..f260360d 100644 --- a/hacks/kaleidescope.c +++ b/hacks/kaleidescope.c @@ -100,6 +100,9 @@ static const char *kaleidescope_defaults [] = { "*greenrange: 20000", "*bluemin: 30000", "*bluerange: 20000", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/kumppa.c b/hacks/kumppa.c index b835f5bf..44df19b4 100644 --- a/hacks/kumppa.c +++ b/hacks/kumppa.c @@ -55,6 +55,9 @@ static const char *kumppa_defaults [] ={ "*random: True", /* leave this off by default, since it slows things down. -- jwz. */ "*useDBE: False", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/loop.c b/hacks/loop.c index 7a998738..ad3e1b02 100644 --- a/hacks/loop.c +++ b/hacks/loop.c @@ -91,6 +91,7 @@ static const char sccsid[] = "@(#)loop.c 5.01 2000/03/15 xlockmore"; "*size: -12 \n" \ "*ncolors: 15 \n" \ "*fpsSolid: true \n" \ + "*ignoreRotation: True \n" \ # define UNIFORM_COLORS # define loop_handle_event 0 diff --git a/hacks/maze.c b/hacks/maze.c index 8576386b..fda3e811 100644 --- a/hacks/maze.c +++ b/hacks/maze.c @@ -1588,6 +1588,9 @@ maze_draw (Display *dpy, Window window, void *closure) 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"); diff --git a/hacks/memscroller.c b/hacks/memscroller.c index afaed3c9..ddd07eed 100644 --- a/hacks/memscroller.c +++ b/hacks/memscroller.c @@ -86,7 +86,7 @@ memscroller_init (Display *dpy, Window window) { 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); } diff --git a/hacks/metaballs.c b/hacks/metaballs.c index 02d418ba..b79dd95d 100644 --- a/hacks/metaballs.c +++ b/hacks/metaballs.c @@ -408,6 +408,9 @@ static const char *metaballs_defaults [] = { "*delay: 10000", "*radius: 100", "*delta: 3", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/moire.c b/hacks/moire.c index 10797a5f..d55a9b85 100644 --- a/hacks/moire.c +++ b/hacks/moire.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1997-2008 Jamie Zawinski +/* xscreensaver, Copyright (c) 1997-2013 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 @@ -120,7 +120,7 @@ moire_init_1 (struct state *st) 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); @@ -259,6 +259,9 @@ static const char *moire_defaults [] = { "*useSHM: True", #else "*useSHM: False", +#endif +#ifdef USE_IPHONE + "*ignoreRotation: True", #endif 0 }; diff --git a/hacks/moire2.c b/hacks/moire2.c index 441a3713..69bfe696 100644 --- a/hacks/moire2.c +++ b/hacks/moire2.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1997, 1998, 2006 Jamie Zawinski +/* xscreensaver, Copyright (c) 1997-2013 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 @@ -64,7 +64,8 @@ moire2_init_1 (struct state *st) 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, @@ -328,6 +329,9 @@ static const char *moire2_defaults [] = { "*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 diff --git a/hacks/munch.c b/hacks/munch.c index 2636375e..902a3e22 100644 --- a/hacks/munch.c +++ b/hacks/munch.c @@ -437,6 +437,9 @@ static const char *munch_defaults [] = { "*simul: 5", "*clear: 65", "*xor: True", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/nerverot.c b/hacks/nerverot.c index d0de73c9..fe58ea1a 100644 --- a/hacks/nerverot.c +++ b/hacks/nerverot.c @@ -799,7 +799,8 @@ static void setupColormap (struct state *st, XWindowAttributes *xgwa) 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) @@ -1324,6 +1325,9 @@ static const char *nerverot_defaults [] = { "*maxRadius: 25", "*maxNerveRadius: 0.7", "*nervousness: 0.3", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/pacman.c b/hacks/pacman.c index 23fb3a1d..57219bee 100644 --- a/hacks/pacman.c +++ b/hacks/pacman.c @@ -1779,8 +1779,10 @@ ENTRYPOINT void 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); diff --git a/hacks/pacman_level.c b/hacks/pacman_level.c index d617942c..f26b3bfe 100644 --- a/hacks/pacman_level.c +++ b/hacks/pacman_level.c @@ -539,7 +539,7 @@ pacman_is_bonus_dot (pacmangamestruct *pp, int x, int y, int *idx) { 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; @@ -553,7 +553,7 @@ pacman_is_bonus_dot (pacmangamestruct *pp, int x, int y, int *idx) static void check_bonus_idx (int idx) { - assert (0 <= idx && idx <= NUM_BONUS_DOTS); + assert (0 <= idx && idx < NUM_BONUS_DOTS); } int diff --git a/hacks/pedal.c b/hacks/pedal.c index 7495aaeb..c38f6f0e 100644 --- a/hacks/pedal.c +++ b/hacks/pedal.c @@ -312,6 +312,9 @@ static const char *pedal_defaults [] = { "*fpsSolid: true", "*delay: 5", "*maxlines: 1000", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/penrose.c b/hacks/penrose.c index 6b07d8ca..6910e5f3 100644 --- a/hacks/penrose.c +++ b/hacks/penrose.c @@ -87,6 +87,7 @@ If one of these are hit penrose will reinitialize. "*size: 40 \n" \ "*ncolors: 64 \n" \ "*fpsSolid: true \n" \ + "*ignoreRotation: True \n" \ # define refresh_penrose 0 # define penrose_handle_event 0 diff --git a/hacks/petri.c b/hacks/petri.c index 860d0349..e08beee3 100644 --- a/hacks/petri.c +++ b/hacks/petri.c @@ -141,7 +141,7 @@ static void setup_random_colormap (struct state *st, XWindowAttributes *xgwa) 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) { @@ -732,6 +732,9 @@ static const char *petri_defaults [] = { "*originalcolors: false", "*memThrottle: 22M", /* don't malloc more than this much. Scale the pixels up if necessary. */ +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/phosphor.c b/hacks/phosphor.c index b7ec5407..63df6dfe 100644 --- a/hacks/phosphor.c +++ b/hacks/phosphor.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1999-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 1999-2013 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 @@ -236,7 +236,8 @@ phosphor_init (Display *dpy, Window window) /* 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, diff --git a/hacks/piecewise.c b/hacks/piecewise.c index af01a99d..9cfbefdf 100644 --- a/hacks/piecewise.c +++ b/hacks/piecewise.c @@ -861,7 +861,9 @@ piecewise_init (Display *dd, Window ww) 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; } @@ -975,6 +977,9 @@ static const char *piecewise_defaults [] = { #ifdef HAVE_DOUBLE_BUFFER_EXTENSION "*useDBE: True", #endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/polyominoes.c b/hacks/polyominoes.c index c7b84a74..a3037d28 100644 --- a/hacks/polyominoes.c +++ b/hacks/polyominoes.c @@ -54,6 +54,9 @@ static const char sccsid[] = "@(#)polyominoes.c 5.01 2000/12/18 xlockmore"; static Bool identical; static Bool plain; +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + static XrmOptionDescRec opts[] = { {"-identical", ".polyominoes.identical", XrmoptionNoArg, "on"}, @@ -791,7 +794,7 @@ static void create_bitmaps(ModeInfo * mi, polyominoesstruct *sp) int x,y,n; char *data; - for (n=0;n<256;n++) { + for (n=0;nbitmaps);n++) { /* Avoid duplication of identical bitmaps. */ if (IS_LEFT_UP(n) && (IS_LEFT(n) || IS_UP(n))) @@ -1030,7 +1033,7 @@ static void free_bitmaps(polyominoesstruct *sp) { int n; - for (n=0;n<256;n++) + for (n=0;nbitmaps);n++) /* Don't bother to free duplicates */ if (IS_LEFT_UP(n) && (IS_LEFT(n) || IS_UP(n))) sp->bitmaps[n] = None; @@ -1500,7 +1503,7 @@ static void make_one_sided_pentomino(void) int i,j,t,u; j=0; - for (i=0;i<18;i++) { + for (i=0;i=4) { @@ -1522,7 +1525,7 @@ static void make_one_sided_hexomino(void) int i,j,t,u; j=0; - for (i=0;i<35;i++) { + for (i=0;i=4) { @@ -1567,9 +1570,10 @@ int set_pentomino_puzzle(polyominoesstruct *sp) } 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;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],pentomino[perm_poly[p]],1); } @@ -1615,9 +1619,10 @@ int set_one_sided_pentomino_puzzle(polyominoesstruct *sp) } 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;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],one_sided_pentomino[perm_poly[p]],1); } @@ -1674,9 +1679,10 @@ int set_one_sided_hexomino_puzzle(polyominoesstruct *sp) } 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;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],one_sided_hexomino[perm_poly[p]],1); } @@ -1711,12 +1717,13 @@ int set_tetr_pentomino_puzzle(polyominoesstruct *sp) } 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;ppolyomino[perm_poly[p]],tetromino[p],1); } - for (p=0;p<12;p++) { + for (p=0;ppolyomino[perm_poly[p+5]],pentomino[p],1); } @@ -1760,10 +1767,10 @@ int set_pent_hexomino_puzzle(polyominoesstruct *sp) 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;ppolyomino[perm_poly[p]],pentomino[p],1); } - for (p=0;p<35;p++) { + for (p=0;ppolyomino[perm_poly[p+12]],hexomino[p],1); } @@ -1800,8 +1807,9 @@ int set_pentomino_puzzle1(polyominoesstruct *sp) 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;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],pentomino1,1); } @@ -1831,8 +1839,9 @@ int set_hexomino_puzzle1(polyominoesstruct *sp) 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;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],hexomino1,1); } @@ -1866,8 +1875,9 @@ int set_heptomino_puzzle1(polyominoesstruct *sp) 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;pnr_polyominoes;p+=2) { copy_polyomino(sp->polyomino[p],heptomino1,1); copy_polyomino(sp->polyomino[p+1],heptomino1,0); } @@ -1897,8 +1907,9 @@ int set_heptomino_puzzle2(polyominoesstruct *sp) 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;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],heptomino1,1); } @@ -1933,8 +1944,9 @@ int set_elevenomino_puzzle1(polyominoesstruct *sp) 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;pnr_polyominoes;p+=2) { copy_polyomino(sp->polyomino[p],elevenomino1,1); copy_polyomino(sp->polyomino[p+1],elevenomino1,0); } @@ -1970,8 +1982,9 @@ int set_dekomino_puzzle1(polyominoesstruct *sp) 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;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],dekomino1,1); } @@ -2004,8 +2017,9 @@ int set_octomino_puzzle1(polyominoesstruct *sp) 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;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],octomino1,1); } @@ -2030,8 +2044,9 @@ int set_pentomino_puzzle2(polyominoesstruct *sp) 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;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],pentomino1,1); } @@ -2057,8 +2072,9 @@ int set_elevenomino_puzzle2(polyominoesstruct *sp) 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;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],elevenomino1,1); } diff --git a/hacks/popsquares.c b/hacks/popsquares.c index 15cb61b4..55d3db17 100644 --- a/hacks/popsquares.c +++ b/hacks/popsquares.c @@ -96,7 +96,7 @@ popsquares_init (Display *dpy, Window window) 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? */ @@ -246,6 +246,9 @@ static const char *popsquares_defaults [] = { "*useDBE: True", "*useDBEClear: True", #endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/qix.c b/hacks/qix.c index ad1e26e7..04d09280 100644 --- a/hacks/qix.c +++ b/hacks/qix.c @@ -592,6 +592,9 @@ static const char *qix_defaults [] = { "*transparent:true", "*gravity: false", "*additive: true", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/rd-bomb.c b/hacks/rd-bomb.c index 0c074ea4..3e9acbc5 100644 --- a/hacks/rd-bomb.c +++ b/hacks/rd-bomb.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1992-2008 Jamie Zawinski +/* xscreensaver, Copyright (c) 1992-2013 Jamie Zawinski * * reaction/diffusion textures * Copyright (c) 1997 Scott Draves spot@transmeta.com @@ -308,6 +308,9 @@ static const char *rd_defaults [] = { "*useSHM: True", #else "*useSHM: False", +#endif +#ifdef USE_IPHONE + "*ignoreRotation: True", #endif 0 }; @@ -333,7 +336,8 @@ static void 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; diff --git a/hacks/ripples.c b/hacks/ripples.c index e030b1cd..bffd2c68 100644 --- a/hacks/ripples.c +++ b/hacks/ripples.c @@ -62,6 +62,7 @@ struct state { XImage *orig_map, *buffer_map; int ctab[256]; Colormap colormap; + Screen *screen; int ncolors; int light; @@ -495,6 +496,7 @@ setup_X(struct state *st) 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; @@ -656,7 +658,8 @@ init_oily_colors(struct state *st) 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) */ @@ -1104,6 +1107,9 @@ static const char *ripples_defaults[] = "*useSHM: True", #else "*useSHM: False", +#endif +#ifdef USE_IPHONE + "*ignoreRotation: True", #endif 0 }; diff --git a/hacks/rocks.c b/hacks/rocks.c index f1c60633..d44e7520 100644 --- a/hacks/rocks.c +++ b/hacks/rocks.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1992-2008 Jamie Zawinski +/* xscreensaver, Copyright (c) 1992-2013 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 @@ -416,7 +416,8 @@ rocks_init (Display *d, Window w) 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++; @@ -522,6 +523,9 @@ static const char *rocks_defaults [] = { "*left3d: Blue", "*right3d: Red", "*delta3d: 1.5", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/rorschach.c b/hacks/rorschach.c index b4f4aa89..0d352696 100644 --- a/hacks/rorschach.c +++ b/hacks/rorschach.c @@ -188,6 +188,9 @@ static const char *rorschach_defaults [] = { "*iterations: 4000", "*offset: 7", "*delay: 5", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/rotzoomer.c b/hacks/rotzoomer.c index 610b9520..6298b34e 100644 --- a/hacks/rotzoomer.c +++ b/hacks/rotzoomer.c @@ -461,6 +461,9 @@ static const char *rotzoomer_defaults[] = { "*numboxes: 2", "*delay: 10000", "*duration: 120", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/screenhack.c b/hacks/screenhack.c index 52344a35..089e76b4 100644 --- a/hacks/screenhack.c +++ b/hacks/screenhack.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1992-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 1992-2013 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 @@ -727,13 +727,17 @@ main (int argc, char **argv) { 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); } diff --git a/hacks/shadebobs.c b/hacks/shadebobs.c index 881740c9..64fa82c9 100644 --- a/hacks/shadebobs.c +++ b/hacks/shadebobs.c @@ -52,6 +52,9 @@ static const char *shadebobs_defaults [] = { "*cycles: 10", "*ncolors: 64", /* changing this doesn't work particularly well */ "*delay: 10000", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/sierpinski.c b/hacks/sierpinski.c index 5e7eedae..4f1aa34a 100644 --- a/hacks/sierpinski.c +++ b/hacks/sierpinski.c @@ -39,6 +39,7 @@ static const char sccsid[] = "@(#)sierpinski.c 5.00 2000/11/01 xlockmore"; "*cycles: 100 \n" \ "*ncolors: 64 \n" \ "*fpsSolid: true \n" \ + "*ignoreRotation: True \n" \ # define BRIGHT_COLORS # define sierpinski_handle_event 0 diff --git a/hacks/slidescreen.c b/hacks/slidescreen.c index 69aa10fc..23c990c2 100644 --- a/hacks/slidescreen.c +++ b/hacks/slidescreen.c @@ -469,6 +469,9 @@ static const char *slidescreen_defaults [] = { "*delay: 50000", "*delay2: 1000000", "*duration: 120", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/slip.c b/hacks/slip.c index e0b0ea4f..989dbf86 100644 --- a/hacks/slip.c +++ b/hacks/slip.c @@ -31,7 +31,8 @@ static const char sccsid[] = "@(#)slip.c 5.00 2000/11/01 xlockmore"; "*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 diff --git a/hacks/speedmine.c b/hacks/speedmine.c index 5c67082d..81c46868 100644 --- a/hacks/speedmine.c +++ b/hacks/speedmine.c @@ -110,6 +110,8 @@ struct state { 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; @@ -1260,7 +1262,7 @@ speedmine_color_ramp (struct state *st, GC *gcs, XColor * colors, 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); @@ -1286,9 +1288,9 @@ change_colors (struct state *st) 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; @@ -1296,8 +1298,8 @@ change_colors (struct state *st) &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; @@ -1371,7 +1373,8 @@ init_colors (struct state *st) 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; @@ -1432,6 +1435,8 @@ speedmine_init (Display *dpy, Window window) 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; diff --git a/hacks/spotlight.c b/hacks/spotlight.c index 014fff65..cbd33f2a 100644 --- a/hacks/spotlight.c +++ b/hacks/spotlight.c @@ -320,6 +320,9 @@ static const char *spotlight_defaults [] = { "*delay: 10000", "*duration: 120", "*radius: 125", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/squiral.c b/hacks/squiral.c index 2a0b0fd2..e261f59a 100644 --- a/hacks/squiral.c +++ b/hacks/squiral.c @@ -156,7 +156,7 @@ squiral_init (Display *dpy, Window window) 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 ) { @@ -166,7 +166,8 @@ squiral_init (Display *dpy, Window window) 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; @@ -260,6 +261,9 @@ static const char *squiral_defaults[] = { "*disorder: 0.005", "*cycle: False", "*handedness: 0.5", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/starfish.c b/hacks/starfish.c index 071dccb6..6cfee31d 100644 --- a/hacks/starfish.c +++ b/hacks/starfish.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1997-2008 Jamie Zawinski +/* xscreensaver, Copyright (c) 1997-2013 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 @@ -341,7 +341,7 @@ reset_starfish (struct state *st) 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; @@ -361,10 +361,12 @@ reset_starfish (struct state *st) 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; @@ -526,6 +528,9 @@ static const char *starfish_defaults [] = { "*duration: 30", "*delay2: 5", "*mode: random", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/strange.c b/hacks/strange.c index 604f471b..632d347a 100644 --- a/hacks/strange.c +++ b/hacks/strange.c @@ -38,7 +38,8 @@ static const char sccsid[] = "@(#)strange.c 5.00 2000/11/01 xlockmore"; # 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 diff --git a/hacks/substrate.c b/hacks/substrate.c index 517c4977..82ea6d9e 100644 --- a/hacks/substrate.c +++ b/hacks/substrate.c @@ -720,6 +720,9 @@ static const char *substrate_defaults[] = { "*maxCracks: 100", "*sandGrains: 64", "*circlePercent: 33", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/swirl.c b/hacks/swirl.c index ba959ac6..efe2f8d1 100644 --- a/hacks/swirl.c +++ b/hacks/swirl.c @@ -35,6 +35,7 @@ static const char sccsid[] = "@(#)swirl.c 4.00 97/01/01 xlockmore"; "*ncolors: 200 \n" \ "*useSHM: True \n" \ "*fpsSolid: true \n" \ + "*ignoreRotation: True \n" \ # define SMOOTH_COLORS # define WRITABLE_COLORS @@ -1352,7 +1353,7 @@ draw_swirl(ModeInfo * mi) 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 */ @@ -1374,7 +1375,7 @@ draw_swirl(ModeInfo * mi) } 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 */ @@ -1412,10 +1413,9 @@ draw_swirl(ModeInfo * mi) #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); diff --git a/hacks/thornbird.c b/hacks/thornbird.c index e7bbf6dd..cb5541de 100644 --- a/hacks/thornbird.c +++ b/hacks/thornbird.c @@ -36,6 +36,7 @@ static const char sccsid[] = "@(#)thornbird.c 5.00 2000/11/01 xlockmore"; "*cycles: 400 \n" \ "*ncolors: 64 \n" \ "*fpsSolid: true \n" \ + "*ignoreRotation: True \n" \ # define BRIGHT_COLORS # define thornbird_handle_event 0 diff --git a/hacks/triangle.c b/hacks/triangle.c index 1a93de25..79fe819c 100644 --- a/hacks/triangle.c +++ b/hacks/triangle.c @@ -298,11 +298,11 @@ draw_triangle (ModeInfo * mi) 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); diff --git a/hacks/truchet.c b/hacks/truchet.c index 16836543..dda5ac8c 100644 --- a/hacks/truchet.c +++ b/hacks/truchet.c @@ -61,6 +61,9 @@ static const char *truchet_defaults [] = { "*anim-delay: 100", "*anim-step-size: 3", "*randomize: true", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/twang.c b/hacks/twang.c index 7a606b12..dec8fbe1 100644 --- a/hacks/twang.c +++ b/hacks/twang.c @@ -766,6 +766,9 @@ static const char *twang_defaults [] = { "*useSHM: True", #else "*useSHM: False", +#endif +#ifdef USE_IPHONE + "*ignoreRotation: True", #endif 0 }; diff --git a/hacks/vermiculate.c b/hacks/vermiculate.c index d1ef5719..c50785af 100644 --- a/hacks/vermiculate.c +++ b/hacks/vermiculate.c @@ -209,9 +209,8 @@ static void 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; @@ -1206,6 +1205,9 @@ static const char *vermiculate_defaults[] = { "*fpsSolid: true", "*speed: 0", "*instring: ", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/wander.c b/hacks/wander.c index 8fa8995a..881b92cc 100644 --- a/hacks/wander.c +++ b/hacks/wander.c @@ -64,12 +64,13 @@ wander_init (Display *dpy, Window window) 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, @@ -240,6 +241,9 @@ static const char *wander_defaults [] = ".reset: 2500000", ".circles: False", ".size: 1", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/whirlwindwarp.c b/hacks/whirlwindwarp.c index 566c4187..843a1cfb 100644 --- a/hacks/whirlwindwarp.c +++ b/hacks/whirlwindwarp.c @@ -489,6 +489,9 @@ static const char *whirlwindwarp_defaults [] = { "*points: 400", "*tails: 8", "*meters: false", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/whirlygig.c b/hacks/whirlygig.c index e5eb9d55..5ae36ed0 100644 --- a/hacks/whirlygig.c +++ b/hacks/whirlygig.c @@ -389,7 +389,9 @@ whirlygig_init (Display *dpy, Window window) { 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); diff --git a/hacks/wormhole.c b/hacks/wormhole.c index 86a6dcd5..4529d5d6 100644 --- a/hacks/wormhole.c +++ b/hacks/wormhole.c @@ -708,6 +708,9 @@ static const char *wormhole_defaults [] = { "*delay: 10000", "*zspeed: 10", "*stars: 20", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/xflame.c b/hacks/xflame.c index 2785fb81..0a3739b5 100644 --- a/hacks/xflame.c +++ b/hacks/xflame.c @@ -125,6 +125,10 @@ MakeImage(struct state *st) { 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, @@ -147,8 +151,8 @@ MakeImage(struct state *st) } } - 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); } @@ -215,6 +219,8 @@ InitFlame(struct state *st) { 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)); @@ -621,7 +627,7 @@ loadBitmap(struct state *st, int *w, int *h) 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, @@ -721,12 +727,6 @@ xflame_init (Display *dpy, Window win) 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); @@ -755,6 +755,12 @@ static void 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 diff --git a/hacks/xjack.c b/hacks/xjack.c index 1765243c..da913c72 100644 --- a/hacks/xjack.c +++ b/hacks/xjack.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1997-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 1997-2013 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 @@ -126,13 +126,13 @@ xjack_init (Display *dpy, Window window) 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) @@ -250,6 +250,8 @@ xjack_draw (Display *dpy, Window window, void *closure) if (st->break_para) st->y++; + st->break_para = 0; + if (st->mode == 1 || st->mode == 2) { /* 1 = left margin goes southwest; 2 = southeast */ @@ -282,14 +284,20 @@ xjack_draw (Display *dpy, Window window, void *closure) 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); } @@ -349,7 +357,7 @@ xjack_draw (Display *dpy, Window window, void *closure) } 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--; @@ -420,6 +428,13 @@ xjack_draw (Display *dpy, Window window, void *closure) 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; } diff --git a/hacks/xlockmore.c b/hacks/xlockmore.c index 0c0b2c92..23c12b6d 100644 --- a/hacks/xlockmore.c +++ b/hacks/xlockmore.c @@ -1,5 +1,5 @@ /* xlockmore.c --- xscreensaver compatibility layer for xlockmore modules. - * xscreensaver, Copyright (c) 1997-2011 Jamie Zawinski + * xscreensaver, Copyright (c) 1997-2013 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 @@ -382,18 +382,21 @@ xlockmore_init (Display *dpy, Window window, 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), diff --git a/hacks/xlyap.c b/hacks/xlyap.c index 02587f00..f12b3547 100644 --- a/hacks/xlyap.c +++ b/hacks/xlyap.c @@ -78,6 +78,9 @@ static const char *xlyap_defaults [] = { "*delay: 10000", "*linger: 5", "*colors: 200", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; @@ -178,8 +181,8 @@ typedef double (*PFD)(double,double); /*#define BACKING_PIXMAP*/ struct state { - int screen; Display *dpy; + Screen *screen; Visual *visual; Colormap cmap; @@ -552,15 +555,15 @@ init_color(struct state *st) { 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], @@ -1782,6 +1785,7 @@ xlyap_init (Display *d, Window window) st->width = xgwa.width; st->height = xgwa.height; st->visual = xgwa.visual; + st->screen = xgwa.screen; st->cmap = xgwa.colormap; do_defaults(st); @@ -1799,14 +1803,13 @@ xlyap_init (Display *d, Window window) 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 diff --git a/hacks/xml2man.pl b/hacks/xml2man.pl index 2e2ba162..c0090711 100755 --- a/hacks/xml2man.pl +++ b/hacks/xml2man.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# Copyright © 2002, 2005 Jamie Zawinski +# Copyright © 2002-2013 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 @@ -24,7 +24,7 @@ use strict; 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; @@ -60,7 +60,7 @@ my $man_suffix = (".SH ENVIRONMENT\n" . ".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" . @@ -118,6 +118,7 @@ sub xml2man($) { my $carg = $arg; my $boolp = m/^= 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) { @@ -164,8 +169,10 @@ sub xml2man($) { $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"; @@ -192,6 +199,8 @@ sub xml2man($) { $author = "UNKNOWN"; } + $desc =~ s@http://en\.wikipedia\.org/[^\s]+@@gs; + $desc = wrap ("", "", $desc); $body = (".TH XScreenSaver 1 \"\" \"X Version 11\"\n" . @@ -208,7 +217,11 @@ sub xml2man($) { $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; diff --git a/hacks/xrayswarm.c b/hacks/xrayswarm.c index f3b81848..d36055de 100644 --- a/hacks/xrayswarm.c +++ b/hacks/xrayswarm.c @@ -63,6 +63,9 @@ static const char *xrayswarm_defaults [] ={ ".background: black", "*delay: 20000", "*fpsSolid: true", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/xspirograph.c b/hacks/xspirograph.c index 17ef5534..3c241fc3 100644 --- a/hacks/xspirograph.c +++ b/hacks/xspirograph.c @@ -315,6 +315,9 @@ static const char *xspirograph_defaults [] = { "*subdelay: 20000", "*layers: 2", "*alwaysfinish: false", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/hacks/zoom.c b/hacks/zoom.c index 73b27b05..439b8a1f 100644 --- a/hacks/zoom.c +++ b/hacks/zoom.c @@ -249,6 +249,9 @@ static const char *zoom_defaults[] = { "*pixspacey: 2", "*lensoffsetx: 5", "*lensoffsety: 5", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; diff --git a/po/POTFILES.in b/po/POTFILES.in index 11f9de0a..c43c5e57 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,4 +1,4 @@ -# 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 @@ -101,6 +101,7 @@ hacks/config/greynetic.xml 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 @@ -118,6 +119,7 @@ hacks/config/juggle.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 @@ -167,6 +169,7 @@ hacks/config/providence.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 @@ -210,6 +213,7 @@ hacks/config/triangle.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 diff --git a/setup.com b/setup.com index 462a850a..d858b2af 100644 --- a/setup.com +++ b/setup.com @@ -50,6 +50,7 @@ $ greynetic :== $'mydir'greynetic $ halftone :== $'mydir'halftone $ halo :== $'mydir'halo $ helix :== $'mydir'helix +$ hexadrop :== $'mydir'hexadrop $ hopalong :== $'mydir'hopalong $ ifs :== $'mydir'ifs $ imsmap :== $'mydir'imsmap diff --git a/utils/colors.c b/utils/colors.c index e06359c7..e6abd486 100644 --- a/utils/colors.c +++ b/utils/colors.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1997, 2002 Jamie Zawinski +/* xscreensaver, Copyright (c) 1997-2013 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 @@ -22,8 +22,9 @@ 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) { @@ -38,9 +39,10 @@ free_colors(Display *dpy, Colormap cmap, XColor *colors, int ncolors) 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; @@ -94,25 +96,31 @@ complain (int wanted_colors, int got_colors, 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; @@ -144,7 +152,7 @@ make_color_ramp (Display *dpy, Colormap cmap, if (!allocate_p) return; - if (writable_p) + if (writable_pP && *writable_pP) { unsigned long *pixels = (unsigned long *) malloc(sizeof(*pixels) * ((*ncolorsP) + 1)); @@ -175,7 +183,7 @@ make_color_ramp (Display *dpy, Colormap cmap, } else { - free_colors (dpy, cmap, colors, i); + free_colors (screen, cmap, colors, i); goto FAIL; } } @@ -204,7 +212,8 @@ make_color_ramp (Display *dpy, Colormap cmap, 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)); } @@ -212,12 +221,13 @@ make_color_ramp (Display *dpy, Colormap cmap, 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; @@ -233,11 +243,11 @@ make_color_path (Display *dpy, Colormap cmap, } 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) @@ -381,7 +391,7 @@ make_color_path (Display *dpy, Colormap cmap, if (!allocate_p) return; - if (writable_p) + if (writable_pP && *writable_pP) { unsigned long *pixels = (unsigned long *) malloc(sizeof(*pixels) * ((*ncolorsP) + 1)); @@ -412,7 +422,7 @@ make_color_path (Display *dpy, Colormap cmap, } else { - free_colors (dpy, cmap, colors, i); + free_colors (screen, cmap, colors, i); goto FAIL; } } @@ -438,28 +448,36 @@ make_color_path (Display *dpy, Colormap cmap, 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, @@ -474,7 +492,6 @@ make_smooth_colormap (Display *dpy, Visual *visual, Colormap cmap, 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; @@ -532,8 +549,8 @@ make_smooth_colormap (Display *dpy, Visual *visual, Colormap cmap, *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) @@ -551,7 +568,7 @@ make_smooth_colormap (Display *dpy, Visual *visual, Colormap cmap, 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, @@ -559,7 +576,6 @@ make_uniform_colormap (Display *dpy, Visual *visual, Colormap cmap, { 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% */ @@ -571,12 +587,11 @@ make_uniform_colormap (Display *dpy, Visual *visual, Colormap cmap, *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) @@ -595,17 +610,17 @@ make_uniform_colormap (Display *dpy, Visual *visual, Colormap cmap, 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; @@ -613,6 +628,7 @@ make_random_colormap (Display *dpy, Visual *visual, Colormap cmap, 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; @@ -632,6 +648,19 @@ make_random_colormap (Display *dpy, Visual *visual, Colormap cmap, } } + /* 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; @@ -641,7 +670,7 @@ make_random_colormap (Display *dpy, Visual *visual, Colormap cmap, 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]; @@ -679,12 +708,14 @@ make_random_colormap (Display *dpy, Visual *visual, Colormap cmap, 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++) { diff --git a/utils/colors.h b/utils/colors.h index 61421cf5..526a38a0 100644 --- a/utils/colors.h +++ b/utils/colors.h @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1992, 1997 Jamie Zawinski +/* xscreensaver, Copyright (c) 1992-2013 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 @@ -14,7 +14,7 @@ /* 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 @@ -22,7 +22,7 @@ extern void free_colors (Display *, Colormap, XColor *, int ncolors); (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); @@ -38,14 +38,16 @@ extern void allocate_writable_colors (Display *dpy, Colormap cmap, 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. @@ -56,14 +58,16 @@ extern void make_color_ramp (Display *dpy, Colormap cmap, 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 @@ -78,9 +82,10 @@ extern void make_color_loop (Display *, Colormap, 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, @@ -99,9 +104,10 @@ extern void make_smooth_colormap (Display *dpy, Visual *visual, 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, @@ -120,9 +126,10 @@ extern void make_uniform_colormap (Display *dpy, Visual *visual, 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, @@ -134,7 +141,7 @@ extern void make_random_colormap (Display *dpy, Visual *visual, 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__ */ diff --git a/utils/grabclient.c b/utils/grabclient.c index 58d506ef..082f1f16 100644 --- a/utils/grabclient.c +++ b/utils/grabclient.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1992-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 1992-2013 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 @@ -619,6 +619,19 @@ pipe_cb (XtPointer closure, int *source, XtInputId *id) 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); @@ -810,6 +823,7 @@ load_random_image_1 (Screen *screen, Window window, Drawable drawable, /* 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); } } diff --git a/utils/grabscreen.c b/utils/grabscreen.c index 00a96de4..23f40aad 100644 --- a/utils/grabscreen.c +++ b/utils/grabscreen.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1992-2006 Jamie Zawinski +/* xscreensaver, Copyright (c) 1992-2013 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 @@ -477,7 +477,7 @@ copy_default_colormap_contents (Screen *screen, 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, diff --git a/utils/minixpm.c b/utils/minixpm.c index 247eca89..8fe3eac6 100644 --- a/utils/minixpm.c +++ b/utils/minixpm.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2001-2006 Jamie Zawinski +/* xscreensaver, Copyright (c) 2001-2013 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 @@ -190,17 +190,23 @@ minixpm_to_ximage (Display *dpy, Visual *visual, Colormap colormap, int depth, 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) diff --git a/utils/spline.c b/utils/spline.c index d2d44777..1a73ea61 100644 --- a/utils/spline.c +++ b/utils/spline.c @@ -66,7 +66,7 @@ make_spline (unsigned int size) 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(); diff --git a/utils/version.h b/utils/version.h index d902a784..e1c7e1cd 100644 --- a/utils/version.h +++ b/utils/version.h @@ -1,2 +1,2 @@ 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)"; diff --git a/xscreensaver.spec b/xscreensaver.spec index aa9fefc3..5145ce1a 100644 --- a/xscreensaver.spec +++ b/xscreensaver.spec @@ -1,5 +1,5 @@ %define name xscreensaver -%define version 5.21 +%define version 5.22 Summary: X screen saver and locker Name: %{name} diff --git a/xscreensaver.xcodeproj/project.pbxproj b/xscreensaver.xcodeproj/project.pbxproj index 89eeb852..0d64f239 100644 --- a/xscreensaver.xcodeproj/project.pbxproj +++ b/xscreensaver.xcodeproj/project.pbxproj @@ -48,7 +48,7 @@ AF77798F09B6604C00EA3033 /* PBXTargetDependency */, AF77798D09B6604C00EA3033 /* PBXTargetDependency */, AF77798B09B6604C00EA3033 /* PBXTargetDependency */, - AF2D4F8B13E91108002AA818 /* PBXTargetDependency */, + AFBFE785178648E600432B21 /* PBXTargetDependency */, AF77798909B6604C00EA3033 /* PBXTargetDependency */, AF77798709B6604B00EA3033 /* PBXTargetDependency */, AF77798509B6604B00EA3033 /* PBXTargetDependency */, @@ -79,6 +79,7 @@ AF77795109B6604900EA3033 /* PBXTargetDependency */, AF77794F09B6604900EA3033 /* PBXTargetDependency */, AF77794D09B6604900EA3033 /* PBXTargetDependency */, + AFB591C3178B821E00EA4005 /* PBXTargetDependency */, AF77794709B6604900EA3033 /* PBXTargetDependency */, AF77794509B6604900EA3033 /* PBXTargetDependency */, AF77794309B6604900EA3033 /* PBXTargetDependency */, @@ -100,7 +101,7 @@ AF77792109B6604800EA3033 /* PBXTargetDependency */, AF77791F09B6604800EA3033 /* PBXTargetDependency */, AF77791D09B6604800EA3033 /* PBXTargetDependency */, - AF2D4F8D13E9111D002AA818 /* PBXTargetDependency */, + AFBFE787178648F500432B21 /* PBXTargetDependency */, AF77791B09B6604700EA3033 /* PBXTargetDependency */, AF77791909B6604700EA3033 /* PBXTargetDependency */, AF77791709B6604700EA3033 /* PBXTargetDependency */, @@ -228,6 +229,7 @@ AF777A1509B660B300EA3033 /* PBXTargetDependency */, AF35E8A30E63825600691F2F /* PBXTargetDependency */, AF777A1309B660B300EA3033 /* PBXTargetDependency */, + AFBFE7421786407000432B21 /* PBXTargetDependency */, AF777A1109B660B300EA3033 /* PBXTargetDependency */, AF777A0F09B660B200EA3033 /* PBXTargetDependency */, AF777A0D09B660B200EA3033 /* PBXTargetDependency */, @@ -246,6 +248,7 @@ AF7779F909B660B100EA3033 /* PBXTargetDependency */, AF7779F709B660B100EA3033 /* PBXTargetDependency */, AF7779F509B660B100EA3033 /* PBXTargetDependency */, + AFBFE7401786405E00432B21 /* PBXTargetDependency */, AF7779F309B660B000EA3033 /* PBXTargetDependency */, AF7779F109B660B000EA3033 /* PBXTargetDependency */, AF32D9F90F3AD0D90080F535 /* PBXTargetDependency */, @@ -264,6 +267,7 @@ AF7779DD09B660AF00EA3033 /* PBXTargetDependency */, AF998EF70A083E1D0051049D /* PBXTargetDependency */, AF4F10F2143450C300E34F3F /* PBXTargetDependency */, + AFDA65AA178A54690070D24B /* PBXTargetDependency */, AF0DCA5C0C4CBB4300D76972 /* PBXTargetDependency */, ); name = "All Savers (OpenGL)"; @@ -368,9 +372,6 @@ 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 */; }; @@ -576,9 +577,6 @@ 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 */; }; @@ -1245,7 +1243,6 @@ 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 */; }; @@ -1297,7 +1294,6 @@ 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 */; }; @@ -1463,15 +1459,10 @@ 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 */; }; @@ -1479,17 +1470,9 @@ 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 */; }; @@ -1705,12 +1688,10 @@ 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 */; }; @@ -1765,9 +1746,13 @@ 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 */; }; @@ -1823,8 +1808,6 @@ 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 */; }; @@ -2618,11 +2601,70 @@ 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 */; }; @@ -2738,6 +2780,16 @@ 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 */; }; @@ -2761,6 +2813,16 @@ 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 */; }; @@ -2966,20 +3028,6 @@ 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 */; @@ -3631,6 +3679,13 @@ 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 */; @@ -5647,6 +5702,76 @@ 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 */; @@ -5899,6 +6024,20 @@ 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 */; @@ -5948,6 +6087,13 @@ 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 */; @@ -5978,31 +6124,6 @@ }; /* 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 = ""; }; 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; @@ -6259,6 +6380,9 @@ AF6427BB09A2DF47000F4CD4 /* bubbles-default.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "bubbles-default.c"; path = "hacks/bubbles-default.c"; sourceTree = ""; }; AF6427BC09A2DF47000F4CD4 /* bubbles.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = bubbles.c; path = hacks/bubbles.c; sourceTree = ""; }; AF6427BD09A2DF47000F4CD4 /* bubbles.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = bubbles.h; path = hacks/bubbles.h; sourceTree = ""; }; + 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 = ""; }; + AF7511161782B66400380EA1 /* kaleidescope.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = kaleidescope.xml; sourceTree = ""; }; 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 = ""; }; AF77772A09B6416100EA3033 /* Pacman.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Pacman.saver; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -6554,14 +6678,21 @@ AFA5638E0993980D00F3E977 /* timetunnel.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = timetunnel.c; path = hacks/glx/timetunnel.c; sourceTree = ""; }; 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 = ""; }; + 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 = ""; }; AFAD462209D5F4DA00AB5F95 /* grabclient.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = grabclient.c; path = utils/grabclient.c; sourceTree = ""; }; + 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 = ""; }; + AFB591BD178B81E600EA4005 /* hexadrop.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = hexadrop.c; path = hacks/hexadrop.c; sourceTree = ""; }; AFB5A06B0981F4C600871B16 /* screenhack.h */ = {isa = PBXFileReference; fileEncoding = 12; lastKnownFileType = sourcecode.c.h; name = screenhack.h; path = hacks/screenhack.h; sourceTree = ""; }; AFB5A0ED0981FF8B00871B16 /* usleep.c */ = {isa = PBXFileReference; fileEncoding = 12; lastKnownFileType = sourcecode.c.c; name = usleep.c; path = utils/usleep.c; sourceTree = ""; }; AFB5A0EE0981FF8B00871B16 /* usleep.h */ = {isa = PBXFileReference; fileEncoding = 12; lastKnownFileType = sourcecode.c.h; name = usleep.h; path = utils/usleep.h; sourceTree = ""; }; + AFB8A69A1782BA34004EDB85 /* kaleidocycle.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = kaleidocycle.xml; sourceTree = ""; }; AFBF893C0E41D930006A2D66 /* fps.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = fps.c; path = hacks/fps.c; sourceTree = ""; }; AFBF893D0E41D930006A2D66 /* fps.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = fps.h; path = hacks/fps.h; sourceTree = ""; }; AFBF89AE0E423FC3006A2D66 /* fps-gl.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "fps-gl.c"; path = "hacks/glx/fps-gl.c"; sourceTree = ""; }; AFBF89B10E424036006A2D66 /* fpsI.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = fpsI.h; path = hacks/fpsI.h; sourceTree = ""; }; + 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 = ""; }; AFC211940E4E30C800D87B6E /* teapot.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = teapot.h; path = hacks/glx/teapot.h; sourceTree = ""; }; AFC254B909873AF9000655EE /* screenhackI.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = screenhackI.h; path = hacks/screenhackI.h; sourceTree = ""; }; @@ -6851,6 +6982,9 @@ AFD5730C099702C800BA26F7 /* julia.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = julia.c; path = hacks/julia.c; sourceTree = ""; }; 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 = ""; }; + 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 = ""; }; + AFDA65A4178A541A0070D24B /* unknownpleasures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = unknownpleasures.c; path = hacks/glx/unknownpleasures.c; sourceTree = ""; }; AFE1FD3F0981E32E00F7970E /* SaverRunner.h */ = {isa = PBXFileReference; fileEncoding = 12; lastKnownFileType = sourcecode.c.h; name = SaverRunner.h; path = OSX/SaverRunner.h; sourceTree = ""; }; AFE1FD400981E32E00F7970E /* SaverRunner.m */ = {isa = PBXFileReference; fileEncoding = 12; lastKnownFileType = sourcecode.c.objc; name = SaverRunner.m; path = OSX/SaverRunner.m; sourceTree = ""; }; AFE1FD410981E32E00F7970E /* InvertedSlider.h */ = {isa = PBXFileReference; fileEncoding = 12; lastKnownFileType = sourcecode.c.h; name = InvertedSlider.h; path = OSX/InvertedSlider.h; sourceTree = ""; }; @@ -6890,6 +7024,9 @@ 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 = ""; }; + AFF28695178611720050A578 /* quasicrystal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = quasicrystal.c; path = hacks/glx/quasicrystal.c; sourceTree = ""; }; 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 = ""; }; AFF4634B0C44046500EE6509 /* cwaves.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = cwaves.xml; sourceTree = ""; }; @@ -6964,10 +7101,13 @@ 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; }; @@ -6976,10 +7116,13 @@ 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; }; @@ -7843,6 +7986,18 @@ ); 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; @@ -9117,6 +9272,40 @@ ); 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; @@ -9525,6 +9714,18 @@ ); 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; @@ -9573,6 +9774,18 @@ ); 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; @@ -9856,6 +10069,12 @@ 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 = ""; @@ -9929,6 +10148,7 @@ AF84AF1E15829AF000607E4C /* SaverListController.m */, AFE1FD3F0981E32E00F7970E /* SaverRunner.h */, AFE1FD400981E32E00F7970E /* SaverRunner.m */, + AFAA6B441773F07700DE720C /* ios-function-table.m */, ); name = SaverRunner; sourceTree = ""; @@ -9982,6 +10202,7 @@ AF477266099D5768001F091E /* halftone.c */, AF480C29098E295D00FB32B8 /* halo.c */, AF480C2F098E2A6700FB32B8 /* helix.c */, + AFB591BD178B81E600EA4005 /* hexadrop.c */, AF64262209A18E1E000F4CD4 /* hyperball.c */, AF6425DF09A188FB000F4CD4 /* hypercube.c */, AF47743A099D7CEA001F091E /* ifs.c */, @@ -10197,6 +10418,7 @@ AF35EB250E6382BA00691F2F /* jigsaw.c */, AFA55F210993620200F3E977 /* jigglypuff.c */, AFA563B90993991300F3E977 /* juggler3d.c */, + AF7511141782B64300380EA1 /* kaleidocycle.c */, AFA55F3F0993626E00F3E977 /* klein.c */, AFA55A8E0993369100F3E977 /* lament.c */, AFA55DDD09935DB600F3E977 /* lavalite.c */, @@ -10221,6 +10443,7 @@ AFA560C3099371D500F3E977 /* polytopes.c */, AFA5621C099384F600F3E977 /* providence.c */, AFA55B3F09933EC600F3E977 /* pulsar.c */, + AFF28695178611720050A578 /* quasicrystal.c */, AFA55E0609935EB800F3E977 /* queens.c */, AFA559EA0993335C00F3E977 /* rubik.c */, AF32D9FA0F3AD1200080F535 /* rubikblocks.c */, @@ -10277,6 +10500,7 @@ AF998EF80A083E750051049D /* topblock.c */, AF083A58099312B000277BE9 /* tunnel_draw.c */, AF083A5D099312DB00277BE9 /* tunnel_draw.h */, + AFDA65A4178A541A0070D24B /* unknownpleasures.c */, AF0DCA5F0C4CBB7300D76972 /* voronoi.c */, AF0839AD09930C4900277BE9 /* whale.c */, ); @@ -10382,6 +10606,7 @@ AFC258C20988A468000655EE /* halftone.xml */, AFC258C30988A468000655EE /* halo.xml */, AFC258C40988A468000655EE /* helix.xml */, + AFB591BC178B81E600EA4005 /* hexadrop.xml */, AF78D18E142DD99A002AAF77 /* hilbert.xml */, AFC258C50988A468000655EE /* hopalong.xml */, AFC258C60988A468000655EE /* hyperball.xml */, @@ -10399,6 +10624,8 @@ AFC258D10988A468000655EE /* juggler3d.xml */, AFC258D20988A468000655EE /* julia.xml */, AFC258D30988A468000655EE /* kaleidescope.xml */, + AF7511161782B66400380EA1 /* kaleidescope.xml */, + AFB8A69A1782BA34004EDB85 /* kaleidocycle.xml */, AFC258D40988A468000655EE /* klein.xml */, AFC258D50988A468000655EE /* kumppa.xml */, AFC258D60988A468000655EE /* lament.xml */, @@ -10448,6 +10675,7 @@ AFC258FD0988A469000655EE /* pulsar.xml */, AFC258FE0988A469000655EE /* pyro.xml */, AFC258FF0988A469000655EE /* qix.xml */, + AFF28694178611720050A578 /* quasicrystal.xml */, AFC259000988A469000655EE /* queens.xml */, AFCCCBAD09BFE4B000353F4D /* rdbomb.xml */, AFC259030988A469000655EE /* ripples.xml */, @@ -10493,6 +10721,7 @@ AFC259280988A469000655EE /* vermiculate.xml */, AFC259290988A469000655EE /* vidwhacker.xml */, AFC2592A0988A469000655EE /* vines.xml */, + AFDA65A3178A541A0070D24B /* unknownpleasures.xml */, AF0DCA610C4CBB8E00D76972 /* voronoi.xml */, AFC2592B0988A469000655EE /* wander.xml */, AFC2592C0988A469000655EE /* webcollage.xml */, @@ -10745,12 +10974,11 @@ 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 */, @@ -10761,17 +10989,16 @@ 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 */, @@ -10779,10 +11006,10 @@ 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"; @@ -12224,6 +12451,26 @@ 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" */; @@ -14344,6 +14591,68 @@ 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" */; @@ -15024,6 +15333,26 @@ 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" */; @@ -15105,6 +15434,26 @@ 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" */; @@ -15175,7 +15524,8 @@ AF47721E099D4F67001F091E /* Anemone */, AF4773C1099D67B9001F091E /* Anemotaxis */, AF9D4DEC09B5BB19006E59CF /* Apple2 */, - AF2D4F6A13E91093002AA818 /* Apple2App */, + AF2D4F6A13E91093002AA818 /* Apple2-iOS */, + AFBFE74B178642DC00432B21 /* Apple2-OSX */, AF9770660989D2F6001F8B92 /* Attraction */, AF975A86099C6BC300B05160 /* Barcode */, AF47768F099DAA6F001F091E /* Blaster */, @@ -15206,6 +15556,7 @@ AF477253099D5717001F091E /* Halftone */, AF975C12099C8C1500B05160 /* Halo */, AF480C49098E301400FB32B8 /* Helix */, + AFB591A7178B812C00EA4005 /* Hexadrop */, AF477426099D7C70001F091E /* IFS */, AF97572D099C317000B05160 /* IMSMap */, AF477752099DB61E001F091E /* Interaggregate */, @@ -15228,7 +15579,8 @@ AF4778AB099DDB79001F091E /* Penetrate */, AF477670099DA849001F091E /* Petri */, AF7776E409B63ABF00EA3033 /* Phosphor */, - AF2D4D7F13E902F5002AA818 /* PhosphorApp */, + AF2D4D7F13E902F5002AA818 /* Phosphor-iOS */, + AFBFE767178647FE00432B21 /* Phosphor-OSX */, AF477283099D5926001F091E /* Piecewise */, AF9D4CE709B5AA8E006E59CF /* Pong */, AF47726B099D57B9001F091E /* PopSquares */, @@ -15339,6 +15691,7 @@ AFA55F06099361B700F3E977 /* JigglyPuff */, AF35E88A0E63823600691F2F /* Jigsaw */, AFA563A4099398BB00F3E977 /* Juggler3D */, + AF7510FF1782B5B900380EA1 /* Kaleidocycle */, AFA55F2A0993622F00F3E977 /* Klein */, AFA55A790993364300F3E977 /* Lament */, AFA55DC809935D7000F3E977 /* Lavalite */, @@ -15358,6 +15711,7 @@ AFA560AE0993718D00F3E977 /* Polytopes */, AFA562060993849F00F3E977 /* Providence */, AFA55B2509933E8D00F3E977 /* Pulsar */, + AFF2867F17860E830050A578 /* QuasiCrystal */, AFA55DF009935E4900F3E977 /* Queens */, AFA559CF0993330600F3E977 /* Rubik */, AF32D9E00F3AD0B40080F535 /* RubikBlocks */, @@ -15376,6 +15730,7 @@ AFA56379099397B300F3E977 /* TimeTunnel */, AF998EDA0A083DB30051049D /* TopBlock */, AF3581FB143330F900E09C51 /* TronBit */, + AFDA658E178A52B70070D24B /* Unknown Pleasures */, AF0DCA420C4CBB0D00D76972 /* Voronoi */, AF137D410F075C9B004DE3B2 /* Obsolete */, AFA55CCC09934CE400F3E977 /* GLForestFire */, @@ -15451,16 +15806,15 @@ 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; }; @@ -15468,17 +15822,15 @@ 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; }; @@ -16056,6 +16408,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + AF7511021782B5B900380EA1 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AFB8A69B1782BA34004EDB85 /* kaleidocycle.xml in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; AF7776E709B63ABF00EA3033 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -16207,13 +16567,14 @@ 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 */, @@ -16302,6 +16663,7 @@ 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 */, @@ -16315,6 +16677,7 @@ 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 */, @@ -16357,6 +16720,7 @@ 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 */, @@ -16396,6 +16760,7 @@ 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 */, @@ -16408,7 +16773,6 @@ AF918B8F158FC53E002B5D1E /* xrayswarm.xml in Resources */, AF918B90158FC53E002B5D1E /* xspirograph.xml in Resources */, AF918B91158FC554002B5D1E /* zoom.xml in Resources */, - AFC6BBC2161CE07E0084EDB1 /* Default-568h@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -17128,6 +17492,34 @@ ); 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; @@ -17401,6 +17793,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + AFDA6591178A52B70070D24B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AFDA65A5178A541A0070D24B /* unknownpleasures.xml in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; AFE2A4590E2E904600ADB298 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -17434,6 +17834,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + AFF2868217860E830050A578 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AFF28696178611720050A578 /* quasicrystal.xml in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; AFF463390C4403E400EE6509 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -17985,6 +18393,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + AF75110D1782B5B900380EA1 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; AF7776F209B63ABF00EA3033 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; @@ -18706,6 +19121,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + AFB591B5178B812C00EA4005 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; AFD51B2B0F063B4A00471C02 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; @@ -18944,6 +19366,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + AFDA659C178A52B70070D24B /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; AFE2A4650E2E904600ADB298 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; @@ -18972,6 +19401,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + AFF2868D17860E830050A578 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; AFF463420C4403E400EE6509 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; @@ -19046,7 +19482,7 @@ ); 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 */ = { @@ -19061,7 +19497,7 @@ ); 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 */ = { @@ -19214,6 +19650,21 @@ 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; @@ -22137,6 +22588,79 @@ 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; @@ -22272,6 +22796,21 @@ 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; @@ -22332,6 +22871,21 @@ 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; @@ -22423,12 +22977,9 @@ 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; }; @@ -22438,12 +22989,11 @@ 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; }; @@ -23165,6 +23715,15 @@ ); 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; @@ -23434,6 +23993,7 @@ 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 */, @@ -23517,6 +24077,7 @@ 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 */, @@ -23537,6 +24098,7 @@ 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 */, @@ -23587,8 +24149,10 @@ 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; }; @@ -24426,6 +24990,35 @@ ); 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; @@ -24733,6 +25326,15 @@ ); 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; @@ -24772,6 +25374,15 @@ ); 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; @@ -24933,16 +25544,6 @@ 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 */; @@ -25408,6 +26009,11 @@ target = AFD570C90996B9F800BA26F7 /* Ant */; targetProxy = AF714E50105613580046AB1D /* PBXContainerItemProxy */; }; + AF7511001782B5B900380EA1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = AF4808C0098C3B6C00FB32B8 /* jwxyz */; + targetProxy = AF7511011782B5B900380EA1 /* PBXContainerItemProxy */; + }; AF7776E509B63ABF00EA3033 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = AF4808C0098C3B6C00FB32B8 /* jwxyz */; @@ -26848,6 +27454,56 @@ 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 */; @@ -27028,6 +27684,16 @@ 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 */; @@ -27063,6 +27729,11 @@ target = AFE6A41B0CDD7FAA002805BF /* Abstractile */; targetProxy = AFE6A42F0CDD7FEE002805BF /* PBXContainerItemProxy */; }; + AFF2868017860E830050A578 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = AF4808C0098C3B6C00FB32B8 /* jwxyz */; + targetProxy = AFF2868117860E830050A578 /* PBXContainerItemProxy */; + }; AFF463370C4403E400EE6509 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = AF4808C0098C3B6C00FB32B8 /* jwxyz */; @@ -27108,7 +27779,6 @@ 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)", @@ -27132,7 +27802,6 @@ 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)", @@ -27156,7 +27825,6 @@ 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)", @@ -27180,7 +27848,6 @@ 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)", @@ -27204,21 +27871,18 @@ 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)", @@ -27242,7 +27906,6 @@ 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)", @@ -27266,7 +27929,6 @@ AF137D420F075C9C004DE3B2 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = Obsolete; }; name = Debug; @@ -27274,7 +27936,6 @@ AF137D430F075C9C004DE3B2 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = Obsolete; }; name = Release; @@ -27282,69 +27943,27 @@ 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; @@ -27352,56 +27971,15 @@ 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; @@ -27409,55 +27987,15 @@ 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; @@ -27465,56 +28003,15 @@ 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; @@ -27522,7 +28019,6 @@ 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)", @@ -27546,7 +28042,6 @@ 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)", @@ -27570,7 +28065,6 @@ 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)", @@ -27594,7 +28088,6 @@ 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)", @@ -27618,7 +28111,6 @@ 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)", @@ -27642,7 +28134,6 @@ 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)", @@ -27666,7 +28157,6 @@ 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)", @@ -27690,7 +28180,6 @@ 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)", @@ -27714,7 +28203,6 @@ 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)", @@ -27738,7 +28226,6 @@ 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)", @@ -27762,719 +28249,602 @@ 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; @@ -28482,7 +28852,6 @@ AF480ABC098C66E300FB32B8 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = "All Savers (XScreenSaver)"; }; name = Release; @@ -28490,21 +28859,18 @@ 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; @@ -28512,7 +28878,6 @@ AF480D66098EED6E00FB32B8 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = "All Savers (XLockmore)"; }; name = Release; @@ -28520,7 +28885,6 @@ AF480D68098EED6E00FB32B8 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = "All Savers (OpenGL)"; }; name = Debug; @@ -28528,7 +28892,6 @@ AF480D69098EED6E00FB32B8 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = "All Savers (OpenGL)"; }; name = Release; @@ -28536,7 +28899,6 @@ AF480D6B098EED6E00FB32B8 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = "All Savers"; }; name = Debug; @@ -28544,7 +28906,6 @@ AF480D6C098EED6E00FB32B8 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = "All Savers"; }; name = Release; @@ -28552,33 +28913,18 @@ 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)", @@ -28602,19 +28948,6 @@ 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)", @@ -28638,7 +28971,6 @@ 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)", @@ -28662,7 +28994,6 @@ 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)", @@ -28686,7 +29017,6 @@ 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)", @@ -28710,7 +29040,6 @@ 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)", @@ -28734,7 +29063,6 @@ 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)", @@ -28758,7 +29086,6 @@ 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)", @@ -28782,7 +29109,6 @@ 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)", @@ -28806,7 +29132,6 @@ 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)", @@ -28830,7 +29155,6 @@ 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)", @@ -28854,7 +29178,6 @@ 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)", @@ -28878,7 +29201,6 @@ AF4FF4950D52CA0800666F98 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = m6502.h; }; name = Debug; @@ -28886,7 +29208,6 @@ AF4FF4960D52CA0800666F98 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = m6502.h; }; name = Release; @@ -28894,7 +29215,6 @@ 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)", @@ -28918,7 +29238,6 @@ 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)", @@ -28942,7 +29261,6 @@ 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)", @@ -28966,7 +29284,6 @@ 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)", @@ -28990,147 +29307,174 @@ 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)", @@ -29154,7 +29498,6 @@ 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)", @@ -29178,7 +29521,6 @@ 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)", @@ -29202,7 +29544,6 @@ 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)", @@ -29226,7 +29567,6 @@ 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)", @@ -29250,7 +29590,6 @@ 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)", @@ -29274,7 +29613,6 @@ 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)", @@ -29298,7 +29636,6 @@ 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)", @@ -29322,7 +29659,6 @@ 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)", @@ -29346,7 +29682,6 @@ 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)", @@ -29370,7 +29705,6 @@ 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)", @@ -29394,7 +29728,6 @@ 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)", @@ -29418,7 +29751,6 @@ 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)", @@ -29442,7 +29774,6 @@ 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)", @@ -29466,7 +29797,6 @@ 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)", @@ -29490,7 +29820,6 @@ 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)", @@ -29514,7 +29843,6 @@ 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)", @@ -29538,7 +29866,6 @@ 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)", @@ -29562,35 +29889,30 @@ 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)", @@ -29614,7 +29936,6 @@ 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)", @@ -29638,69 +29959,51 @@ 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; @@ -29708,26 +30011,15 @@ 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; @@ -29735,245 +30027,210 @@ 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; @@ -29983,7 +30240,6 @@ AF9771DC0989DC4B001F8B92 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = OSX/SaverRunner.plist; INSTALL_PATH = "$(HOME)/Applications"; WRAPPER_EXTENSION = app; @@ -29993,7 +30249,6 @@ 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)", @@ -30017,7 +30272,6 @@ 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)", @@ -30041,210 +30295,180 @@ 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; }; @@ -30277,7 +30501,6 @@ AFA33C080B058E67002B0E7D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = webcollage; }; name = Debug; @@ -30285,7 +30508,6 @@ AFA33C090B058E67002B0E7D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = webcollage; }; name = Release; @@ -30293,7 +30515,6 @@ 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)", @@ -30317,7 +30538,6 @@ 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)", @@ -30341,7 +30561,6 @@ 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)", @@ -30365,7 +30584,6 @@ 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)", @@ -30389,7 +30607,6 @@ 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)", @@ -30413,7 +30630,6 @@ 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)", @@ -30437,7 +30653,6 @@ 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)", @@ -30461,7 +30676,6 @@ 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)", @@ -30485,7 +30699,6 @@ 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)", @@ -30509,7 +30722,6 @@ 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)", @@ -30533,7 +30745,6 @@ 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)", @@ -30557,7 +30768,6 @@ 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)", @@ -30581,7 +30791,6 @@ 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)", @@ -30605,7 +30814,6 @@ 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)", @@ -30629,7 +30837,6 @@ 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)", @@ -30653,7 +30860,6 @@ 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)", @@ -30677,7 +30883,6 @@ 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)", @@ -30701,7 +30906,6 @@ 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)", @@ -30725,7 +30929,6 @@ 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)", @@ -30749,7 +30952,6 @@ 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)", @@ -30773,7 +30975,6 @@ 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)", @@ -30797,7 +30998,6 @@ 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)", @@ -30821,7 +31021,6 @@ 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)", @@ -30845,7 +31044,6 @@ 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)", @@ -30869,7 +31067,6 @@ 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)", @@ -30893,7 +31090,6 @@ 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)", @@ -30917,7 +31113,6 @@ 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)", @@ -30941,7 +31136,6 @@ 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)", @@ -30965,7 +31159,6 @@ 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)", @@ -30989,7 +31182,6 @@ 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)", @@ -31013,7 +31205,6 @@ 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)", @@ -31037,7 +31228,6 @@ 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)", @@ -31061,7 +31251,6 @@ 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)", @@ -31085,7 +31274,6 @@ 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)", @@ -31109,7 +31297,6 @@ 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)", @@ -31133,7 +31320,6 @@ 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)", @@ -31157,7 +31343,6 @@ 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)", @@ -31181,7 +31366,6 @@ 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)", @@ -31205,7 +31389,6 @@ 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)", @@ -31229,7 +31412,6 @@ 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)", @@ -31253,7 +31435,6 @@ 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)", @@ -31277,7 +31458,6 @@ 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)", @@ -31301,7 +31481,6 @@ 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)", @@ -31325,7 +31504,6 @@ 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)", @@ -31349,7 +31527,6 @@ 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)", @@ -31373,7 +31550,6 @@ 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)", @@ -31397,7 +31573,6 @@ 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)", @@ -31421,7 +31596,6 @@ 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)", @@ -31445,7 +31619,6 @@ 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)", @@ -31469,7 +31642,6 @@ 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)", @@ -31493,7 +31665,6 @@ 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)", @@ -31517,7 +31688,6 @@ 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)", @@ -31541,7 +31711,6 @@ 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)", @@ -31565,7 +31734,6 @@ 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)", @@ -31589,7 +31757,6 @@ 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)", @@ -31613,7 +31780,6 @@ 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)", @@ -31637,7 +31803,6 @@ 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)", @@ -31661,7 +31826,6 @@ 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)", @@ -31685,7 +31849,6 @@ 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)", @@ -31709,7 +31872,6 @@ 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)", @@ -31733,7 +31895,6 @@ 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)", @@ -31757,7 +31918,6 @@ 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)", @@ -31781,7 +31941,6 @@ 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)", @@ -31805,7 +31964,6 @@ 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)", @@ -31829,7 +31987,6 @@ 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)", @@ -31853,7 +32010,6 @@ 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)", @@ -31877,7 +32033,6 @@ 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)", @@ -31901,7 +32056,6 @@ 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)", @@ -31925,7 +32079,6 @@ 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)", @@ -31949,7 +32102,6 @@ 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)", @@ -31973,7 +32125,6 @@ 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)", @@ -31997,7 +32148,6 @@ 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)", @@ -32021,7 +32171,6 @@ 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)", @@ -32045,7 +32194,6 @@ 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)", @@ -32069,7 +32217,6 @@ 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)", @@ -32093,7 +32240,6 @@ 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)", @@ -32117,7 +32263,6 @@ 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)", @@ -32141,7 +32286,6 @@ 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)", @@ -32165,7 +32309,6 @@ 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)", @@ -32189,7 +32332,6 @@ 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)", @@ -32213,7 +32355,6 @@ AFA5611B099378EA00F3E977 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = molecules.h; }; name = Debug; @@ -32221,7 +32362,6 @@ AFA5611C099378EA00F3E977 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = molecules.h; }; name = Release; @@ -32229,7 +32369,6 @@ 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)", @@ -32253,7 +32392,6 @@ 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)", @@ -32277,7 +32415,6 @@ 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)", @@ -32301,7 +32438,6 @@ 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)", @@ -32325,7 +32461,6 @@ 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)", @@ -32349,7 +32484,6 @@ 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)", @@ -32373,7 +32507,6 @@ 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)", @@ -32397,7 +32530,6 @@ 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)", @@ -32421,7 +32553,6 @@ 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)", @@ -32445,7 +32576,6 @@ 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)", @@ -32469,7 +32599,6 @@ 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)", @@ -32493,7 +32622,6 @@ 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)", @@ -32517,7 +32645,6 @@ 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)", @@ -32541,7 +32668,6 @@ 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)", @@ -32565,7 +32691,6 @@ 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)", @@ -32589,7 +32714,6 @@ 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)", @@ -32613,7 +32737,6 @@ 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)", @@ -32637,7 +32760,6 @@ 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)", @@ -32661,7 +32783,6 @@ 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)", @@ -32685,7 +32806,6 @@ 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)", @@ -32709,7 +32829,6 @@ 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)", @@ -32733,7 +32852,6 @@ 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)", @@ -32757,7 +32875,6 @@ 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)", @@ -32781,7 +32898,6 @@ 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)", @@ -32805,7 +32921,6 @@ 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)", @@ -32829,7 +32944,6 @@ 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)", @@ -32850,10 +32964,67 @@ }; 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)", @@ -32877,7 +33048,6 @@ 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)", @@ -32901,7 +33071,6 @@ 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)", @@ -32925,7 +33094,6 @@ 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)", @@ -32949,455 +33117,438 @@ 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)", @@ -33421,7 +33572,6 @@ 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)", @@ -33445,7 +33595,6 @@ 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)", @@ -33469,7 +33618,6 @@ 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)", @@ -33493,7 +33641,6 @@ 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)", @@ -33517,7 +33664,6 @@ 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)", @@ -33541,35 +33687,78 @@ 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)", @@ -33593,7 +33782,6 @@ 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)", @@ -33618,9 +33806,10 @@ 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; @@ -33641,6 +33830,7 @@ "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; @@ -33650,6 +33840,7 @@ 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; @@ -33662,12 +33853,15 @@ ); 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; @@ -33678,9 +33872,10 @@ 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 = ( @@ -33722,13 +33917,17 @@ ); 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; }; @@ -33791,7 +33990,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - AF2D4D8C13E902F5002AA818 /* Build configuration list for PBXNativeTarget "PhosphorApp" */ = { + AF2D4D8C13E902F5002AA818 /* Build configuration list for PBXNativeTarget "Phosphor-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( AF2D4D8D13E902F5002AA818 /* Debug */, @@ -33800,7 +33999,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - AF2D4F7B13E91093002AA818 /* Build configuration list for PBXNativeTarget "Apple2App" */ = { + AF2D4F7B13E91093002AA818 /* Build configuration list for PBXNativeTarget "Apple2-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( AF2D4F7C13E91093002AA818 /* Debug */, @@ -34502,6 +34701,15 @@ 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 = ( @@ -35474,6 +35682,33 @@ 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 = ( @@ -35780,6 +36015,15 @@ 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 = ( @@ -35816,6 +36060,15 @@ 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 = ( -- 2.30.2