├── squirell_monkey.jpg ├── ImageReflection_Prefix.pch ├── README ├── main.m ├── Classes ├── UIImage+Reflection.h ├── ImageReflectionViewController.h ├── ImageReflectionAppDelegate.h ├── ImageReflectionViewController.m ├── ImageReflectionAppDelegate.m └── UIImage+Reflection.m ├── ImageReflection-Info.plist ├── ImageReflection.xcodeproj ├── project.pbxproj ├── alex.pbxuser └── alex.mode1v3 ├── ImageReflectionViewController.xib └── MainWindow.xib /squirell_monkey.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixpickle/ImageReflection/HEAD/squirell_monkey.jpg -------------------------------------------------------------------------------- /ImageReflection_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'ImageReflection' target in the 'ImageReflection' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #import 8 | #endif 9 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | This app itself has a picture of a monkey and a reflection of that picture below it. This demonstrates how to use a simple addition to UIImage allowing two methods of reflecting images. Call the following methods to reflect a UIImage: 2 | 3 | - (UIImage *)reflectionWithHeight:(int)height; 4 | - (UIImage *)reflectionWithAlpha:(float)pcnt; 5 | 6 | Note that this automatically flips the image for you. Do not do that manually. 7 | -------------------------------------------------------------------------------- /main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // ImageReflection 4 | // 5 | // Created by Alex Nichol on 11/7/10. 6 | // Copyright __MyCompanyName__ 2010. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) { 12 | 13 | NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | [pool release]; 16 | return retVal; 17 | } 18 | -------------------------------------------------------------------------------- /Classes/UIImage+Reflection.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Reflection.h 3 | // ImageReflection 4 | // 5 | // Created by Alex Nichol on 11/7/10. 6 | // Copyright 2010 Jitsik. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface UIImage (Reflection) 13 | 14 | - (UIImage *)reflectionWithHeight:(int)height; 15 | - (UIImage *)reflectionWithAlpha:(float)pcnt; 16 | - (UIImage *)reflectionRotatedWithAlpha:(float)pcnt; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Classes/ImageReflectionViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ImageReflectionViewController.h 3 | // ImageReflection 4 | // 5 | // Created by Alex Nichol on 11/7/10. 6 | // Copyright Jitsik 2010. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "UIImage+Reflection.h" 11 | 12 | @interface ImageReflectionViewController : UIViewController { 13 | UIImage * myImage; 14 | IBOutlet UIImageView * monkeyView; 15 | IBOutlet UIImageView * topRef; 16 | IBOutlet UIImageView * refView; 17 | } 18 | 19 | @end 20 | 21 | -------------------------------------------------------------------------------- /Classes/ImageReflectionAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ImageReflectionAppDelegate.h 3 | // ImageReflection 4 | // 5 | // Created by Alex Nichol on 11/7/10. 6 | // Copyright __MyCompanyName__ 2010. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class ImageReflectionViewController; 12 | 13 | @interface ImageReflectionAppDelegate : NSObject { 14 | UIWindow *window; 15 | ImageReflectionViewController *viewController; 16 | } 17 | 18 | @property (nonatomic, retain) IBOutlet UIWindow *window; 19 | @property (nonatomic, retain) IBOutlet ImageReflectionViewController *viewController; 20 | 21 | @end 22 | 23 | -------------------------------------------------------------------------------- /ImageReflection-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | com.yourcompany.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | NSMainNibFile 28 | MainWindow 29 | 30 | 31 | -------------------------------------------------------------------------------- /Classes/ImageReflectionViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ImageReflectionViewController.m 3 | // ImageReflection 4 | // 5 | // Created by Alex Nichol on 11/7/10. 6 | // Copyright Jitsik 2010. All rights reserved. 7 | // 8 | 9 | #import "ImageReflectionViewController.h" 10 | 11 | @implementation ImageReflectionViewController 12 | 13 | 14 | 15 | /* 16 | // The designated initializer. Override to perform setup that is required before the view is loaded. 17 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 18 | if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { 19 | // Custom initialization 20 | } 21 | return self; 22 | } 23 | */ 24 | 25 | /* 26 | // Implement loadView to create a view hierarchy programmatically, without using a nib. 27 | - (void)loadView { 28 | } 29 | */ 30 | 31 | 32 | 33 | // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 34 | - (void)viewDidLoad { 35 | [super viewDidLoad]; 36 | [refView setImage:[[monkeyView image] reflectionWithAlpha:0.5]]; 37 | [topRef setImage:[[monkeyView image] reflectionRotatedWithAlpha:0.1]]; 38 | } 39 | 40 | 41 | 42 | /* 43 | // Override to allow orientations other than the default portrait orientation. 44 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 45 | // Return YES for supported orientations 46 | return (interfaceOrientation == UIInterfaceOrientationPortrait); 47 | } 48 | */ 49 | 50 | - (void)didReceiveMemoryWarning { 51 | // Releases the view if it doesn't have a superview. 52 | [super didReceiveMemoryWarning]; 53 | 54 | // Release any cached data, images, etc that aren't in use. 55 | } 56 | 57 | - (void)viewDidUnload { 58 | // Release any retained subviews of the main view. 59 | // e.g. self.myOutlet = nil; 60 | } 61 | 62 | 63 | - (void)dealloc { 64 | [super dealloc]; 65 | } 66 | 67 | @end 68 | -------------------------------------------------------------------------------- /Classes/ImageReflectionAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // ImageReflectionAppDelegate.m 3 | // ImageReflection 4 | // 5 | // Created by Alex Nichol on 11/7/10. 6 | // Copyright __MyCompanyName__ 2010. All rights reserved. 7 | // 8 | 9 | #import "ImageReflectionAppDelegate.h" 10 | #import "ImageReflectionViewController.h" 11 | 12 | @implementation ImageReflectionAppDelegate 13 | 14 | @synthesize window; 15 | @synthesize viewController; 16 | 17 | 18 | #pragma mark - 19 | #pragma mark Application lifecycle 20 | 21 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 22 | 23 | // Override point for customization after application launch. 24 | 25 | // Add the view controller's view to the window and display. 26 | [window addSubview:viewController.view]; 27 | [window makeKeyAndVisible]; 28 | 29 | return YES; 30 | } 31 | 32 | 33 | - (void)applicationWillResignActive:(UIApplication *)application { 34 | /* 35 | Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 36 | Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 37 | */ 38 | } 39 | 40 | 41 | - (void)applicationDidEnterBackground:(UIApplication *)application { 42 | /* 43 | Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 44 | If your application supports background execution, called instead of applicationWillTerminate: when the user quits. 45 | */ 46 | } 47 | 48 | 49 | - (void)applicationWillEnterForeground:(UIApplication *)application { 50 | /* 51 | Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. 52 | */ 53 | } 54 | 55 | 56 | - (void)applicationDidBecomeActive:(UIApplication *)application { 57 | /* 58 | Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 59 | */ 60 | } 61 | 62 | 63 | - (void)applicationWillTerminate:(UIApplication *)application { 64 | /* 65 | Called when the application is about to terminate. 66 | See also applicationDidEnterBackground:. 67 | */ 68 | } 69 | 70 | 71 | #pragma mark - 72 | #pragma mark Memory management 73 | 74 | - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { 75 | /* 76 | Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. 77 | */ 78 | } 79 | 80 | 81 | - (void)dealloc { 82 | [viewController release]; 83 | [window release]; 84 | [super dealloc]; 85 | } 86 | 87 | 88 | @end 89 | -------------------------------------------------------------------------------- /Classes/UIImage+Reflection.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Reflection.m 3 | // ImageReflection 4 | // 5 | // Created by Alex Nichol on 11/7/10. 6 | // Copyright 2010 Jitsik. All rights reserved. 7 | // 8 | 9 | #import "UIImage+Reflection.h" 10 | 11 | #ifndef UIImageReflectionMethods 12 | #define UIImageReflectionMethods 13 | 14 | CGImageRef CreateGradientImage (int pixelsWide, int pixelsHigh, CGFloat endPoint) { 15 | CGImageRef theCGImage = NULL; 16 | 17 | // gradient is always black-white and the mask must be in the gray colorspace 18 | CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); 19 | 20 | // create the bitmap context 21 | CGContextRef gradientBitmapContext = CGBitmapContextCreate(NULL, pixelsWide, pixelsHigh, 22 | 8, 0, colorSpace, kCGImageAlphaNone); 23 | 24 | // define the start and end grayscale values (with the alpha, even though 25 | // our bitmap context doesn't support alpha the gradient requires it) 26 | CGFloat colors[] = {0.0, 1.0, 1, 1.0}; 27 | 28 | // create the CGGradient and then release the gray color space 29 | CGGradientRef grayScaleGradient = CGGradientCreateWithColorComponents(colorSpace, colors, NULL, 2); 30 | CGColorSpaceRelease(colorSpace); 31 | 32 | // create the start and end points for the gradient vector (straight down) 33 | CGPoint gradientStartPoint = CGPointZero; 34 | CGPoint gradientEndPoint = CGPointMake(0, endPoint); 35 | 36 | if (endPoint < 0) { 37 | gradientEndPoint = CGPointMake(0, -endPoint); 38 | } 39 | 40 | // draw the gradient into the gray bitmap context 41 | CGContextDrawLinearGradient(gradientBitmapContext, grayScaleGradient, gradientStartPoint, 42 | gradientEndPoint, kCGGradientDrawsAfterEndLocation); 43 | CGGradientRelease(grayScaleGradient); 44 | 45 | // convert the context into a CGImageRef and release the context 46 | theCGImage = CGBitmapContextCreateImage(gradientBitmapContext); 47 | 48 | if (endPoint < 0) { 49 | // rotate 50 | CGContextClearRect(gradientBitmapContext, CGRectMake(0, 0, pixelsWide, pixelsHigh)); 51 | CGContextTranslateCTM(gradientBitmapContext, 0.0, pixelsHigh); 52 | CGContextScaleCTM(gradientBitmapContext, 1.0, -1.0); 53 | CGContextDrawImage(gradientBitmapContext, CGRectMake(0, 0, pixelsWide, pixelsHigh), theCGImage); 54 | CGImageRelease(theCGImage); 55 | theCGImage = CGBitmapContextCreateImage(gradientBitmapContext); 56 | } 57 | 58 | CGContextRelease(gradientBitmapContext); 59 | 60 | // return the imageref containing the gradient 61 | return theCGImage; 62 | } 63 | 64 | static CGContextRef MyCreateBitmapContext (int pixelsWide, int pixelsHigh) { 65 | CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 66 | 67 | // create the bitmap context 68 | CGContextRef bitmapContext = CGBitmapContextCreate (NULL, pixelsWide, pixelsHigh, 8, 69 | 0, colorSpace, 70 | // this will give us an optimal BGRA format for the device: 71 | (kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst)); 72 | CGColorSpaceRelease(colorSpace); 73 | 74 | return bitmapContext; 75 | } 76 | 77 | #endif 78 | 79 | @implementation UIImage (Reflection) 80 | 81 | - (UIImage *)reflectionRotatedWithAlpha:(float)pcnt { 82 | int height = self.size.height; 83 | UIImage * fromImage = self; 84 | pcnt = 1.0 / pcnt; 85 | 86 | // create a bitmap graphics context the size of the image 87 | CGContextRef mainViewContentContext = MyCreateBitmapContext(fromImage.size.width, height); 88 | 89 | // create a 2 bit CGImage containing a gradient that will be used for masking the 90 | // main view content to create the 'fade' of the reflection. The CGImageCreateWithMask 91 | // function will stretch the bitmap image as required, so we can create a 1 pixel wide gradient 92 | CGImageRef gradientMaskImage = CreateGradientImage(1, height, -(height * pcnt)); 93 | 94 | // create an image by masking the bitmap of the mainView content with the gradient view 95 | // then release the pre-masked content bitmap and the gradient bitmap 96 | CGContextClipToMask(mainViewContentContext, CGRectMake(0.0, 0.0, fromImage.size.width, height), gradientMaskImage); 97 | CGImageRelease(gradientMaskImage); 98 | 99 | // In order to grab the part of the image that we want to render, we move the context origin to the 100 | // height of the image that we want to capture, then we flip the context so that the image draws upside down. 101 | // CGContextTranslateCTM(mainViewContentContext, 0.0, height); 102 | // CGContextScaleCTM(mainViewContentContext, 1.0, -1.0); 103 | 104 | // draw the image into the bitmap context 105 | CGContextDrawImage(mainViewContentContext, CGRectMake(0, 0, fromImage.size.width, fromImage.size.height), [fromImage CGImage]); 106 | 107 | // create CGImageRef of the main view bitmap content, and then release that bitmap context 108 | CGImageRef reflectionImage = CGBitmapContextCreateImage(mainViewContentContext); 109 | CGContextRelease(mainViewContentContext); 110 | 111 | // convert the finished reflection image to a UIImage 112 | UIImage * theImage = [UIImage imageWithCGImage:reflectionImage]; 113 | // image is retained by the property setting above, so we can release the original 114 | CGImageRelease(reflectionImage); 115 | 116 | return theImage; 117 | } 118 | 119 | - (UIImage *)reflectionWithHeight:(int)height { 120 | if (height = -1) { 121 | height = [self size].height; 122 | } 123 | if (height == 0) 124 | return nil; 125 | 126 | UIImage * fromImage = self; 127 | 128 | // create a bitmap graphics context the size of the image 129 | CGContextRef mainViewContentContext = MyCreateBitmapContext(fromImage.size.width, fromImage.size.height); 130 | 131 | // create a 2 bit CGImage containing a gradient that will be used for masking the 132 | // main view content to create the 'fade' of the reflection. The CGImageCreateWithMask 133 | // function will stretch the bitmap image as required, so we can create a 1 pixel wide gradient 134 | CGImageRef gradientMaskImage = CreateGradientImage(1, height, height); 135 | 136 | // create an image by masking the bitmap of the mainView content with the gradient view 137 | // then release the pre-masked content bitmap and the gradient bitmap 138 | CGContextClipToMask(mainViewContentContext, CGRectMake(0.0, 0.0, fromImage.size.width, height), gradientMaskImage); 139 | CGImageRelease(gradientMaskImage); 140 | 141 | // In order to grab the part of the image that we want to render, we move the context origin to the 142 | // height of the image that we want to capture, then we flip the context so that the image draws upside down. 143 | CGContextTranslateCTM(mainViewContentContext, 0.0, fromImage.size.height); 144 | CGContextScaleCTM(mainViewContentContext, 1.0, -1.0); 145 | 146 | // draw the image into the bitmap context 147 | CGContextDrawImage(mainViewContentContext, CGRectMake(0, 0, fromImage.size.width, fromImage.size.height), [fromImage CGImage]); 148 | 149 | // create CGImageRef of the main view bitmap content, and then release that bitmap context 150 | CGImageRef reflectionImage = CGBitmapContextCreateImage(mainViewContentContext); 151 | CGContextRelease(mainViewContentContext); 152 | 153 | // convert the finished reflection image to a UIImage 154 | UIImage * theImage = [UIImage imageWithCGImage:reflectionImage]; 155 | // image is retained by the property setting above, so we can release the original 156 | CGImageRelease(reflectionImage); 157 | 158 | return theImage; 159 | } 160 | 161 | - (UIImage *)reflectionWithAlpha:(float)pcnt { 162 | int height = self.size.height; 163 | UIImage * fromImage = self; 164 | pcnt = 1.0 / pcnt; 165 | 166 | // create a bitmap graphics context the size of the image 167 | CGContextRef mainViewContentContext = MyCreateBitmapContext(fromImage.size.width, height); 168 | 169 | // create a 2 bit CGImage containing a gradient that will be used for masking the 170 | // main view content to create the 'fade' of the reflection. The CGImageCreateWithMask 171 | // function will stretch the bitmap image as required, so we can create a 1 pixel wide gradient 172 | CGImageRef gradientMaskImage = CreateGradientImage(1, height, height * pcnt); 173 | 174 | // create an image by masking the bitmap of the mainView content with the gradient view 175 | // then release the pre-masked content bitmap and the gradient bitmap 176 | CGContextClipToMask(mainViewContentContext, CGRectMake(0.0, 0.0, fromImage.size.width, height), gradientMaskImage); 177 | CGImageRelease(gradientMaskImage); 178 | 179 | // In order to grab the part of the image that we want to render, we move the context origin to the 180 | // height of the image that we want to capture, then we flip the context so that the image draws upside down. 181 | CGContextTranslateCTM(mainViewContentContext, 0.0, height); 182 | CGContextScaleCTM(mainViewContentContext, 1.0, -1.0); 183 | 184 | // draw the image into the bitmap context 185 | CGContextDrawImage(mainViewContentContext, CGRectMake(0, 0, fromImage.size.width, fromImage.size.height), [fromImage CGImage]); 186 | 187 | // create CGImageRef of the main view bitmap content, and then release that bitmap context 188 | CGImageRef reflectionImage = CGBitmapContextCreateImage(mainViewContentContext); 189 | CGContextRelease(mainViewContentContext); 190 | 191 | // convert the finished reflection image to a UIImage 192 | UIImage * theImage = [UIImage imageWithCGImage:reflectionImage]; 193 | // image is retained by the property setting above, so we can release the original 194 | CGImageRelease(reflectionImage); 195 | 196 | return theImage; 197 | } 198 | 199 | @end 200 | -------------------------------------------------------------------------------- /ImageReflection.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 45; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1D3623260D0F684500981E51 /* ImageReflectionAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* ImageReflectionAppDelegate.m */; }; 11 | 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 12 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 13 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 14 | 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; }; 15 | 2899E5220DE3E06400AC0155 /* ImageReflectionViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2899E5210DE3E06400AC0155 /* ImageReflectionViewController.xib */; }; 16 | 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; }; 17 | 28D7ACF80DDB3853001CB0EB /* ImageReflectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D7ACF70DDB3853001CB0EB /* ImageReflectionViewController.m */; }; 18 | FA9EE1E712876E3F007C03E3 /* UIImage+Reflection.m in Sources */ = {isa = PBXBuildFile; fileRef = FA9EE1E612876E3F007C03E3 /* UIImage+Reflection.m */; }; 19 | FA9EE20E12877046007C03E3 /* squirell_monkey.jpg in Resources */ = {isa = PBXBuildFile; fileRef = FA9EE20D12877046007C03E3 /* squirell_monkey.jpg */; }; 20 | /* End PBXBuildFile section */ 21 | 22 | /* Begin PBXFileReference section */ 23 | 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 24 | 1D3623240D0F684500981E51 /* ImageReflectionAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageReflectionAppDelegate.h; sourceTree = ""; }; 25 | 1D3623250D0F684500981E51 /* ImageReflectionAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageReflectionAppDelegate.m; sourceTree = ""; }; 26 | 1D6058910D05DD3D006BFB54 /* ImageReflection.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ImageReflection.app; sourceTree = BUILT_PRODUCTS_DIR; }; 27 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 28 | 288765A40DF7441C002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 29 | 2899E5210DE3E06400AC0155 /* ImageReflectionViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ImageReflectionViewController.xib; sourceTree = ""; }; 30 | 28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; 31 | 28D7ACF60DDB3853001CB0EB /* ImageReflectionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageReflectionViewController.h; sourceTree = ""; }; 32 | 28D7ACF70DDB3853001CB0EB /* ImageReflectionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageReflectionViewController.m; sourceTree = ""; }; 33 | 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 34 | 32CA4F630368D1EE00C91783 /* ImageReflection_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageReflection_Prefix.pch; sourceTree = ""; }; 35 | 8D1107310486CEB800E47090 /* ImageReflection-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "ImageReflection-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; 36 | FA9EE1E512876E3F007C03E3 /* UIImage+Reflection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+Reflection.h"; sourceTree = ""; }; 37 | FA9EE1E612876E3F007C03E3 /* UIImage+Reflection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+Reflection.m"; sourceTree = ""; }; 38 | FA9EE20D12877046007C03E3 /* squirell_monkey.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = squirell_monkey.jpg; sourceTree = ""; }; 39 | /* End PBXFileReference section */ 40 | 41 | /* Begin PBXFrameworksBuildPhase section */ 42 | 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { 43 | isa = PBXFrameworksBuildPhase; 44 | buildActionMask = 2147483647; 45 | files = ( 46 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 47 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 48 | 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */, 49 | ); 50 | runOnlyForDeploymentPostprocessing = 0; 51 | }; 52 | /* End PBXFrameworksBuildPhase section */ 53 | 54 | /* Begin PBXGroup section */ 55 | 080E96DDFE201D6D7F000001 /* Classes */ = { 56 | isa = PBXGroup; 57 | children = ( 58 | 1D3623240D0F684500981E51 /* ImageReflectionAppDelegate.h */, 59 | 1D3623250D0F684500981E51 /* ImageReflectionAppDelegate.m */, 60 | 28D7ACF60DDB3853001CB0EB /* ImageReflectionViewController.h */, 61 | 28D7ACF70DDB3853001CB0EB /* ImageReflectionViewController.m */, 62 | FA9EE1E512876E3F007C03E3 /* UIImage+Reflection.h */, 63 | FA9EE1E612876E3F007C03E3 /* UIImage+Reflection.m */, 64 | ); 65 | path = Classes; 66 | sourceTree = ""; 67 | }; 68 | 19C28FACFE9D520D11CA2CBB /* Products */ = { 69 | isa = PBXGroup; 70 | children = ( 71 | 1D6058910D05DD3D006BFB54 /* ImageReflection.app */, 72 | ); 73 | name = Products; 74 | sourceTree = ""; 75 | }; 76 | 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { 77 | isa = PBXGroup; 78 | children = ( 79 | 080E96DDFE201D6D7F000001 /* Classes */, 80 | 29B97315FDCFA39411CA2CEA /* Other Sources */, 81 | 29B97317FDCFA39411CA2CEA /* Resources */, 82 | 29B97323FDCFA39411CA2CEA /* Frameworks */, 83 | 19C28FACFE9D520D11CA2CBB /* Products */, 84 | ); 85 | name = CustomTemplate; 86 | sourceTree = ""; 87 | }; 88 | 29B97315FDCFA39411CA2CEA /* Other Sources */ = { 89 | isa = PBXGroup; 90 | children = ( 91 | 32CA4F630368D1EE00C91783 /* ImageReflection_Prefix.pch */, 92 | 29B97316FDCFA39411CA2CEA /* main.m */, 93 | ); 94 | name = "Other Sources"; 95 | sourceTree = ""; 96 | }; 97 | 29B97317FDCFA39411CA2CEA /* Resources */ = { 98 | isa = PBXGroup; 99 | children = ( 100 | FA9EE20D12877046007C03E3 /* squirell_monkey.jpg */, 101 | 2899E5210DE3E06400AC0155 /* ImageReflectionViewController.xib */, 102 | 28AD733E0D9D9553002E5188 /* MainWindow.xib */, 103 | 8D1107310486CEB800E47090 /* ImageReflection-Info.plist */, 104 | ); 105 | name = Resources; 106 | sourceTree = ""; 107 | }; 108 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = { 109 | isa = PBXGroup; 110 | children = ( 111 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, 112 | 1D30AB110D05D00D00671497 /* Foundation.framework */, 113 | 288765A40DF7441C002DB57D /* CoreGraphics.framework */, 114 | ); 115 | name = Frameworks; 116 | sourceTree = ""; 117 | }; 118 | /* End PBXGroup section */ 119 | 120 | /* Begin PBXNativeTarget section */ 121 | 1D6058900D05DD3D006BFB54 /* ImageReflection */ = { 122 | isa = PBXNativeTarget; 123 | buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "ImageReflection" */; 124 | buildPhases = ( 125 | 1D60588D0D05DD3D006BFB54 /* Resources */, 126 | 1D60588E0D05DD3D006BFB54 /* Sources */, 127 | 1D60588F0D05DD3D006BFB54 /* Frameworks */, 128 | ); 129 | buildRules = ( 130 | ); 131 | dependencies = ( 132 | ); 133 | name = ImageReflection; 134 | productName = ImageReflection; 135 | productReference = 1D6058910D05DD3D006BFB54 /* ImageReflection.app */; 136 | productType = "com.apple.product-type.application"; 137 | }; 138 | /* End PBXNativeTarget section */ 139 | 140 | /* Begin PBXProject section */ 141 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 142 | isa = PBXProject; 143 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "ImageReflection" */; 144 | compatibilityVersion = "Xcode 3.1"; 145 | developmentRegion = English; 146 | hasScannedForEncodings = 1; 147 | knownRegions = ( 148 | English, 149 | Japanese, 150 | French, 151 | German, 152 | ); 153 | mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; 154 | projectDirPath = ""; 155 | projectRoot = ""; 156 | targets = ( 157 | 1D6058900D05DD3D006BFB54 /* ImageReflection */, 158 | ); 159 | }; 160 | /* End PBXProject section */ 161 | 162 | /* Begin PBXResourcesBuildPhase section */ 163 | 1D60588D0D05DD3D006BFB54 /* Resources */ = { 164 | isa = PBXResourcesBuildPhase; 165 | buildActionMask = 2147483647; 166 | files = ( 167 | 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */, 168 | 2899E5220DE3E06400AC0155 /* ImageReflectionViewController.xib in Resources */, 169 | FA9EE20E12877046007C03E3 /* squirell_monkey.jpg in Resources */, 170 | ); 171 | runOnlyForDeploymentPostprocessing = 0; 172 | }; 173 | /* End PBXResourcesBuildPhase section */ 174 | 175 | /* Begin PBXSourcesBuildPhase section */ 176 | 1D60588E0D05DD3D006BFB54 /* Sources */ = { 177 | isa = PBXSourcesBuildPhase; 178 | buildActionMask = 2147483647; 179 | files = ( 180 | 1D60589B0D05DD56006BFB54 /* main.m in Sources */, 181 | 1D3623260D0F684500981E51 /* ImageReflectionAppDelegate.m in Sources */, 182 | 28D7ACF80DDB3853001CB0EB /* ImageReflectionViewController.m in Sources */, 183 | FA9EE1E712876E3F007C03E3 /* UIImage+Reflection.m in Sources */, 184 | ); 185 | runOnlyForDeploymentPostprocessing = 0; 186 | }; 187 | /* End PBXSourcesBuildPhase section */ 188 | 189 | /* Begin XCBuildConfiguration section */ 190 | 1D6058940D05DD3E006BFB54 /* Debug */ = { 191 | isa = XCBuildConfiguration; 192 | buildSettings = { 193 | ALWAYS_SEARCH_USER_PATHS = NO; 194 | COPY_PHASE_STRIP = NO; 195 | GCC_DYNAMIC_NO_PIC = NO; 196 | GCC_OPTIMIZATION_LEVEL = 0; 197 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 198 | GCC_PREFIX_HEADER = ImageReflection_Prefix.pch; 199 | INFOPLIST_FILE = "ImageReflection-Info.plist"; 200 | PRODUCT_NAME = ImageReflection; 201 | SDKROOT = iphoneos4.2; 202 | }; 203 | name = Debug; 204 | }; 205 | 1D6058950D05DD3E006BFB54 /* Release */ = { 206 | isa = XCBuildConfiguration; 207 | buildSettings = { 208 | ALWAYS_SEARCH_USER_PATHS = NO; 209 | COPY_PHASE_STRIP = YES; 210 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 211 | GCC_PREFIX_HEADER = ImageReflection_Prefix.pch; 212 | INFOPLIST_FILE = "ImageReflection-Info.plist"; 213 | PRODUCT_NAME = ImageReflection; 214 | VALIDATE_PRODUCT = YES; 215 | }; 216 | name = Release; 217 | }; 218 | C01FCF4F08A954540054247B /* Debug */ = { 219 | isa = XCBuildConfiguration; 220 | buildSettings = { 221 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 222 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 223 | GCC_C_LANGUAGE_STANDARD = c99; 224 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 225 | GCC_WARN_UNUSED_VARIABLE = YES; 226 | PREBINDING = NO; 227 | SDKROOT = iphoneos4.0; 228 | }; 229 | name = Debug; 230 | }; 231 | C01FCF5008A954540054247B /* Release */ = { 232 | isa = XCBuildConfiguration; 233 | buildSettings = { 234 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 235 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 236 | GCC_C_LANGUAGE_STANDARD = c99; 237 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 238 | GCC_WARN_UNUSED_VARIABLE = YES; 239 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 240 | PREBINDING = NO; 241 | SDKROOT = iphoneos4.0; 242 | }; 243 | name = Release; 244 | }; 245 | /* End XCBuildConfiguration section */ 246 | 247 | /* Begin XCConfigurationList section */ 248 | 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "ImageReflection" */ = { 249 | isa = XCConfigurationList; 250 | buildConfigurations = ( 251 | 1D6058940D05DD3E006BFB54 /* Debug */, 252 | 1D6058950D05DD3E006BFB54 /* Release */, 253 | ); 254 | defaultConfigurationIsVisible = 0; 255 | defaultConfigurationName = Release; 256 | }; 257 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "ImageReflection" */ = { 258 | isa = XCConfigurationList; 259 | buildConfigurations = ( 260 | C01FCF4F08A954540054247B /* Debug */, 261 | C01FCF5008A954540054247B /* Release */, 262 | ); 263 | defaultConfigurationIsVisible = 0; 264 | defaultConfigurationName = Release; 265 | }; 266 | /* End XCConfigurationList section */ 267 | }; 268 | rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; 269 | } 270 | -------------------------------------------------------------------------------- /ImageReflectionViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1056 5 | 10F569 6 | 823 7 | 1038.29 8 | 461.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 132 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | 42 | 274 43 | 44 | YES 45 | 46 | 47 | 274 48 | {{60, 260}, {200, 200}} 49 | 50 | NO 51 | IBCocoaTouchFramework 52 | 53 | NSImage 54 | squirell_monkey.jpg 55 | 56 | 57 | 58 | 59 | 274 60 | {{60, -156}, {200, 200}} 61 | 62 | NO 63 | IBCocoaTouchFramework 64 | 65 | 66 | 67 | 68 | 274 69 | {{60, 52}, {200, 200}} 70 | 71 | NO 72 | IBCocoaTouchFramework 73 | 74 | 75 | 76 | {320, 460} 77 | 78 | 79 | 1 80 | MCAwIDAAA 81 | 82 | NO 83 | 84 | IBCocoaTouchFramework 85 | 86 | 87 | 88 | 89 | YES 90 | 91 | 92 | view 93 | 94 | 95 | 96 | 7 97 | 98 | 99 | 100 | monkeyView 101 | 102 | 103 | 104 | 10 105 | 106 | 107 | 108 | refView 109 | 110 | 111 | 112 | 11 113 | 114 | 115 | 116 | topRef 117 | 118 | 119 | 120 | 13 121 | 122 | 123 | 124 | 125 | YES 126 | 127 | 0 128 | 129 | 130 | 131 | 132 | 133 | -1 134 | 135 | 136 | File's Owner 137 | 138 | 139 | -2 140 | 141 | 142 | 143 | 144 | 6 145 | 146 | 147 | YES 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 8 156 | 157 | 158 | 159 | 160 | 9 161 | 162 | 163 | 164 | 165 | 12 166 | 167 | 168 | 169 | 170 | 171 | 172 | YES 173 | 174 | YES 175 | -1.CustomClassName 176 | -2.CustomClassName 177 | 12.IBPluginDependency 178 | 12.IBViewBoundsToFrameTransform 179 | 6.IBEditorWindowLastContentRect 180 | 6.IBPluginDependency 181 | 8.IBPluginDependency 182 | 8.IBViewBoundsToFrameTransform 183 | 9.IBPluginDependency 184 | 9.IBViewBoundsToFrameTransform 185 | 186 | 187 | YES 188 | ImageReflectionViewController 189 | UIResponder 190 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 191 | 192 | P4AAAL+AAABCcAAAwrIAAA 193 | 194 | {{927, 161}, {320, 480}} 195 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 196 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 197 | 198 | AUJwAABDggAAA 199 | 200 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 201 | 202 | P4AAAL+AAABCcAAAw2UAAA 203 | 204 | 205 | 206 | 207 | YES 208 | 209 | 210 | YES 211 | 212 | 213 | 214 | 215 | YES 216 | 217 | 218 | YES 219 | 220 | 221 | 222 | 13 223 | 224 | 225 | 226 | YES 227 | 228 | ImageReflectionViewController 229 | UIViewController 230 | 231 | YES 232 | 233 | YES 234 | monkeyView 235 | refView 236 | topRef 237 | 238 | 239 | YES 240 | UIImageView 241 | UIImageView 242 | UIImageView 243 | 244 | 245 | 246 | YES 247 | 248 | YES 249 | monkeyView 250 | refView 251 | topRef 252 | 253 | 254 | YES 255 | 256 | monkeyView 257 | UIImageView 258 | 259 | 260 | refView 261 | UIImageView 262 | 263 | 264 | topRef 265 | UIImageView 266 | 267 | 268 | 269 | 270 | IBProjectSource 271 | Classes/ImageReflectionViewController.h 272 | 273 | 274 | 275 | 276 | 0 277 | IBCocoaTouchFramework 278 | 279 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 280 | 281 | 282 | 283 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 284 | 285 | 286 | YES 287 | ImageReflection.xcodeproj 288 | 3 289 | 290 | squirell_monkey.jpg 291 | {400, 402} 292 | 293 | 132 294 | 295 | 296 | -------------------------------------------------------------------------------- /ImageReflection.xcodeproj/alex.pbxuser: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | 1D3623240D0F684500981E51 /* ImageReflectionAppDelegate.h */ = { 4 | uiCtxt = { 5 | sepNavIntBoundsRect = "{{0, 0}, {522, 308}}"; 6 | sepNavSelRange = "{0, 0}"; 7 | sepNavVisRange = "{0, 376}"; 8 | }; 9 | }; 10 | 1D3623250D0F684500981E51 /* ImageReflectionAppDelegate.m */ = { 11 | uiCtxt = { 12 | sepNavIntBoundsRect = "{{0, 0}, {696, 1316}}"; 13 | sepNavSelRange = "{0, 0}"; 14 | sepNavVisRange = "{0, 352}"; 15 | }; 16 | }; 17 | 1D6058900D05DD3D006BFB54 /* ImageReflection */ = { 18 | activeExec = 0; 19 | executables = ( 20 | FA9EE1D112876E17007C03E3 /* ImageReflection */, 21 | ); 22 | }; 23 | 28D7ACF60DDB3853001CB0EB /* ImageReflectionViewController.h */ = { 24 | uiCtxt = { 25 | sepNavIntBoundsRect = "{{0, 0}, {519, 294}}"; 26 | sepNavSelRange = "{358, 0}"; 27 | sepNavVisRange = "{39, 355}"; 28 | }; 29 | }; 30 | 28D7ACF70DDB3853001CB0EB /* ImageReflectionViewController.m */ = { 31 | uiCtxt = { 32 | sepNavIntBoundsRect = "{{0, 0}, {612, 924}}"; 33 | sepNavSelRange = "{966, 0}"; 34 | sepNavVisRange = "{683, 292}"; 35 | }; 36 | }; 37 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 38 | activeBuildConfigurationName = Debug; 39 | activeExecutable = FA9EE1D112876E17007C03E3 /* ImageReflection */; 40 | activeSDKPreference = iphonesimulator4.2; 41 | activeTarget = 1D6058900D05DD3D006BFB54 /* ImageReflection */; 42 | addToTargets = ( 43 | 1D6058900D05DD3D006BFB54 /* ImageReflection */, 44 | ); 45 | breakpoints = ( 46 | ); 47 | codeSenseManager = FA9EE1E312876E36007C03E3 /* Code sense */; 48 | executables = ( 49 | FA9EE1D112876E17007C03E3 /* ImageReflection */, 50 | ); 51 | perUserDictionary = { 52 | PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { 53 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; 54 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; 55 | PBXFileTableDataSourceColumnWidthsKey = ( 56 | 20, 57 | 341, 58 | 20, 59 | 48, 60 | 43, 61 | 43, 62 | 20, 63 | ); 64 | PBXFileTableDataSourceColumnsKey = ( 65 | PBXFileDataSource_FiletypeID, 66 | PBXFileDataSource_Filename_ColumnID, 67 | PBXFileDataSource_Built_ColumnID, 68 | PBXFileDataSource_ObjectSize_ColumnID, 69 | PBXFileDataSource_Errors_ColumnID, 70 | PBXFileDataSource_Warnings_ColumnID, 71 | PBXFileDataSource_Target_ColumnID, 72 | ); 73 | }; 74 | PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { 75 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; 76 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; 77 | PBXFileTableDataSourceColumnWidthsKey = ( 78 | 20, 79 | 301, 80 | 60, 81 | 20, 82 | 48.16259765625, 83 | 43, 84 | 43, 85 | ); 86 | PBXFileTableDataSourceColumnsKey = ( 87 | PBXFileDataSource_FiletypeID, 88 | PBXFileDataSource_Filename_ColumnID, 89 | PBXTargetDataSource_PrimaryAttribute, 90 | PBXFileDataSource_Built_ColumnID, 91 | PBXFileDataSource_ObjectSize_ColumnID, 92 | PBXFileDataSource_Errors_ColumnID, 93 | PBXFileDataSource_Warnings_ColumnID, 94 | ); 95 | }; 96 | PBXPerProjectTemplateStateSaveDate = 312858239; 97 | PBXWorkspaceStateSaveDate = 312858239; 98 | }; 99 | perUserProjectItems = { 100 | FA411A7B12878F6F00D8FCE2 = FA411A7B12878F6F00D8FCE2 /* PBXTextBookmark */; 101 | FA5CB1821287740D00B6AE16 = FA5CB1821287740D00B6AE16 /* PBXTextBookmark */; 102 | FA5CB1831287740D00B6AE16 = FA5CB1831287740D00B6AE16 /* PBXTextBookmark */; 103 | FA5CB1841287740D00B6AE16 = FA5CB1841287740D00B6AE16 /* PBXTextBookmark */; 104 | FA5CB1851287740D00B6AE16 = FA5CB1851287740D00B6AE16 /* PBXTextBookmark */; 105 | FA63D3581288956F00798F2F = FA63D3581288956F00798F2F /* PBXTextBookmark */; 106 | FA9EE20F12877056007C03E3 = FA9EE20F12877056007C03E3 /* PBXTextBookmark */; 107 | FAEC2A8012A5D70F0082AC9D /* PBXTextBookmark */ = FAEC2A8012A5D70F0082AC9D /* PBXTextBookmark */; 108 | FAEC2A8112A5D70F0082AC9D /* PBXTextBookmark */ = FAEC2A8112A5D70F0082AC9D /* PBXTextBookmark */; 109 | FAEC2A8212A5D70F0082AC9D /* PBXTextBookmark */ = FAEC2A8212A5D70F0082AC9D /* PBXTextBookmark */; 110 | FAEC2A8312A5D70F0082AC9D /* PBXTextBookmark */ = FAEC2A8312A5D70F0082AC9D /* PBXTextBookmark */; 111 | FAEC2A9012A5D7560082AC9D /* PBXTextBookmark */ = FAEC2A9012A5D7560082AC9D /* PBXTextBookmark */; 112 | FAEC2A9112A5D7560082AC9D /* PBXTextBookmark */ = FAEC2A9112A5D7560082AC9D /* PBXTextBookmark */; 113 | FAEC2A9212A5D7560082AC9D /* PBXTextBookmark */ = FAEC2A9212A5D7560082AC9D /* PBXTextBookmark */; 114 | FAEC2A9312A5D7560082AC9D /* PBXTextBookmark */ = FAEC2A9312A5D7560082AC9D /* PBXTextBookmark */; 115 | FAEC2A9412A5D7A10082AC9D /* PBXTextBookmark */ = FAEC2A9412A5D7A10082AC9D /* PBXTextBookmark */; 116 | FAEC2A9512A5D7A10082AC9D /* PBXTextBookmark */ = FAEC2A9512A5D7A10082AC9D /* PBXTextBookmark */; 117 | FAEC2A9612A5D7A10082AC9D /* PBXTextBookmark */ = FAEC2A9612A5D7A10082AC9D /* PBXTextBookmark */; 118 | FAEC2A9C12A5D7B70082AC9D /* PBXTextBookmark */ = FAEC2A9C12A5D7B70082AC9D /* PBXTextBookmark */; 119 | FAEC2A9D12A5D7B70082AC9D /* PBXTextBookmark */ = FAEC2A9D12A5D7B70082AC9D /* PBXTextBookmark */; 120 | FAEC2AA212A5D8120082AC9D /* PBXTextBookmark */ = FAEC2AA212A5D8120082AC9D /* PBXTextBookmark */; 121 | FAEC2AA812A5D8A80082AC9D /* PBXTextBookmark */ = FAEC2AA812A5D8A80082AC9D /* PBXTextBookmark */; 122 | FAEC2AAB12A5D8CD0082AC9D /* PBXTextBookmark */ = FAEC2AAB12A5D8CD0082AC9D /* PBXTextBookmark */; 123 | FAEC2AAD12A5D8ED0082AC9D /* PBXTextBookmark */ = FAEC2AAD12A5D8ED0082AC9D /* PBXTextBookmark */; 124 | FAEC2AAE12A5D8ED0082AC9D /* PBXTextBookmark */ = FAEC2AAE12A5D8ED0082AC9D /* PBXTextBookmark */; 125 | FAEC2AAF12A5D8ED0082AC9D /* PBXTextBookmark */ = FAEC2AAF12A5D8ED0082AC9D /* PBXTextBookmark */; 126 | FAEC2AB012A5D8ED0082AC9D /* PBXTextBookmark */ = FAEC2AB012A5D8ED0082AC9D /* PBXTextBookmark */; 127 | FAEC2AB612A5D9290082AC9D /* PBXTextBookmark */ = FAEC2AB612A5D9290082AC9D /* PBXTextBookmark */; 128 | FAEC2AB712A5D9290082AC9D /* PBXTextBookmark */ = FAEC2AB712A5D9290082AC9D /* PBXTextBookmark */; 129 | }; 130 | sourceControlManager = FA9EE1E212876E36007C03E3 /* Source Control */; 131 | userBuildSettings = { 132 | }; 133 | }; 134 | FA411A7B12878F6F00D8FCE2 /* PBXTextBookmark */ = { 135 | isa = PBXTextBookmark; 136 | fRef = FA9EE1E512876E3F007C03E3 /* UIImage+Reflection.h */; 137 | name = "UIImage+Reflection.h: 6"; 138 | rLen = 0; 139 | rLoc = 115; 140 | rType = 0; 141 | vrLen = 295; 142 | vrLoc = 0; 143 | }; 144 | FA5CB1821287740D00B6AE16 /* PBXTextBookmark */ = { 145 | isa = PBXTextBookmark; 146 | fRef = 28D7ACF70DDB3853001CB0EB /* ImageReflectionViewController.m */; 147 | name = "ImageReflectionViewController.m: 6"; 148 | rLen = 0; 149 | rLoc = 121; 150 | rType = 0; 151 | vrLen = 432; 152 | vrLoc = 0; 153 | }; 154 | FA5CB1831287740D00B6AE16 /* PBXTextBookmark */ = { 155 | isa = PBXTextBookmark; 156 | fRef = 28D7ACF60DDB3853001CB0EB /* ImageReflectionViewController.h */; 157 | name = "ImageReflectionViewController.h: 6"; 158 | rLen = 0; 159 | rLoc = 121; 160 | rType = 0; 161 | vrLen = 363; 162 | vrLoc = 0; 163 | }; 164 | FA5CB1841287740D00B6AE16 /* PBXTextBookmark */ = { 165 | isa = PBXTextBookmark; 166 | fRef = 1D3623240D0F684500981E51 /* ImageReflectionAppDelegate.h */; 167 | name = "ImageReflectionAppDelegate.h: 1"; 168 | rLen = 0; 169 | rLoc = 0; 170 | rType = 0; 171 | vrLen = 376; 172 | vrLoc = 0; 173 | }; 174 | FA5CB1851287740D00B6AE16 /* PBXTextBookmark */ = { 175 | isa = PBXTextBookmark; 176 | fRef = FA9EE1E612876E3F007C03E3 /* UIImage+Reflection.m */; 177 | name = "UIImage+Reflection.m: 6"; 178 | rLen = 0; 179 | rLoc = 115; 180 | rType = 0; 181 | vrLen = 437; 182 | vrLoc = 0; 183 | }; 184 | FA63D3581288956F00798F2F /* PBXTextBookmark */ = { 185 | isa = PBXTextBookmark; 186 | fRef = FA9EE1E512876E3F007C03E3 /* UIImage+Reflection.h */; 187 | name = "UIImage+Reflection.h: 6"; 188 | rLen = 0; 189 | rLoc = 115; 190 | rType = 0; 191 | vrLen = 294; 192 | vrLoc = 0; 193 | }; 194 | FA9EE1D112876E17007C03E3 /* ImageReflection */ = { 195 | isa = PBXExecutable; 196 | activeArgIndices = ( 197 | ); 198 | argumentStrings = ( 199 | ); 200 | autoAttachOnCrash = 1; 201 | breakpointsEnabled = 1; 202 | configStateDict = { 203 | }; 204 | customDataFormattersEnabled = 1; 205 | dataTipCustomDataFormattersEnabled = 1; 206 | dataTipShowTypeColumn = 1; 207 | dataTipSortType = 0; 208 | debuggerPlugin = GDBDebugging; 209 | disassemblyDisplayState = 0; 210 | dylibVariantSuffix = ""; 211 | enableDebugStr = 1; 212 | environmentEntries = ( 213 | ); 214 | executableSystemSymbolLevel = 0; 215 | executableUserSymbolLevel = 0; 216 | libgmallocEnabled = 0; 217 | name = ImageReflection; 218 | savedGlobals = { 219 | }; 220 | showTypeColumn = 0; 221 | sourceDirectories = ( 222 | ); 223 | variableFormatDictionary = { 224 | }; 225 | }; 226 | FA9EE1E212876E36007C03E3 /* Source Control */ = { 227 | isa = PBXSourceControlManager; 228 | fallbackIsa = XCSourceControlManager; 229 | isSCMEnabled = 0; 230 | scmConfiguration = { 231 | repositoryNamesForRoots = { 232 | "" = ""; 233 | }; 234 | }; 235 | }; 236 | FA9EE1E312876E36007C03E3 /* Code sense */ = { 237 | isa = PBXCodeSenseManager; 238 | indexTemplatePath = ""; 239 | }; 240 | FA9EE1E512876E3F007C03E3 /* UIImage+Reflection.h */ = { 241 | uiCtxt = { 242 | sepNavIntBoundsRect = "{{0, 0}, {519, 266}}"; 243 | sepNavSelRange = "{294, 52}"; 244 | sepNavVisRange = "{90, 263}"; 245 | }; 246 | }; 247 | FA9EE1E612876E3F007C03E3 /* UIImage+Reflection.m */ = { 248 | uiCtxt = { 249 | sepNavIntBoundsRect = "{{0, 0}, {636, 2870}}"; 250 | sepNavSelRange = "{1879, 0}"; 251 | sepNavVisRange = "{1697, 557}"; 252 | }; 253 | }; 254 | FA9EE20F12877056007C03E3 /* PBXTextBookmark */ = { 255 | isa = PBXTextBookmark; 256 | fRef = 1D3623250D0F684500981E51 /* ImageReflectionAppDelegate.m */; 257 | name = "ImageReflectionAppDelegate.m: 1"; 258 | rLen = 0; 259 | rLoc = 0; 260 | rType = 0; 261 | vrLen = 352; 262 | vrLoc = 0; 263 | }; 264 | FAEC2A8012A5D70F0082AC9D /* PBXTextBookmark */ = { 265 | isa = PBXTextBookmark; 266 | fRef = FA9EE1E512876E3F007C03E3 /* UIImage+Reflection.h */; 267 | name = "UIImage+Reflection.h: 16"; 268 | rLen = 52; 269 | rLoc = 294; 270 | rType = 0; 271 | vrLen = 306; 272 | vrLoc = 48; 273 | }; 274 | FAEC2A8112A5D70F0082AC9D /* PBXTextBookmark */ = { 275 | isa = PBXTextBookmark; 276 | fRef = FA9EE1E612876E3F007C03E3 /* UIImage+Reflection.m */; 277 | name = "UIImage+Reflection.m: 118"; 278 | rLen = 0; 279 | rLoc = 5092; 280 | rType = 0; 281 | vrLen = 832; 282 | vrLoc = 5233; 283 | }; 284 | FAEC2A8212A5D70F0082AC9D /* PBXTextBookmark */ = { 285 | isa = PBXTextBookmark; 286 | fRef = 28D7ACF70DDB3853001CB0EB /* ImageReflectionViewController.m */; 287 | name = "ImageReflectionViewController.m: 6"; 288 | rLen = 0; 289 | rLoc = 121; 290 | rType = 0; 291 | vrLen = 248; 292 | vrLoc = 0; 293 | }; 294 | FAEC2A8312A5D70F0082AC9D /* PBXTextBookmark */ = { 295 | isa = PBXTextBookmark; 296 | fRef = 28D7ACF70DDB3853001CB0EB /* ImageReflectionViewController.m */; 297 | name = "ImageReflectionViewController.m: 5"; 298 | rLen = 0; 299 | rLoc = 83; 300 | rType = 0; 301 | vrLen = 244; 302 | vrLoc = 0; 303 | }; 304 | FAEC2A9012A5D7560082AC9D /* PBXTextBookmark */ = { 305 | isa = PBXTextBookmark; 306 | fRef = FA9EE1E512876E3F007C03E3 /* UIImage+Reflection.h */; 307 | name = "UIImage+Reflection.h: 16"; 308 | rLen = 52; 309 | rLoc = 294; 310 | rType = 0; 311 | vrLen = 263; 312 | vrLoc = 90; 313 | }; 314 | FAEC2A9112A5D7560082AC9D /* PBXTextBookmark */ = { 315 | isa = PBXTextBookmark; 316 | fRef = FA9EE1E612876E3F007C03E3 /* UIImage+Reflection.m */; 317 | name = "UIImage+Reflection.m: 86"; 318 | rLen = 0; 319 | rLoc = 3983; 320 | rType = 0; 321 | vrLen = 905; 322 | vrLoc = 2851; 323 | }; 324 | FAEC2A9212A5D7560082AC9D /* PBXTextBookmark */ = { 325 | isa = PBXTextBookmark; 326 | fRef = 28D7ACF70DDB3853001CB0EB /* ImageReflectionViewController.m */; 327 | name = "ImageReflectionViewController.m: 36"; 328 | rLen = 0; 329 | rLoc = 969; 330 | rType = 0; 331 | vrLen = 327; 332 | vrLoc = 573; 333 | }; 334 | FAEC2A9312A5D7560082AC9D /* PBXTextBookmark */ = { 335 | isa = PBXTextBookmark; 336 | fRef = 28D7ACF70DDB3853001CB0EB /* ImageReflectionViewController.m */; 337 | name = "ImageReflectionViewController.m: 36"; 338 | rLen = 0; 339 | rLoc = 881; 340 | rType = 0; 341 | vrLen = 334; 342 | vrLoc = 573; 343 | }; 344 | FAEC2A9412A5D7A10082AC9D /* PBXTextBookmark */ = { 345 | isa = PBXTextBookmark; 346 | fRef = 28D7ACF70DDB3853001CB0EB /* ImageReflectionViewController.m */; 347 | name = "ImageReflectionViewController.m: 36"; 348 | rLen = 0; 349 | rLoc = 881; 350 | rType = 0; 351 | vrLen = 336; 352 | vrLoc = 573; 353 | }; 354 | FAEC2A9512A5D7A10082AC9D /* PBXTextBookmark */ = { 355 | isa = PBXTextBookmark; 356 | fRef = FA9EE1E612876E3F007C03E3 /* UIImage+Reflection.m */; 357 | name = "UIImage+Reflection.m: 86"; 358 | rLen = 0; 359 | rLoc = 3983; 360 | rType = 0; 361 | vrLen = 1004; 362 | vrLoc = 2754; 363 | }; 364 | FAEC2A9612A5D7A10082AC9D /* PBXTextBookmark */ = { 365 | isa = PBXTextBookmark; 366 | fRef = FA9EE1E612876E3F007C03E3 /* UIImage+Reflection.m */; 367 | name = "UIImage+Reflection.m: 81"; 368 | rLen = 0; 369 | rLoc = 3447; 370 | rType = 0; 371 | vrLen = 922; 372 | vrLoc = 2365; 373 | }; 374 | FAEC2A9C12A5D7B70082AC9D /* PBXTextBookmark */ = { 375 | isa = PBXTextBookmark; 376 | fRef = FA9EE1E612876E3F007C03E3 /* UIImage+Reflection.m */; 377 | name = "UIImage+Reflection.m: 34"; 378 | rLen = 8; 379 | rLoc = 1233; 380 | rType = 0; 381 | vrLen = 626; 382 | vrLoc = 1069; 383 | }; 384 | FAEC2A9D12A5D7B70082AC9D /* PBXTextBookmark */ = { 385 | isa = PBXTextBookmark; 386 | fRef = FA9EE1E612876E3F007C03E3 /* UIImage+Reflection.m */; 387 | name = "UIImage+Reflection.m: 34"; 388 | rLen = 8; 389 | rLoc = 1233; 390 | rType = 0; 391 | vrLen = 626; 392 | vrLoc = 1069; 393 | }; 394 | FAEC2AA212A5D8120082AC9D /* PBXTextBookmark */ = { 395 | isa = PBXTextBookmark; 396 | fRef = FA9EE1E612876E3F007C03E3 /* UIImage+Reflection.m */; 397 | name = "UIImage+Reflection.m: 37"; 398 | rLen = 0; 399 | rLoc = 1312; 400 | rType = 0; 401 | vrLen = 495; 402 | vrLoc = 1069; 403 | }; 404 | FAEC2AA812A5D8A80082AC9D /* PBXTextBookmark */ = { 405 | isa = PBXTextBookmark; 406 | fRef = FA9EE1E612876E3F007C03E3 /* UIImage+Reflection.m */; 407 | name = "UIImage+Reflection.m: 55"; 408 | rLen = 0; 409 | rLoc = 2129; 410 | rType = 0; 411 | vrLen = 568; 412 | vrLoc = 1697; 413 | }; 414 | FAEC2AAB12A5D8CD0082AC9D /* PBXTextBookmark */ = { 415 | isa = PBXTextBookmark; 416 | fRef = FA9EE1E612876E3F007C03E3 /* UIImage+Reflection.m */; 417 | name = "UIImage+Reflection.m: 51"; 418 | rLen = 0; 419 | rLoc = 1879; 420 | rType = 0; 421 | vrLen = 532; 422 | vrLoc = 1697; 423 | }; 424 | FAEC2AAD12A5D8ED0082AC9D /* PBXTextBookmark */ = { 425 | isa = PBXTextBookmark; 426 | fRef = FA9EE1E612876E3F007C03E3 /* UIImage+Reflection.m */; 427 | name = "UIImage+Reflection.m: 51"; 428 | rLen = 0; 429 | rLoc = 1879; 430 | rType = 0; 431 | vrLen = 557; 432 | vrLoc = 1697; 433 | }; 434 | FAEC2AAE12A5D8ED0082AC9D /* PBXTextBookmark */ = { 435 | isa = PBXTextBookmark; 436 | fRef = 28D7ACF60DDB3853001CB0EB /* ImageReflectionViewController.h */; 437 | name = "ImageReflectionViewController.h: 15"; 438 | rLen = 0; 439 | rLoc = 358; 440 | rType = 0; 441 | vrLen = 355; 442 | vrLoc = 39; 443 | }; 444 | FAEC2AAF12A5D8ED0082AC9D /* PBXTextBookmark */ = { 445 | isa = PBXTextBookmark; 446 | fRef = 28D7ACF70DDB3853001CB0EB /* ImageReflectionViewController.m */; 447 | name = "ImageReflectionViewController.m: 36"; 448 | rLen = 0; 449 | rLoc = 881; 450 | rType = 0; 451 | vrLen = 337; 452 | vrLoc = 572; 453 | }; 454 | FAEC2AB012A5D8ED0082AC9D /* PBXTextBookmark */ = { 455 | isa = PBXTextBookmark; 456 | fRef = 28D7ACF70DDB3853001CB0EB /* ImageReflectionViewController.m */; 457 | name = "ImageReflectionViewController.m: 37"; 458 | rLen = 0; 459 | rLoc = 953; 460 | rType = 0; 461 | vrLen = 295; 462 | vrLoc = 683; 463 | }; 464 | FAEC2AB612A5D9290082AC9D /* PBXTextBookmark */ = { 465 | isa = PBXTextBookmark; 466 | fRef = 28D7ACF70DDB3853001CB0EB /* ImageReflectionViewController.m */; 467 | name = "ImageReflectionViewController.m: 37"; 468 | rLen = 0; 469 | rLoc = 953; 470 | rType = 0; 471 | vrLen = 295; 472 | vrLoc = 683; 473 | }; 474 | FAEC2AB712A5D9290082AC9D /* PBXTextBookmark */ = { 475 | isa = PBXTextBookmark; 476 | fRef = 28D7ACF70DDB3853001CB0EB /* ImageReflectionViewController.m */; 477 | name = "ImageReflectionViewController.m: 37"; 478 | rLen = 0; 479 | rLoc = 966; 480 | rType = 0; 481 | vrLen = 292; 482 | vrLoc = 683; 483 | }; 484 | } 485 | -------------------------------------------------------------------------------- /MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1024 5 | 10D571 6 | 786 7 | 1038.29 8 | 460.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 112 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | IBCocoaTouchFramework 42 | 43 | 44 | ImageReflectionViewController 45 | 46 | 47 | 1 48 | 49 | IBCocoaTouchFramework 50 | NO 51 | 52 | 53 | 54 | 292 55 | {320, 480} 56 | 57 | 1 58 | MSAxIDEAA 59 | 60 | NO 61 | NO 62 | 63 | IBCocoaTouchFramework 64 | YES 65 | 66 | 67 | 68 | 69 | YES 70 | 71 | 72 | delegate 73 | 74 | 75 | 76 | 4 77 | 78 | 79 | 80 | viewController 81 | 82 | 83 | 84 | 11 85 | 86 | 87 | 88 | window 89 | 90 | 91 | 92 | 14 93 | 94 | 95 | 96 | 97 | YES 98 | 99 | 0 100 | 101 | 102 | 103 | 104 | 105 | -1 106 | 107 | 108 | File's Owner 109 | 110 | 111 | 3 112 | 113 | 114 | ImageReflection App Delegate 115 | 116 | 117 | -2 118 | 119 | 120 | 121 | 122 | 10 123 | 124 | 125 | 126 | 127 | 12 128 | 129 | 130 | 131 | 132 | 133 | 134 | YES 135 | 136 | YES 137 | -1.CustomClassName 138 | -2.CustomClassName 139 | 10.CustomClassName 140 | 10.IBEditorWindowLastContentRect 141 | 10.IBPluginDependency 142 | 12.IBEditorWindowLastContentRect 143 | 12.IBPluginDependency 144 | 3.CustomClassName 145 | 3.IBPluginDependency 146 | 147 | 148 | YES 149 | UIApplication 150 | UIResponder 151 | ImageReflectionViewController 152 | {{234, 376}, {320, 480}} 153 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 154 | {{525, 346}, {320, 480}} 155 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 156 | ImageReflectionAppDelegate 157 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 158 | 159 | 160 | 161 | YES 162 | 163 | 164 | YES 165 | 166 | 167 | 168 | 169 | YES 170 | 171 | 172 | YES 173 | 174 | 175 | 176 | 15 177 | 178 | 179 | 180 | YES 181 | 182 | UIWindow 183 | UIView 184 | 185 | IBUserSource 186 | 187 | 188 | 189 | 190 | ImageReflectionAppDelegate 191 | NSObject 192 | 193 | YES 194 | 195 | YES 196 | viewController 197 | window 198 | 199 | 200 | YES 201 | ImageReflectionViewController 202 | UIWindow 203 | 204 | 205 | 206 | YES 207 | 208 | YES 209 | viewController 210 | window 211 | 212 | 213 | YES 214 | 215 | viewController 216 | ImageReflectionViewController 217 | 218 | 219 | window 220 | UIWindow 221 | 222 | 223 | 224 | 225 | IBProjectSource 226 | Classes/ImageReflectionAppDelegate.h 227 | 228 | 229 | 230 | ImageReflectionAppDelegate 231 | NSObject 232 | 233 | IBUserSource 234 | 235 | 236 | 237 | 238 | ImageReflectionViewController 239 | UIViewController 240 | 241 | IBProjectSource 242 | Classes/ImageReflectionViewController.h 243 | 244 | 245 | 246 | 247 | YES 248 | 249 | NSObject 250 | 251 | IBFrameworkSource 252 | Foundation.framework/Headers/NSError.h 253 | 254 | 255 | 256 | NSObject 257 | 258 | IBFrameworkSource 259 | Foundation.framework/Headers/NSFileManager.h 260 | 261 | 262 | 263 | NSObject 264 | 265 | IBFrameworkSource 266 | Foundation.framework/Headers/NSKeyValueCoding.h 267 | 268 | 269 | 270 | NSObject 271 | 272 | IBFrameworkSource 273 | Foundation.framework/Headers/NSKeyValueObserving.h 274 | 275 | 276 | 277 | NSObject 278 | 279 | IBFrameworkSource 280 | Foundation.framework/Headers/NSKeyedArchiver.h 281 | 282 | 283 | 284 | NSObject 285 | 286 | IBFrameworkSource 287 | Foundation.framework/Headers/NSObject.h 288 | 289 | 290 | 291 | NSObject 292 | 293 | IBFrameworkSource 294 | Foundation.framework/Headers/NSRunLoop.h 295 | 296 | 297 | 298 | NSObject 299 | 300 | IBFrameworkSource 301 | Foundation.framework/Headers/NSThread.h 302 | 303 | 304 | 305 | NSObject 306 | 307 | IBFrameworkSource 308 | Foundation.framework/Headers/NSURL.h 309 | 310 | 311 | 312 | NSObject 313 | 314 | IBFrameworkSource 315 | Foundation.framework/Headers/NSURLConnection.h 316 | 317 | 318 | 319 | NSObject 320 | 321 | IBFrameworkSource 322 | UIKit.framework/Headers/UIAccessibility.h 323 | 324 | 325 | 326 | NSObject 327 | 328 | IBFrameworkSource 329 | UIKit.framework/Headers/UINibLoading.h 330 | 331 | 332 | 333 | NSObject 334 | 335 | IBFrameworkSource 336 | UIKit.framework/Headers/UIResponder.h 337 | 338 | 339 | 340 | UIApplication 341 | UIResponder 342 | 343 | IBFrameworkSource 344 | UIKit.framework/Headers/UIApplication.h 345 | 346 | 347 | 348 | UIResponder 349 | NSObject 350 | 351 | 352 | 353 | UISearchBar 354 | UIView 355 | 356 | IBFrameworkSource 357 | UIKit.framework/Headers/UISearchBar.h 358 | 359 | 360 | 361 | UISearchDisplayController 362 | NSObject 363 | 364 | IBFrameworkSource 365 | UIKit.framework/Headers/UISearchDisplayController.h 366 | 367 | 368 | 369 | UIView 370 | 371 | IBFrameworkSource 372 | UIKit.framework/Headers/UITextField.h 373 | 374 | 375 | 376 | UIView 377 | UIResponder 378 | 379 | IBFrameworkSource 380 | UIKit.framework/Headers/UIView.h 381 | 382 | 383 | 384 | UIViewController 385 | 386 | IBFrameworkSource 387 | UIKit.framework/Headers/UINavigationController.h 388 | 389 | 390 | 391 | UIViewController 392 | 393 | IBFrameworkSource 394 | UIKit.framework/Headers/UIPopoverController.h 395 | 396 | 397 | 398 | UIViewController 399 | 400 | IBFrameworkSource 401 | UIKit.framework/Headers/UISplitViewController.h 402 | 403 | 404 | 405 | UIViewController 406 | 407 | IBFrameworkSource 408 | UIKit.framework/Headers/UITabBarController.h 409 | 410 | 411 | 412 | UIViewController 413 | UIResponder 414 | 415 | IBFrameworkSource 416 | UIKit.framework/Headers/UIViewController.h 417 | 418 | 419 | 420 | UIWindow 421 | UIView 422 | 423 | IBFrameworkSource 424 | UIKit.framework/Headers/UIWindow.h 425 | 426 | 427 | 428 | 429 | 0 430 | IBCocoaTouchFramework 431 | 432 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 433 | 434 | 435 | 436 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 437 | 438 | 439 | YES 440 | ImageReflection.xcodeproj 441 | 3 442 | 112 443 | 444 | 445 | -------------------------------------------------------------------------------- /ImageReflection.xcodeproj/alex.mode1v3: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ActivePerspectiveName 6 | Project 7 | AllowedModules 8 | 9 | 10 | BundleLoadPath 11 | 12 | MaxInstances 13 | n 14 | Module 15 | PBXSmartGroupTreeModule 16 | Name 17 | Groups and Files Outline View 18 | 19 | 20 | BundleLoadPath 21 | 22 | MaxInstances 23 | n 24 | Module 25 | PBXNavigatorGroup 26 | Name 27 | Editor 28 | 29 | 30 | BundleLoadPath 31 | 32 | MaxInstances 33 | n 34 | Module 35 | XCTaskListModule 36 | Name 37 | Task List 38 | 39 | 40 | BundleLoadPath 41 | 42 | MaxInstances 43 | n 44 | Module 45 | XCDetailModule 46 | Name 47 | File and Smart Group Detail Viewer 48 | 49 | 50 | BundleLoadPath 51 | 52 | MaxInstances 53 | 1 54 | Module 55 | PBXBuildResultsModule 56 | Name 57 | Detailed Build Results Viewer 58 | 59 | 60 | BundleLoadPath 61 | 62 | MaxInstances 63 | 1 64 | Module 65 | PBXProjectFindModule 66 | Name 67 | Project Batch Find Tool 68 | 69 | 70 | BundleLoadPath 71 | 72 | MaxInstances 73 | n 74 | Module 75 | XCProjectFormatConflictsModule 76 | Name 77 | Project Format Conflicts List 78 | 79 | 80 | BundleLoadPath 81 | 82 | MaxInstances 83 | n 84 | Module 85 | PBXBookmarksModule 86 | Name 87 | Bookmarks Tool 88 | 89 | 90 | BundleLoadPath 91 | 92 | MaxInstances 93 | n 94 | Module 95 | PBXClassBrowserModule 96 | Name 97 | Class Browser 98 | 99 | 100 | BundleLoadPath 101 | 102 | MaxInstances 103 | n 104 | Module 105 | PBXCVSModule 106 | Name 107 | Source Code Control Tool 108 | 109 | 110 | BundleLoadPath 111 | 112 | MaxInstances 113 | n 114 | Module 115 | PBXDebugBreakpointsModule 116 | Name 117 | Debug Breakpoints Tool 118 | 119 | 120 | BundleLoadPath 121 | 122 | MaxInstances 123 | n 124 | Module 125 | XCDockableInspector 126 | Name 127 | Inspector 128 | 129 | 130 | BundleLoadPath 131 | 132 | MaxInstances 133 | n 134 | Module 135 | PBXOpenQuicklyModule 136 | Name 137 | Open Quickly Tool 138 | 139 | 140 | BundleLoadPath 141 | 142 | MaxInstances 143 | 1 144 | Module 145 | PBXDebugSessionModule 146 | Name 147 | Debugger 148 | 149 | 150 | BundleLoadPath 151 | 152 | MaxInstances 153 | 1 154 | Module 155 | PBXDebugCLIModule 156 | Name 157 | Debug Console 158 | 159 | 160 | BundleLoadPath 161 | 162 | MaxInstances 163 | n 164 | Module 165 | XCSnapshotModule 166 | Name 167 | Snapshots Tool 168 | 169 | 170 | BundlePath 171 | /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources 172 | Description 173 | DefaultDescriptionKey 174 | DockingSystemVisible 175 | 176 | Extension 177 | mode1v3 178 | FavBarConfig 179 | 180 | PBXProjectModuleGUID 181 | FA9EE20912877023007C03E3 182 | XCBarModuleItemNames 183 | 184 | XCBarModuleItems 185 | 186 | 187 | FirstTimeWindowDisplayed 188 | 189 | Identifier 190 | com.apple.perspectives.project.mode1v3 191 | MajorVersion 192 | 33 193 | MinorVersion 194 | 0 195 | Name 196 | Default 197 | Notifications 198 | 199 | OpenEditors 200 | 201 | PerspectiveWidths 202 | 203 | -1 204 | -1 205 | 206 | Perspectives 207 | 208 | 209 | ChosenToolbarItems 210 | 211 | active-combo-popup 212 | action 213 | NSToolbarFlexibleSpaceItem 214 | buildOrClean 215 | go 216 | build-and-go 217 | com.apple.ide.PBXToolbarStopButton 218 | get-info 219 | NSToolbarFlexibleSpaceItem 220 | com.apple.pbx.toolbar.searchfield 221 | 222 | ControllerClassBaseName 223 | 224 | IconName 225 | WindowOfProjectWithEditor 226 | Identifier 227 | perspective.project 228 | IsVertical 229 | 230 | Layout 231 | 232 | 233 | ContentConfiguration 234 | 235 | PBXBottomSmartGroupGIDs 236 | 237 | 1C37FBAC04509CD000000102 238 | 1C37FAAC04509CD000000102 239 | 1C37FABC05509CD000000102 240 | 1C37FABC05539CD112110102 241 | E2644B35053B69B200211256 242 | 1C37FABC04509CD000100104 243 | 1CC0EA4004350EF90044410B 244 | 1CC0EA4004350EF90041110B 245 | 246 | PBXProjectModuleGUID 247 | 1CE0B1FE06471DED0097A5F4 248 | PBXProjectModuleLabel 249 | Files 250 | PBXProjectStructureProvided 251 | yes 252 | PBXSmartGroupTreeModuleColumnData 253 | 254 | PBXSmartGroupTreeModuleColumnWidthsKey 255 | 256 | 186 257 | 258 | PBXSmartGroupTreeModuleColumnsKey_v4 259 | 260 | MainColumn 261 | 262 | 263 | PBXSmartGroupTreeModuleOutlineStateKey_v7 264 | 265 | PBXSmartGroupTreeModuleOutlineStateExpansionKey 266 | 267 | 29B97314FDCFA39411CA2CEA 268 | 080E96DDFE201D6D7F000001 269 | 29B97317FDCFA39411CA2CEA 270 | 1C37FBAC04509CD000000102 271 | 1C37FABC05509CD000000102 272 | 273 | PBXSmartGroupTreeModuleOutlineStateSelectionKey 274 | 275 | 276 | 11 277 | 9 278 | 0 279 | 280 | 281 | PBXSmartGroupTreeModuleOutlineStateVisibleRectKey 282 | {{0, 0}, {186, 445}} 283 | 284 | PBXTopSmartGroupGIDs 285 | 286 | XCIncludePerspectivesSwitch 287 | 288 | XCSharingToken 289 | com.apple.Xcode.GFSharingToken 290 | 291 | GeometryConfiguration 292 | 293 | Frame 294 | {{0, 0}, {203, 463}} 295 | GroupTreeTableConfiguration 296 | 297 | MainColumn 298 | 186 299 | 300 | RubberWindowFrame 301 | 64 174 788 504 0 0 1920 1058 302 | 303 | Module 304 | PBXSmartGroupTreeModule 305 | Proportion 306 | 203pt 307 | 308 | 309 | Dock 310 | 311 | 312 | BecomeActive 313 | 314 | ContentConfiguration 315 | 316 | PBXProjectModuleGUID 317 | 1CE0B20306471E060097A5F4 318 | PBXProjectModuleLabel 319 | ImageReflectionViewController.m 320 | PBXSplitModuleInNavigatorKey 321 | 322 | Split0 323 | 324 | PBXProjectModuleGUID 325 | 1CE0B20406471E060097A5F4 326 | PBXProjectModuleLabel 327 | ImageReflectionViewController.m 328 | _historyCapacity 329 | 0 330 | bookmark 331 | FAEC2AB712A5D9290082AC9D 332 | history 333 | 334 | FA9EE20F12877056007C03E3 335 | FA5CB1841287740D00B6AE16 336 | FAEC2A9012A5D7560082AC9D 337 | FAEC2AAD12A5D8ED0082AC9D 338 | FAEC2AAE12A5D8ED0082AC9D 339 | FAEC2AB612A5D9290082AC9D 340 | 341 | 342 | SplitCount 343 | 1 344 | 345 | StatusBarVisibility 346 | 347 | 348 | GeometryConfiguration 349 | 350 | Frame 351 | {{0, 0}, {580, 232}} 352 | RubberWindowFrame 353 | 64 174 788 504 0 0 1920 1058 354 | 355 | Module 356 | PBXNavigatorGroup 357 | Proportion 358 | 232pt 359 | 360 | 361 | ContentConfiguration 362 | 363 | PBXProjectModuleGUID 364 | 1CE0B20506471E060097A5F4 365 | PBXProjectModuleLabel 366 | Detail 367 | 368 | GeometryConfiguration 369 | 370 | Frame 371 | {{0, 237}, {580, 226}} 372 | RubberWindowFrame 373 | 64 174 788 504 0 0 1920 1058 374 | 375 | Module 376 | XCDetailModule 377 | Proportion 378 | 226pt 379 | 380 | 381 | Proportion 382 | 580pt 383 | 384 | 385 | Name 386 | Project 387 | ServiceClasses 388 | 389 | XCModuleDock 390 | PBXSmartGroupTreeModule 391 | XCModuleDock 392 | PBXNavigatorGroup 393 | XCDetailModule 394 | 395 | TableOfContents 396 | 397 | FAEC2A8412A5D70F0082AC9D 398 | 1CE0B1FE06471DED0097A5F4 399 | FAEC2A8512A5D70F0082AC9D 400 | 1CE0B20306471E060097A5F4 401 | 1CE0B20506471E060097A5F4 402 | 403 | ToolbarConfigUserDefaultsMinorVersion 404 | 2 405 | ToolbarConfiguration 406 | xcode.toolbar.config.defaultV3 407 | 408 | 409 | ControllerClassBaseName 410 | 411 | IconName 412 | WindowOfProject 413 | Identifier 414 | perspective.morph 415 | IsVertical 416 | 0 417 | Layout 418 | 419 | 420 | BecomeActive 421 | 1 422 | ContentConfiguration 423 | 424 | PBXBottomSmartGroupGIDs 425 | 426 | 1C37FBAC04509CD000000102 427 | 1C37FAAC04509CD000000102 428 | 1C08E77C0454961000C914BD 429 | 1C37FABC05509CD000000102 430 | 1C37FABC05539CD112110102 431 | E2644B35053B69B200211256 432 | 1C37FABC04509CD000100104 433 | 1CC0EA4004350EF90044410B 434 | 1CC0EA4004350EF90041110B 435 | 436 | PBXProjectModuleGUID 437 | 11E0B1FE06471DED0097A5F4 438 | PBXProjectModuleLabel 439 | Files 440 | PBXProjectStructureProvided 441 | yes 442 | PBXSmartGroupTreeModuleColumnData 443 | 444 | PBXSmartGroupTreeModuleColumnWidthsKey 445 | 446 | 186 447 | 448 | PBXSmartGroupTreeModuleColumnsKey_v4 449 | 450 | MainColumn 451 | 452 | 453 | PBXSmartGroupTreeModuleOutlineStateKey_v7 454 | 455 | PBXSmartGroupTreeModuleOutlineStateExpansionKey 456 | 457 | 29B97314FDCFA39411CA2CEA 458 | 1C37FABC05509CD000000102 459 | 460 | PBXSmartGroupTreeModuleOutlineStateSelectionKey 461 | 462 | 463 | 0 464 | 465 | 466 | PBXSmartGroupTreeModuleOutlineStateVisibleRectKey 467 | {{0, 0}, {186, 337}} 468 | 469 | PBXTopSmartGroupGIDs 470 | 471 | XCIncludePerspectivesSwitch 472 | 1 473 | XCSharingToken 474 | com.apple.Xcode.GFSharingToken 475 | 476 | GeometryConfiguration 477 | 478 | Frame 479 | {{0, 0}, {203, 355}} 480 | GroupTreeTableConfiguration 481 | 482 | MainColumn 483 | 186 484 | 485 | RubberWindowFrame 486 | 373 269 690 397 0 0 1440 878 487 | 488 | Module 489 | PBXSmartGroupTreeModule 490 | Proportion 491 | 100% 492 | 493 | 494 | Name 495 | Morph 496 | PreferredWidth 497 | 300 498 | ServiceClasses 499 | 500 | XCModuleDock 501 | PBXSmartGroupTreeModule 502 | 503 | TableOfContents 504 | 505 | 11E0B1FE06471DED0097A5F4 506 | 507 | ToolbarConfiguration 508 | xcode.toolbar.config.default.shortV3 509 | 510 | 511 | PerspectivesBarVisible 512 | 513 | ShelfIsVisible 514 | 515 | SourceDescription 516 | file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' 517 | StatusbarIsVisible 518 | 519 | TimeStamp 520 | 0.0 521 | ToolbarConfigUserDefaultsMinorVersion 522 | 2 523 | ToolbarDisplayMode 524 | 1 525 | ToolbarIsVisible 526 | 527 | ToolbarSizeMode 528 | 1 529 | Type 530 | Perspectives 531 | UpdateMessage 532 | The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? 533 | WindowJustification 534 | 5 535 | WindowOrderList 536 | 537 | FAEC2AB812A5D9290082AC9D 538 | FAEC2AA412A5D8120082AC9D 539 | FAEC2AA512A5D8120082AC9D 540 | 1CD10A99069EF8BA00B06720 541 | FA9EE1EE12876F92007C03E3 542 | 1C78EAAD065D492600B07095 543 | /Users/alex/xCode/git/ImageReflection/ImageReflection.xcodeproj 544 | 545 | WindowString 546 | 64 174 788 504 0 0 1920 1058 547 | WindowToolsV3 548 | 549 | 550 | FirstTimeWindowDisplayed 551 | 552 | Identifier 553 | windowTool.build 554 | IsVertical 555 | 556 | Layout 557 | 558 | 559 | Dock 560 | 561 | 562 | ContentConfiguration 563 | 564 | PBXProjectModuleGUID 565 | 1CD0528F0623707200166675 566 | PBXProjectModuleLabel 567 | 568 | StatusBarVisibility 569 | 570 | 571 | GeometryConfiguration 572 | 573 | Frame 574 | {{0, 0}, {500, 218}} 575 | RubberWindowFrame 576 | 587 411 500 500 0 0 1920 1058 577 | 578 | Module 579 | PBXNavigatorGroup 580 | Proportion 581 | 218pt 582 | 583 | 584 | ContentConfiguration 585 | 586 | PBXProjectModuleGUID 587 | XCMainBuildResultsModuleGUID 588 | PBXProjectModuleLabel 589 | Build Results 590 | XCBuildResultsTrigger_Collapse 591 | 1021 592 | XCBuildResultsTrigger_Open 593 | 1011 594 | 595 | GeometryConfiguration 596 | 597 | Frame 598 | {{0, 223}, {500, 236}} 599 | RubberWindowFrame 600 | 587 411 500 500 0 0 1920 1058 601 | 602 | Module 603 | PBXBuildResultsModule 604 | Proportion 605 | 236pt 606 | 607 | 608 | Proportion 609 | 459pt 610 | 611 | 612 | Name 613 | Build Results 614 | ServiceClasses 615 | 616 | PBXBuildResultsModule 617 | 618 | StatusbarIsVisible 619 | 620 | TableOfContents 621 | 622 | FA9EE1EE12876F92007C03E3 623 | FAEC2A8612A5D70F0082AC9D 624 | 1CD0528F0623707200166675 625 | XCMainBuildResultsModuleGUID 626 | 627 | ToolbarConfiguration 628 | xcode.toolbar.config.buildV3 629 | WindowContentMinSize 630 | 486 300 631 | WindowString 632 | 587 411 500 500 0 0 1920 1058 633 | WindowToolGUID 634 | FA9EE1EE12876F92007C03E3 635 | WindowToolIsVisible 636 | 637 | 638 | 639 | FirstTimeWindowDisplayed 640 | 641 | Identifier 642 | windowTool.debugger 643 | IsVertical 644 | 645 | Layout 646 | 647 | 648 | Dock 649 | 650 | 651 | ContentConfiguration 652 | 653 | Debugger 654 | 655 | HorizontalSplitView 656 | 657 | _collapsingFrameDimension 658 | 0.0 659 | _indexOfCollapsedView 660 | 0 661 | _percentageOfCollapsedView 662 | 0.0 663 | isCollapsed 664 | yes 665 | sizes 666 | 667 | {{0, 0}, {316, 198}} 668 | {{316, 0}, {378, 198}} 669 | 670 | 671 | VerticalSplitView 672 | 673 | _collapsingFrameDimension 674 | 0.0 675 | _indexOfCollapsedView 676 | 0 677 | _percentageOfCollapsedView 678 | 0.0 679 | isCollapsed 680 | yes 681 | sizes 682 | 683 | {{0, 0}, {694, 198}} 684 | {{0, 198}, {694, 183}} 685 | 686 | 687 | 688 | LauncherConfigVersion 689 | 8 690 | PBXProjectModuleGUID 691 | 1C162984064C10D400B95A72 692 | PBXProjectModuleLabel 693 | Debug - GLUTExamples (Underwater) 694 | 695 | GeometryConfiguration 696 | 697 | DebugConsoleVisible 698 | None 699 | DebugConsoleWindowFrame 700 | {{200, 200}, {500, 300}} 701 | DebugSTDIOWindowFrame 702 | {{200, 200}, {500, 300}} 703 | Frame 704 | {{0, 0}, {694, 381}} 705 | PBXDebugSessionStackFrameViewKey 706 | 707 | DebugVariablesTableConfiguration 708 | 709 | Name 710 | 120 711 | Value 712 | 85 713 | Summary 714 | 148 715 | 716 | Frame 717 | {{316, 0}, {378, 198}} 718 | RubberWindowFrame 719 | 170 405 694 422 0 0 1920 1058 720 | 721 | RubberWindowFrame 722 | 170 405 694 422 0 0 1920 1058 723 | 724 | Module 725 | PBXDebugSessionModule 726 | Proportion 727 | 381pt 728 | 729 | 730 | Proportion 731 | 381pt 732 | 733 | 734 | Name 735 | Debugger 736 | ServiceClasses 737 | 738 | PBXDebugSessionModule 739 | 740 | StatusbarIsVisible 741 | 742 | TableOfContents 743 | 744 | 1CD10A99069EF8BA00B06720 745 | FAEC2A8712A5D70F0082AC9D 746 | 1C162984064C10D400B95A72 747 | FAEC2A8812A5D70F0082AC9D 748 | FAEC2A8912A5D70F0082AC9D 749 | FAEC2A8A12A5D70F0082AC9D 750 | FAEC2A8B12A5D70F0082AC9D 751 | FAEC2A8C12A5D70F0082AC9D 752 | 753 | ToolbarConfiguration 754 | xcode.toolbar.config.debugV3 755 | WindowString 756 | 170 405 694 422 0 0 1920 1058 757 | WindowToolGUID 758 | 1CD10A99069EF8BA00B06720 759 | WindowToolIsVisible 760 | 761 | 762 | 763 | Identifier 764 | windowTool.find 765 | Layout 766 | 767 | 768 | Dock 769 | 770 | 771 | Dock 772 | 773 | 774 | ContentConfiguration 775 | 776 | PBXProjectModuleGUID 777 | 1CDD528C0622207200134675 778 | PBXProjectModuleLabel 779 | <No Editor> 780 | PBXSplitModuleInNavigatorKey 781 | 782 | Split0 783 | 784 | PBXProjectModuleGUID 785 | 1CD0528D0623707200166675 786 | 787 | SplitCount 788 | 1 789 | 790 | StatusBarVisibility 791 | 1 792 | 793 | GeometryConfiguration 794 | 795 | Frame 796 | {{0, 0}, {781, 167}} 797 | RubberWindowFrame 798 | 62 385 781 470 0 0 1440 878 799 | 800 | Module 801 | PBXNavigatorGroup 802 | Proportion 803 | 781pt 804 | 805 | 806 | Proportion 807 | 50% 808 | 809 | 810 | BecomeActive 811 | 1 812 | ContentConfiguration 813 | 814 | PBXProjectModuleGUID 815 | 1CD0528E0623707200166675 816 | PBXProjectModuleLabel 817 | Project Find 818 | 819 | GeometryConfiguration 820 | 821 | Frame 822 | {{8, 0}, {773, 254}} 823 | RubberWindowFrame 824 | 62 385 781 470 0 0 1440 878 825 | 826 | Module 827 | PBXProjectFindModule 828 | Proportion 829 | 50% 830 | 831 | 832 | Proportion 833 | 428pt 834 | 835 | 836 | Name 837 | Project Find 838 | ServiceClasses 839 | 840 | PBXProjectFindModule 841 | 842 | StatusbarIsVisible 843 | 1 844 | TableOfContents 845 | 846 | 1C530D57069F1CE1000CFCEE 847 | 1C530D58069F1CE1000CFCEE 848 | 1C530D59069F1CE1000CFCEE 849 | 1CDD528C0622207200134675 850 | 1C530D5A069F1CE1000CFCEE 851 | 1CE0B1FE06471DED0097A5F4 852 | 1CD0528E0623707200166675 853 | 854 | WindowString 855 | 62 385 781 470 0 0 1440 878 856 | WindowToolGUID 857 | 1C530D57069F1CE1000CFCEE 858 | WindowToolIsVisible 859 | 0 860 | 861 | 862 | Identifier 863 | MENUSEPARATOR 864 | 865 | 866 | FirstTimeWindowDisplayed 867 | 868 | Identifier 869 | windowTool.debuggerConsole 870 | IsVertical 871 | 872 | Layout 873 | 874 | 875 | Dock 876 | 877 | 878 | BecomeActive 879 | 880 | ContentConfiguration 881 | 882 | PBXProjectModuleGUID 883 | 1C78EAAC065D492600B07095 884 | PBXProjectModuleLabel 885 | Debugger Console 886 | 887 | GeometryConfiguration 888 | 889 | Frame 890 | {{0, 0}, {650, 209}} 891 | RubberWindowFrame 892 | 170 577 650 250 0 0 1920 1058 893 | 894 | Module 895 | PBXDebugCLIModule 896 | Proportion 897 | 209pt 898 | 899 | 900 | Proportion 901 | 209pt 902 | 903 | 904 | Name 905 | Debugger Console 906 | ServiceClasses 907 | 908 | PBXDebugCLIModule 909 | 910 | StatusbarIsVisible 911 | 912 | TableOfContents 913 | 914 | 1C78EAAD065D492600B07095 915 | FAEC2A8D12A5D70F0082AC9D 916 | 1C78EAAC065D492600B07095 917 | 918 | ToolbarConfiguration 919 | xcode.toolbar.config.consoleV3 920 | WindowString 921 | 170 577 650 250 0 0 1920 1058 922 | WindowToolGUID 923 | 1C78EAAD065D492600B07095 924 | WindowToolIsVisible 925 | 926 | 927 | 928 | Identifier 929 | windowTool.snapshots 930 | Layout 931 | 932 | 933 | Dock 934 | 935 | 936 | Module 937 | XCSnapshotModule 938 | Proportion 939 | 100% 940 | 941 | 942 | Proportion 943 | 100% 944 | 945 | 946 | Name 947 | Snapshots 948 | ServiceClasses 949 | 950 | XCSnapshotModule 951 | 952 | StatusbarIsVisible 953 | Yes 954 | ToolbarConfiguration 955 | xcode.toolbar.config.snapshots 956 | WindowString 957 | 315 824 300 550 0 0 1440 878 958 | WindowToolIsVisible 959 | Yes 960 | 961 | 962 | Identifier 963 | windowTool.scm 964 | Layout 965 | 966 | 967 | Dock 968 | 969 | 970 | ContentConfiguration 971 | 972 | PBXProjectModuleGUID 973 | 1C78EAB2065D492600B07095 974 | PBXProjectModuleLabel 975 | <No Editor> 976 | PBXSplitModuleInNavigatorKey 977 | 978 | Split0 979 | 980 | PBXProjectModuleGUID 981 | 1C78EAB3065D492600B07095 982 | 983 | SplitCount 984 | 1 985 | 986 | StatusBarVisibility 987 | 1 988 | 989 | GeometryConfiguration 990 | 991 | Frame 992 | {{0, 0}, {452, 0}} 993 | RubberWindowFrame 994 | 743 379 452 308 0 0 1280 1002 995 | 996 | Module 997 | PBXNavigatorGroup 998 | Proportion 999 | 0pt 1000 | 1001 | 1002 | BecomeActive 1003 | 1 1004 | ContentConfiguration 1005 | 1006 | PBXProjectModuleGUID 1007 | 1CD052920623707200166675 1008 | PBXProjectModuleLabel 1009 | SCM 1010 | 1011 | GeometryConfiguration 1012 | 1013 | ConsoleFrame 1014 | {{0, 259}, {452, 0}} 1015 | Frame 1016 | {{0, 7}, {452, 259}} 1017 | RubberWindowFrame 1018 | 743 379 452 308 0 0 1280 1002 1019 | TableConfiguration 1020 | 1021 | Status 1022 | 30 1023 | FileName 1024 | 199 1025 | Path 1026 | 197.0950012207031 1027 | 1028 | TableFrame 1029 | {{0, 0}, {452, 250}} 1030 | 1031 | Module 1032 | PBXCVSModule 1033 | Proportion 1034 | 262pt 1035 | 1036 | 1037 | Proportion 1038 | 266pt 1039 | 1040 | 1041 | Name 1042 | SCM 1043 | ServiceClasses 1044 | 1045 | PBXCVSModule 1046 | 1047 | StatusbarIsVisible 1048 | 1 1049 | TableOfContents 1050 | 1051 | 1C78EAB4065D492600B07095 1052 | 1C78EAB5065D492600B07095 1053 | 1C78EAB2065D492600B07095 1054 | 1CD052920623707200166675 1055 | 1056 | ToolbarConfiguration 1057 | xcode.toolbar.config.scm 1058 | WindowString 1059 | 743 379 452 308 0 0 1280 1002 1060 | 1061 | 1062 | Identifier 1063 | windowTool.breakpoints 1064 | IsVertical 1065 | 0 1066 | Layout 1067 | 1068 | 1069 | Dock 1070 | 1071 | 1072 | BecomeActive 1073 | 1 1074 | ContentConfiguration 1075 | 1076 | PBXBottomSmartGroupGIDs 1077 | 1078 | 1C77FABC04509CD000000102 1079 | 1080 | PBXProjectModuleGUID 1081 | 1CE0B1FE06471DED0097A5F4 1082 | PBXProjectModuleLabel 1083 | Files 1084 | PBXProjectStructureProvided 1085 | no 1086 | PBXSmartGroupTreeModuleColumnData 1087 | 1088 | PBXSmartGroupTreeModuleColumnWidthsKey 1089 | 1090 | 168 1091 | 1092 | PBXSmartGroupTreeModuleColumnsKey_v4 1093 | 1094 | MainColumn 1095 | 1096 | 1097 | PBXSmartGroupTreeModuleOutlineStateKey_v7 1098 | 1099 | PBXSmartGroupTreeModuleOutlineStateExpansionKey 1100 | 1101 | 1C77FABC04509CD000000102 1102 | 1103 | PBXSmartGroupTreeModuleOutlineStateSelectionKey 1104 | 1105 | 1106 | 0 1107 | 1108 | 1109 | PBXSmartGroupTreeModuleOutlineStateVisibleRectKey 1110 | {{0, 0}, {168, 350}} 1111 | 1112 | PBXTopSmartGroupGIDs 1113 | 1114 | XCIncludePerspectivesSwitch 1115 | 0 1116 | 1117 | GeometryConfiguration 1118 | 1119 | Frame 1120 | {{0, 0}, {185, 368}} 1121 | GroupTreeTableConfiguration 1122 | 1123 | MainColumn 1124 | 168 1125 | 1126 | RubberWindowFrame 1127 | 315 424 744 409 0 0 1440 878 1128 | 1129 | Module 1130 | PBXSmartGroupTreeModule 1131 | Proportion 1132 | 185pt 1133 | 1134 | 1135 | ContentConfiguration 1136 | 1137 | PBXProjectModuleGUID 1138 | 1CA1AED706398EBD00589147 1139 | PBXProjectModuleLabel 1140 | Detail 1141 | 1142 | GeometryConfiguration 1143 | 1144 | Frame 1145 | {{190, 0}, {554, 368}} 1146 | RubberWindowFrame 1147 | 315 424 744 409 0 0 1440 878 1148 | 1149 | Module 1150 | XCDetailModule 1151 | Proportion 1152 | 554pt 1153 | 1154 | 1155 | Proportion 1156 | 368pt 1157 | 1158 | 1159 | MajorVersion 1160 | 3 1161 | MinorVersion 1162 | 0 1163 | Name 1164 | Breakpoints 1165 | ServiceClasses 1166 | 1167 | PBXSmartGroupTreeModule 1168 | XCDetailModule 1169 | 1170 | StatusbarIsVisible 1171 | 1 1172 | TableOfContents 1173 | 1174 | 1CDDB66807F98D9800BB5817 1175 | 1CDDB66907F98D9800BB5817 1176 | 1CE0B1FE06471DED0097A5F4 1177 | 1CA1AED706398EBD00589147 1178 | 1179 | ToolbarConfiguration 1180 | xcode.toolbar.config.breakpointsV3 1181 | WindowString 1182 | 315 424 744 409 0 0 1440 878 1183 | WindowToolGUID 1184 | 1CDDB66807F98D9800BB5817 1185 | WindowToolIsVisible 1186 | 1 1187 | 1188 | 1189 | Identifier 1190 | windowTool.debugAnimator 1191 | Layout 1192 | 1193 | 1194 | Dock 1195 | 1196 | 1197 | Module 1198 | PBXNavigatorGroup 1199 | Proportion 1200 | 100% 1201 | 1202 | 1203 | Proportion 1204 | 100% 1205 | 1206 | 1207 | Name 1208 | Debug Visualizer 1209 | ServiceClasses 1210 | 1211 | PBXNavigatorGroup 1212 | 1213 | StatusbarIsVisible 1214 | 1 1215 | ToolbarConfiguration 1216 | xcode.toolbar.config.debugAnimatorV3 1217 | WindowString 1218 | 100 100 700 500 0 0 1280 1002 1219 | 1220 | 1221 | Identifier 1222 | windowTool.bookmarks 1223 | Layout 1224 | 1225 | 1226 | Dock 1227 | 1228 | 1229 | Module 1230 | PBXBookmarksModule 1231 | Proportion 1232 | 100% 1233 | 1234 | 1235 | Proportion 1236 | 100% 1237 | 1238 | 1239 | Name 1240 | Bookmarks 1241 | ServiceClasses 1242 | 1243 | PBXBookmarksModule 1244 | 1245 | StatusbarIsVisible 1246 | 0 1247 | WindowString 1248 | 538 42 401 187 0 0 1280 1002 1249 | 1250 | 1251 | Identifier 1252 | windowTool.projectFormatConflicts 1253 | Layout 1254 | 1255 | 1256 | Dock 1257 | 1258 | 1259 | Module 1260 | XCProjectFormatConflictsModule 1261 | Proportion 1262 | 100% 1263 | 1264 | 1265 | Proportion 1266 | 100% 1267 | 1268 | 1269 | Name 1270 | Project Format Conflicts 1271 | ServiceClasses 1272 | 1273 | XCProjectFormatConflictsModule 1274 | 1275 | StatusbarIsVisible 1276 | 0 1277 | WindowContentMinSize 1278 | 450 300 1279 | WindowString 1280 | 50 850 472 307 0 0 1440 877 1281 | 1282 | 1283 | Identifier 1284 | windowTool.classBrowser 1285 | Layout 1286 | 1287 | 1288 | Dock 1289 | 1290 | 1291 | BecomeActive 1292 | 1 1293 | ContentConfiguration 1294 | 1295 | OptionsSetName 1296 | Hierarchy, all classes 1297 | PBXProjectModuleGUID 1298 | 1CA6456E063B45B4001379D8 1299 | PBXProjectModuleLabel 1300 | Class Browser - NSObject 1301 | 1302 | GeometryConfiguration 1303 | 1304 | ClassesFrame 1305 | {{0, 0}, {374, 96}} 1306 | ClassesTreeTableConfiguration 1307 | 1308 | PBXClassNameColumnIdentifier 1309 | 208 1310 | PBXClassBookColumnIdentifier 1311 | 22 1312 | 1313 | Frame 1314 | {{0, 0}, {630, 331}} 1315 | MembersFrame 1316 | {{0, 105}, {374, 395}} 1317 | MembersTreeTableConfiguration 1318 | 1319 | PBXMemberTypeIconColumnIdentifier 1320 | 22 1321 | PBXMemberNameColumnIdentifier 1322 | 216 1323 | PBXMemberTypeColumnIdentifier 1324 | 97 1325 | PBXMemberBookColumnIdentifier 1326 | 22 1327 | 1328 | PBXModuleWindowStatusBarHidden2 1329 | 1 1330 | RubberWindowFrame 1331 | 385 179 630 352 0 0 1440 878 1332 | 1333 | Module 1334 | PBXClassBrowserModule 1335 | Proportion 1336 | 332pt 1337 | 1338 | 1339 | Proportion 1340 | 332pt 1341 | 1342 | 1343 | Name 1344 | Class Browser 1345 | ServiceClasses 1346 | 1347 | PBXClassBrowserModule 1348 | 1349 | StatusbarIsVisible 1350 | 0 1351 | TableOfContents 1352 | 1353 | 1C0AD2AF069F1E9B00FABCE6 1354 | 1C0AD2B0069F1E9B00FABCE6 1355 | 1CA6456E063B45B4001379D8 1356 | 1357 | ToolbarConfiguration 1358 | xcode.toolbar.config.classbrowser 1359 | WindowString 1360 | 385 179 630 352 0 0 1440 878 1361 | WindowToolGUID 1362 | 1C0AD2AF069F1E9B00FABCE6 1363 | WindowToolIsVisible 1364 | 0 1365 | 1366 | 1367 | Identifier 1368 | windowTool.refactoring 1369 | IncludeInToolsMenu 1370 | 0 1371 | Layout 1372 | 1373 | 1374 | Dock 1375 | 1376 | 1377 | BecomeActive 1378 | 1 1379 | GeometryConfiguration 1380 | 1381 | Frame 1382 | {0, 0}, {500, 335} 1383 | RubberWindowFrame 1384 | {0, 0}, {500, 335} 1385 | 1386 | Module 1387 | XCRefactoringModule 1388 | Proportion 1389 | 100% 1390 | 1391 | 1392 | Proportion 1393 | 100% 1394 | 1395 | 1396 | Name 1397 | Refactoring 1398 | ServiceClasses 1399 | 1400 | XCRefactoringModule 1401 | 1402 | WindowString 1403 | 200 200 500 356 0 0 1920 1200 1404 | 1405 | 1406 | 1407 | 1408 | --------------------------------------------------------------------------------