├── Classes ├── DemoPhotoBoardAppDelegate.h ├── DemoPhotoBoardAppDelegate.m ├── DemoPhotoBoardViewController.h └── DemoPhotoBoardViewController.m ├── DemoPhotoBoard-Info.plist ├── DemoPhotoBoard.xcodeproj ├── collinruffenach.mode1v3 ├── collinruffenach.pbxuser └── project.pbxproj ├── DemoPhotoBoardViewController.xib ├── DemoPhotoBoard_Prefix.pch ├── MainWindow.xib ├── README └── main.m /Classes/DemoPhotoBoardAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // DemoPhotoBoardAppDelegate.h 3 | // DemoPhotoBoard 4 | // 5 | // Created by Collin Ruffenach on 10/12/10. 6 | // Copyright 2010 ELC Technologies. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class DemoPhotoBoardViewController; 12 | 13 | @interface DemoPhotoBoardAppDelegate : NSObject { 14 | UIWindow *window; 15 | DemoPhotoBoardViewController *viewController; 16 | } 17 | 18 | @property (nonatomic, retain) IBOutlet UIWindow *window; 19 | @property (nonatomic, retain) IBOutlet DemoPhotoBoardViewController *viewController; 20 | 21 | @end 22 | 23 | -------------------------------------------------------------------------------- /Classes/DemoPhotoBoardAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // DemoPhotoBoardAppDelegate.m 3 | // DemoPhotoBoard 4 | // 5 | // Created by Collin Ruffenach on 10/12/10. 6 | // Copyright 2010 ELC Technologies. All rights reserved. 7 | // 8 | 9 | #import "DemoPhotoBoardAppDelegate.h" 10 | #import "DemoPhotoBoardViewController.h" 11 | 12 | @implementation DemoPhotoBoardAppDelegate 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 app launch. 24 | [window addSubview:viewController.view]; 25 | [window makeKeyAndVisible]; 26 | 27 | return YES; 28 | } 29 | 30 | 31 | - (void)applicationWillResignActive:(UIApplication *)application { 32 | /* 33 | 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. 34 | 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. 35 | */ 36 | } 37 | 38 | 39 | - (void)applicationDidBecomeActive:(UIApplication *)application { 40 | /* 41 | 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. 42 | */ 43 | } 44 | 45 | 46 | - (void)applicationWillTerminate:(UIApplication *)application { 47 | /* 48 | Called when the application is about to terminate. 49 | See also applicationDidEnterBackground:. 50 | */ 51 | } 52 | 53 | 54 | #pragma mark - 55 | #pragma mark Memory management 56 | 57 | - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { 58 | /* 59 | Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. 60 | */ 61 | } 62 | 63 | 64 | - (void)dealloc { 65 | [viewController release]; 66 | [window release]; 67 | [super dealloc]; 68 | } 69 | 70 | 71 | @end 72 | -------------------------------------------------------------------------------- /Classes/DemoPhotoBoardViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DemoPhotoBoardViewController.h 3 | // DemoPhotoBoard 4 | // 5 | // Created by Collin Ruffenach on 10/12/10. 6 | // Copyright 2010 ELC Technologies. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface DemoPhotoBoardViewController : UIViewController { 13 | 14 | CGFloat lastScale; 15 | CGFloat lastRotation; 16 | 17 | CGFloat firstX; 18 | CGFloat firstY; 19 | } 20 | 21 | -(IBAction)addPhoto:(id)sender; 22 | 23 | @end 24 | 25 | -------------------------------------------------------------------------------- /Classes/DemoPhotoBoardViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // DemoPhotoBoardViewController.m 3 | // DemoPhotoBoard 4 | // 5 | // Created by Collin Ruffenach on 10/12/10. 6 | // Copyright 2010 ELC Technologies. All rights reserved. 7 | // 8 | 9 | #import "DemoPhotoBoardViewController.h" 10 | 11 | @implementation DemoPhotoBoardViewController 12 | 13 | 14 | /* 15 | // The designated initializer. Override to perform setup that is required before the view is loaded. 16 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 17 | if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { 18 | // Custom initialization 19 | } 20 | return self; 21 | } 22 | */ 23 | 24 | /* 25 | // Implement loadView to create a view hierarchy programmatically, without using a nib. 26 | - (void)loadView { 27 | } 28 | */ 29 | 30 | 31 | /* 32 | // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 33 | - (void)viewDidLoad { 34 | [super viewDidLoad]; 35 | } 36 | */ 37 | 38 | -(IBAction)addPhoto:(id)sender { 39 | 40 | UIImagePickerController *controller = [[UIImagePickerController alloc] init]; 41 | [controller setMediaTypes:[NSArray arrayWithObject:kUTTypeImage]]; 42 | [controller setDelegate:self]; 43 | 44 | UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:controller]; 45 | [popover setDelegate:self]; 46 | [popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 47 | } 48 | 49 | - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 50 | 51 | UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 52 | 53 | UIView *holderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)]; 54 | UIImageView *imageview = [[UIImageView alloc] initWithFrame:[holderView frame]]; 55 | [imageview setImage:image]; 56 | [holderView addSubview:imageview]; 57 | 58 | UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)]; 59 | [pinchRecognizer setDelegate:self]; 60 | [holderView addGestureRecognizer:pinchRecognizer]; 61 | 62 | UIRotationGestureRecognizer *rotationRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)]; 63 | [rotationRecognizer setDelegate:self]; 64 | [holderView addGestureRecognizer:rotationRecognizer]; 65 | 66 | UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)]; 67 | [panRecognizer setMinimumNumberOfTouches:1]; 68 | [panRecognizer setMaximumNumberOfTouches:1]; 69 | [panRecognizer setDelegate:self]; 70 | [holderView addGestureRecognizer:panRecognizer]; 71 | 72 | UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)]; 73 | [tapRecognizer setNumberOfTapsRequired:1]; 74 | [tapRecognizer setDelegate:self]; 75 | [holderView addGestureRecognizer:tapRecognizer]; 76 | 77 | [self.view addSubview:holderView]; 78 | } 79 | 80 | -(void)scale:(id)sender { 81 | 82 | [self.view bringSubviewToFront:[(UIPinchGestureRecognizer*)sender view]]; 83 | 84 | if([(UIPinchGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) { 85 | 86 | lastScale = 1.0; 87 | return; 88 | } 89 | 90 | CGFloat scale = 1.0 - (lastScale - [(UIPinchGestureRecognizer*)sender scale]); 91 | 92 | CGAffineTransform currentTransform = [(UIPinchGestureRecognizer*)sender view].transform; 93 | CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, scale, scale); 94 | 95 | [[(UIPinchGestureRecognizer*)sender view] setTransform:newTransform]; 96 | 97 | lastScale = [(UIPinchGestureRecognizer*)sender scale]; 98 | } 99 | 100 | -(void)rotate:(id)sender { 101 | 102 | [self.view bringSubviewToFront:[(UIRotationGestureRecognizer*)sender view]]; 103 | 104 | if([(UIRotationGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) { 105 | 106 | lastRotation = 0.0; 107 | return; 108 | } 109 | 110 | CGFloat rotation = 0.0 - (lastRotation - [(UIRotationGestureRecognizer*)sender rotation]); 111 | 112 | CGAffineTransform currentTransform = [(UIPinchGestureRecognizer*)sender view].transform; 113 | CGAffineTransform newTransform = CGAffineTransformRotate(currentTransform,rotation); 114 | 115 | [[(UIRotationGestureRecognizer*)sender view] setTransform:newTransform]; 116 | 117 | lastRotation = [(UIRotationGestureRecognizer*)sender rotation]; 118 | } 119 | 120 | -(void)move:(id)sender { 121 | 122 | [[[(UITapGestureRecognizer*)sender view] layer] removeAllAnimations]; 123 | 124 | [self.view bringSubviewToFront:[(UIPanGestureRecognizer*)sender view]]; 125 | CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:self.view]; 126 | 127 | if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) { 128 | 129 | firstX = [[sender view] center].x; 130 | firstY = [[sender view] center].y; 131 | } 132 | 133 | translatedPoint = CGPointMake(firstX+translatedPoint.x, firstY+translatedPoint.y); 134 | 135 | [[sender view] setCenter:translatedPoint]; 136 | 137 | if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) { 138 | 139 | CGFloat finalX = translatedPoint.x + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.view].x); 140 | CGFloat finalY = translatedPoint.y + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.view].y); 141 | 142 | if(UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation])) { 143 | 144 | if(finalX < 0) { 145 | 146 | finalX = 0; 147 | } 148 | 149 | else if(finalX > 768) { 150 | 151 | finalX = 768; 152 | } 153 | 154 | if(finalY < 0) { 155 | 156 | finalY = 0; 157 | } 158 | 159 | else if(finalY > 1024) { 160 | 161 | finalY = 1024; 162 | } 163 | } 164 | 165 | else { 166 | 167 | if(finalX < 0) { 168 | 169 | finalX = 0; 170 | } 171 | 172 | else if(finalX > 1024) { 173 | 174 | finalX = 768; 175 | } 176 | 177 | if(finalY < 0) { 178 | 179 | finalY = 0; 180 | } 181 | 182 | else if(finalY > 768) { 183 | 184 | finalY = 1024; 185 | } 186 | } 187 | 188 | [UIView beginAnimations:nil context:NULL]; 189 | [UIView setAnimationDuration:.35]; 190 | [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 191 | [[sender view] setCenter:CGPointMake(finalX, finalY)]; 192 | [UIView commitAnimations]; 193 | } 194 | } 195 | 196 | -(void)tapped:(id)sender { 197 | 198 | [[[(UITapGestureRecognizer*)sender view] layer] removeAllAnimations]; 199 | } 200 | 201 | - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { 202 | 203 | return ![gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]; 204 | } 205 | 206 | // Override to allow orientations other than the default portrait orientation. 207 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 208 | return YES; 209 | } 210 | 211 | - (void)didReceiveMemoryWarning { 212 | // Releases the view if it doesn't have a superview. 213 | [super didReceiveMemoryWarning]; 214 | 215 | // Release any cached data, images, etc that aren't in use. 216 | } 217 | 218 | - (void)viewDidUnload { 219 | // Release any retained subviews of the main view. 220 | // e.g. self.myOutlet = nil; 221 | } 222 | 223 | 224 | - (void)dealloc { 225 | [super dealloc]; 226 | } 227 | 228 | @end 229 | -------------------------------------------------------------------------------- /DemoPhotoBoard-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 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationPortraitUpsideDown 33 | UIInterfaceOrientationLandscapeLeft 34 | UIInterfaceOrientationLandscapeRight 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /DemoPhotoBoard.xcodeproj/collinruffenach.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 | E283243C1264D72F00F12641 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 | debugger-enable-breakpoints 215 | build-and-go 216 | com.apple.ide.PBXToolbarStopButton 217 | get-info 218 | NSToolbarFlexibleSpaceItem 219 | com.apple.pbx.toolbar.searchfield 220 | 221 | ControllerClassBaseName 222 | 223 | IconName 224 | WindowOfProjectWithEditor 225 | Identifier 226 | perspective.project 227 | IsVertical 228 | 229 | Layout 230 | 231 | 232 | ContentConfiguration 233 | 234 | PBXBottomSmartGroupGIDs 235 | 236 | 1C37FBAC04509CD000000102 237 | 1C37FAAC04509CD000000102 238 | 1C37FABC05509CD000000102 239 | 1C37FABC05539CD112110102 240 | E2644B35053B69B200211256 241 | 1C37FABC04509CD000100104 242 | 1CC0EA4004350EF90044410B 243 | 1CC0EA4004350EF90041110B 244 | 245 | PBXProjectModuleGUID 246 | 1CE0B1FE06471DED0097A5F4 247 | PBXProjectModuleLabel 248 | Files 249 | PBXProjectStructureProvided 250 | yes 251 | PBXSmartGroupTreeModuleColumnData 252 | 253 | PBXSmartGroupTreeModuleColumnWidthsKey 254 | 255 | 286 256 | 257 | PBXSmartGroupTreeModuleColumnsKey_v4 258 | 259 | MainColumn 260 | 261 | 262 | PBXSmartGroupTreeModuleOutlineStateKey_v7 263 | 264 | PBXSmartGroupTreeModuleOutlineStateExpansionKey 265 | 266 | 29B97314FDCFA39411CA2CEA 267 | 080E96DDFE201D6D7F000001 268 | 29B97317FDCFA39411CA2CEA 269 | 29B97323FDCFA39411CA2CEA 270 | 1C37FABC05509CD000000102 271 | 272 | PBXSmartGroupTreeModuleOutlineStateSelectionKey 273 | 274 | 275 | 5 276 | 1 277 | 0 278 | 279 | 280 | PBXSmartGroupTreeModuleOutlineStateVisibleRectKey 281 | {{0, 0}, {286, 914}} 282 | 283 | PBXTopSmartGroupGIDs 284 | 285 | XCIncludePerspectivesSwitch 286 | 287 | XCSharingToken 288 | com.apple.Xcode.GFSharingToken 289 | 290 | GeometryConfiguration 291 | 292 | Frame 293 | {{0, 0}, {303, 932}} 294 | GroupTreeTableConfiguration 295 | 296 | MainColumn 297 | 286 298 | 299 | RubberWindowFrame 300 | 0 55 1676 973 0 0 1680 1028 301 | 302 | Module 303 | PBXSmartGroupTreeModule 304 | Proportion 305 | 303pt 306 | 307 | 308 | Dock 309 | 310 | 311 | BecomeActive 312 | 313 | ContentConfiguration 314 | 315 | PBXProjectModuleGUID 316 | 1CE0B20306471E060097A5F4 317 | PBXProjectModuleLabel 318 | DemoPhotoBoardViewController.m 319 | PBXSplitModuleInNavigatorKey 320 | 321 | Split0 322 | 323 | PBXProjectModuleGUID 324 | 1CE0B20406471E060097A5F4 325 | PBXProjectModuleLabel 326 | DemoPhotoBoardViewController.m 327 | _historyCapacity 328 | 0 329 | bookmark 330 | E2AFEA4F1267D37800D8A8DA 331 | history 332 | 333 | E2F801A912679B8900730FFA 334 | E216858A1267D31D008FF2D9 335 | 336 | 337 | SplitCount 338 | 1 339 | 340 | StatusBarVisibility 341 | 342 | 343 | GeometryConfiguration 344 | 345 | Frame 346 | {{0, 0}, {1368, 927}} 347 | RubberWindowFrame 348 | 0 55 1676 973 0 0 1680 1028 349 | 350 | Module 351 | PBXNavigatorGroup 352 | Proportion 353 | 927pt 354 | 355 | 356 | ContentConfiguration 357 | 358 | PBXProjectModuleGUID 359 | 1CE0B20506471E060097A5F4 360 | PBXProjectModuleLabel 361 | Detail 362 | 363 | GeometryConfiguration 364 | 365 | Frame 366 | {{0, 932}, {1368, 0}} 367 | RubberWindowFrame 368 | 0 55 1676 973 0 0 1680 1028 369 | 370 | Module 371 | XCDetailModule 372 | Proportion 373 | 0pt 374 | 375 | 376 | Proportion 377 | 1368pt 378 | 379 | 380 | Name 381 | Project 382 | ServiceClasses 383 | 384 | XCModuleDock 385 | PBXSmartGroupTreeModule 386 | XCModuleDock 387 | PBXNavigatorGroup 388 | XCDetailModule 389 | 390 | TableOfContents 391 | 392 | E2AFEA501267D37800D8A8DA 393 | 1CE0B1FE06471DED0097A5F4 394 | E2AFEA511267D37800D8A8DA 395 | 1CE0B20306471E060097A5F4 396 | 1CE0B20506471E060097A5F4 397 | 398 | ToolbarConfigUserDefaultsMinorVersion 399 | 2 400 | ToolbarConfiguration 401 | xcode.toolbar.config.defaultV3 402 | 403 | 404 | ControllerClassBaseName 405 | 406 | IconName 407 | WindowOfProject 408 | Identifier 409 | perspective.morph 410 | IsVertical 411 | 0 412 | Layout 413 | 414 | 415 | BecomeActive 416 | 1 417 | ContentConfiguration 418 | 419 | PBXBottomSmartGroupGIDs 420 | 421 | 1C37FBAC04509CD000000102 422 | 1C37FAAC04509CD000000102 423 | 1C08E77C0454961000C914BD 424 | 1C37FABC05509CD000000102 425 | 1C37FABC05539CD112110102 426 | E2644B35053B69B200211256 427 | 1C37FABC04509CD000100104 428 | 1CC0EA4004350EF90044410B 429 | 1CC0EA4004350EF90041110B 430 | 431 | PBXProjectModuleGUID 432 | 11E0B1FE06471DED0097A5F4 433 | PBXProjectModuleLabel 434 | Files 435 | PBXProjectStructureProvided 436 | yes 437 | PBXSmartGroupTreeModuleColumnData 438 | 439 | PBXSmartGroupTreeModuleColumnWidthsKey 440 | 441 | 186 442 | 443 | PBXSmartGroupTreeModuleColumnsKey_v4 444 | 445 | MainColumn 446 | 447 | 448 | PBXSmartGroupTreeModuleOutlineStateKey_v7 449 | 450 | PBXSmartGroupTreeModuleOutlineStateExpansionKey 451 | 452 | 29B97314FDCFA39411CA2CEA 453 | 1C37FABC05509CD000000102 454 | 455 | PBXSmartGroupTreeModuleOutlineStateSelectionKey 456 | 457 | 458 | 0 459 | 460 | 461 | PBXSmartGroupTreeModuleOutlineStateVisibleRectKey 462 | {{0, 0}, {186, 337}} 463 | 464 | PBXTopSmartGroupGIDs 465 | 466 | XCIncludePerspectivesSwitch 467 | 1 468 | XCSharingToken 469 | com.apple.Xcode.GFSharingToken 470 | 471 | GeometryConfiguration 472 | 473 | Frame 474 | {{0, 0}, {203, 355}} 475 | GroupTreeTableConfiguration 476 | 477 | MainColumn 478 | 186 479 | 480 | RubberWindowFrame 481 | 373 269 690 397 0 0 1440 878 482 | 483 | Module 484 | PBXSmartGroupTreeModule 485 | Proportion 486 | 100% 487 | 488 | 489 | Name 490 | Morph 491 | PreferredWidth 492 | 300 493 | ServiceClasses 494 | 495 | XCModuleDock 496 | PBXSmartGroupTreeModule 497 | 498 | TableOfContents 499 | 500 | 11E0B1FE06471DED0097A5F4 501 | 502 | ToolbarConfiguration 503 | xcode.toolbar.config.default.shortV3 504 | 505 | 506 | PerspectivesBarVisible 507 | 508 | ShelfIsVisible 509 | 510 | SourceDescription 511 | file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' 512 | StatusbarIsVisible 513 | 514 | TimeStamp 515 | 0.0 516 | ToolbarConfigUserDefaultsMinorVersion 517 | 2 518 | ToolbarDisplayMode 519 | 1 520 | ToolbarIsVisible 521 | 522 | ToolbarSizeMode 523 | 1 524 | Type 525 | Perspectives 526 | UpdateMessage 527 | 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 '%@'? 528 | WindowJustification 529 | 5 530 | WindowOrderList 531 | 532 | E283243D1264D72F00F12641 533 | /Users/collinruffenach/Development/DemoPhotoBoard/DemoPhotoBoard.xcodeproj 534 | 535 | WindowString 536 | 0 55 1676 973 0 0 1680 1028 537 | WindowToolsV3 538 | 539 | 540 | FirstTimeWindowDisplayed 541 | 542 | Identifier 543 | windowTool.build 544 | IsVertical 545 | 546 | Layout 547 | 548 | 549 | Dock 550 | 551 | 552 | ContentConfiguration 553 | 554 | PBXProjectModuleGUID 555 | 1CD0528F0623707200166675 556 | PBXProjectModuleLabel 557 | 558 | StatusBarVisibility 559 | 560 | 561 | GeometryConfiguration 562 | 563 | Frame 564 | {{0, 0}, {500, 218}} 565 | RubberWindowFrame 566 | 35 493 500 500 0 0 1680 1028 567 | 568 | Module 569 | PBXNavigatorGroup 570 | Proportion 571 | 218pt 572 | 573 | 574 | ContentConfiguration 575 | 576 | PBXProjectModuleGUID 577 | XCMainBuildResultsModuleGUID 578 | PBXProjectModuleLabel 579 | Build Results 580 | XCBuildResultsTrigger_Collapse 581 | 1021 582 | XCBuildResultsTrigger_Open 583 | 1011 584 | 585 | GeometryConfiguration 586 | 587 | Frame 588 | {{0, 223}, {500, 236}} 589 | RubberWindowFrame 590 | 35 493 500 500 0 0 1680 1028 591 | 592 | Module 593 | PBXBuildResultsModule 594 | Proportion 595 | 236pt 596 | 597 | 598 | Proportion 599 | 459pt 600 | 601 | 602 | Name 603 | Build Results 604 | ServiceClasses 605 | 606 | PBXBuildResultsModule 607 | 608 | StatusbarIsVisible 609 | 610 | TableOfContents 611 | 612 | E283243D1264D72F00F12641 613 | E2AFEA521267D37800D8A8DA 614 | 1CD0528F0623707200166675 615 | XCMainBuildResultsModuleGUID 616 | 617 | ToolbarConfiguration 618 | xcode.toolbar.config.buildV3 619 | WindowContentMinSize 620 | 486 300 621 | WindowString 622 | 35 493 500 500 0 0 1680 1028 623 | WindowToolGUID 624 | E283243D1264D72F00F12641 625 | WindowToolIsVisible 626 | 627 | 628 | 629 | FirstTimeWindowDisplayed 630 | 631 | Identifier 632 | windowTool.debugger 633 | IsVertical 634 | 635 | Layout 636 | 637 | 638 | Dock 639 | 640 | 641 | ContentConfiguration 642 | 643 | Debugger 644 | 645 | HorizontalSplitView 646 | 647 | _collapsingFrameDimension 648 | 0.0 649 | _indexOfCollapsedView 650 | 0 651 | _percentageOfCollapsedView 652 | 0.0 653 | isCollapsed 654 | yes 655 | sizes 656 | 657 | {{0, 0}, {316, 185}} 658 | {{316, 0}, {378, 185}} 659 | 660 | 661 | VerticalSplitView 662 | 663 | _collapsingFrameDimension 664 | 0.0 665 | _indexOfCollapsedView 666 | 0 667 | _percentageOfCollapsedView 668 | 0.0 669 | isCollapsed 670 | yes 671 | sizes 672 | 673 | {{0, 0}, {694, 185}} 674 | {{0, 185}, {694, 196}} 675 | 676 | 677 | 678 | LauncherConfigVersion 679 | 8 680 | PBXProjectModuleGUID 681 | 1C162984064C10D400B95A72 682 | PBXProjectModuleLabel 683 | Debug - GLUTExamples (Underwater) 684 | 685 | GeometryConfiguration 686 | 687 | DebugConsoleVisible 688 | None 689 | DebugConsoleWindowFrame 690 | {{200, 200}, {500, 300}} 691 | DebugSTDIOWindowFrame 692 | {{200, 200}, {500, 300}} 693 | Frame 694 | {{0, 0}, {694, 381}} 695 | PBXDebugSessionStackFrameViewKey 696 | 697 | DebugVariablesTableConfiguration 698 | 699 | Name 700 | 120 701 | Value 702 | 85 703 | Summary 704 | 148 705 | 706 | Frame 707 | {{316, 0}, {378, 185}} 708 | RubberWindowFrame 709 | 42 710 694 422 0 0 1680 1028 710 | 711 | RubberWindowFrame 712 | 42 710 694 422 0 0 1680 1028 713 | 714 | Module 715 | PBXDebugSessionModule 716 | Proportion 717 | 381pt 718 | 719 | 720 | Proportion 721 | 381pt 722 | 723 | 724 | Name 725 | Debugger 726 | ServiceClasses 727 | 728 | PBXDebugSessionModule 729 | 730 | StatusbarIsVisible 731 | 732 | TableOfContents 733 | 734 | 1CD10A99069EF8BA00B06720 735 | E28324FE1264D8D200F12641 736 | 1C162984064C10D400B95A72 737 | E28324FF1264D8D200F12641 738 | E28325001264D8D200F12641 739 | E28325011264D8D200F12641 740 | E28325021264D8D200F12641 741 | E28325031264D8D200F12641 742 | 743 | ToolbarConfiguration 744 | xcode.toolbar.config.debugV3 745 | WindowString 746 | 42 710 694 422 0 0 1680 1028 747 | WindowToolGUID 748 | 1CD10A99069EF8BA00B06720 749 | WindowToolIsVisible 750 | 751 | 752 | 753 | Identifier 754 | windowTool.find 755 | Layout 756 | 757 | 758 | Dock 759 | 760 | 761 | Dock 762 | 763 | 764 | ContentConfiguration 765 | 766 | PBXProjectModuleGUID 767 | 1CDD528C0622207200134675 768 | PBXProjectModuleLabel 769 | <No Editor> 770 | PBXSplitModuleInNavigatorKey 771 | 772 | Split0 773 | 774 | PBXProjectModuleGUID 775 | 1CD0528D0623707200166675 776 | 777 | SplitCount 778 | 1 779 | 780 | StatusBarVisibility 781 | 1 782 | 783 | GeometryConfiguration 784 | 785 | Frame 786 | {{0, 0}, {781, 167}} 787 | RubberWindowFrame 788 | 62 385 781 470 0 0 1440 878 789 | 790 | Module 791 | PBXNavigatorGroup 792 | Proportion 793 | 781pt 794 | 795 | 796 | Proportion 797 | 50% 798 | 799 | 800 | BecomeActive 801 | 1 802 | ContentConfiguration 803 | 804 | PBXProjectModuleGUID 805 | 1CD0528E0623707200166675 806 | PBXProjectModuleLabel 807 | Project Find 808 | 809 | GeometryConfiguration 810 | 811 | Frame 812 | {{8, 0}, {773, 254}} 813 | RubberWindowFrame 814 | 62 385 781 470 0 0 1440 878 815 | 816 | Module 817 | PBXProjectFindModule 818 | Proportion 819 | 50% 820 | 821 | 822 | Proportion 823 | 428pt 824 | 825 | 826 | Name 827 | Project Find 828 | ServiceClasses 829 | 830 | PBXProjectFindModule 831 | 832 | StatusbarIsVisible 833 | 1 834 | TableOfContents 835 | 836 | 1C530D57069F1CE1000CFCEE 837 | 1C530D58069F1CE1000CFCEE 838 | 1C530D59069F1CE1000CFCEE 839 | 1CDD528C0622207200134675 840 | 1C530D5A069F1CE1000CFCEE 841 | 1CE0B1FE06471DED0097A5F4 842 | 1CD0528E0623707200166675 843 | 844 | WindowString 845 | 62 385 781 470 0 0 1440 878 846 | WindowToolGUID 847 | 1C530D57069F1CE1000CFCEE 848 | WindowToolIsVisible 849 | 0 850 | 851 | 852 | Identifier 853 | MENUSEPARATOR 854 | 855 | 856 | FirstTimeWindowDisplayed 857 | 858 | Identifier 859 | windowTool.debuggerConsole 860 | IsVertical 861 | 862 | Layout 863 | 864 | 865 | Dock 866 | 867 | 868 | BecomeActive 869 | 870 | ContentConfiguration 871 | 872 | PBXProjectModuleGUID 873 | 1C78EAAC065D492600B07095 874 | PBXProjectModuleLabel 875 | Debugger Console 876 | 877 | GeometryConfiguration 878 | 879 | Frame 880 | {{0, 0}, {650, 209}} 881 | RubberWindowFrame 882 | 17 759 650 250 0 0 1680 1028 883 | 884 | Module 885 | PBXDebugCLIModule 886 | Proportion 887 | 209pt 888 | 889 | 890 | Proportion 891 | 209pt 892 | 893 | 894 | Name 895 | Debugger Console 896 | ServiceClasses 897 | 898 | PBXDebugCLIModule 899 | 900 | StatusbarIsVisible 901 | 902 | TableOfContents 903 | 904 | 1C78EAAD065D492600B07095 905 | E28325041264D8D200F12641 906 | 1C78EAAC065D492600B07095 907 | 908 | ToolbarConfiguration 909 | xcode.toolbar.config.consoleV3 910 | WindowString 911 | 17 759 650 250 0 0 1680 1028 912 | WindowToolGUID 913 | 1C78EAAD065D492600B07095 914 | WindowToolIsVisible 915 | 916 | 917 | 918 | Identifier 919 | windowTool.snapshots 920 | Layout 921 | 922 | 923 | Dock 924 | 925 | 926 | Module 927 | XCSnapshotModule 928 | Proportion 929 | 100% 930 | 931 | 932 | Proportion 933 | 100% 934 | 935 | 936 | Name 937 | Snapshots 938 | ServiceClasses 939 | 940 | XCSnapshotModule 941 | 942 | StatusbarIsVisible 943 | Yes 944 | ToolbarConfiguration 945 | xcode.toolbar.config.snapshots 946 | WindowString 947 | 315 824 300 550 0 0 1440 878 948 | WindowToolIsVisible 949 | Yes 950 | 951 | 952 | Identifier 953 | windowTool.scm 954 | Layout 955 | 956 | 957 | Dock 958 | 959 | 960 | ContentConfiguration 961 | 962 | PBXProjectModuleGUID 963 | 1C78EAB2065D492600B07095 964 | PBXProjectModuleLabel 965 | <No Editor> 966 | PBXSplitModuleInNavigatorKey 967 | 968 | Split0 969 | 970 | PBXProjectModuleGUID 971 | 1C78EAB3065D492600B07095 972 | 973 | SplitCount 974 | 1 975 | 976 | StatusBarVisibility 977 | 1 978 | 979 | GeometryConfiguration 980 | 981 | Frame 982 | {{0, 0}, {452, 0}} 983 | RubberWindowFrame 984 | 743 379 452 308 0 0 1280 1002 985 | 986 | Module 987 | PBXNavigatorGroup 988 | Proportion 989 | 0pt 990 | 991 | 992 | BecomeActive 993 | 1 994 | ContentConfiguration 995 | 996 | PBXProjectModuleGUID 997 | 1CD052920623707200166675 998 | PBXProjectModuleLabel 999 | SCM 1000 | 1001 | GeometryConfiguration 1002 | 1003 | ConsoleFrame 1004 | {{0, 259}, {452, 0}} 1005 | Frame 1006 | {{0, 7}, {452, 259}} 1007 | RubberWindowFrame 1008 | 743 379 452 308 0 0 1280 1002 1009 | TableConfiguration 1010 | 1011 | Status 1012 | 30 1013 | FileName 1014 | 199 1015 | Path 1016 | 197.0950012207031 1017 | 1018 | TableFrame 1019 | {{0, 0}, {452, 250}} 1020 | 1021 | Module 1022 | PBXCVSModule 1023 | Proportion 1024 | 262pt 1025 | 1026 | 1027 | Proportion 1028 | 266pt 1029 | 1030 | 1031 | Name 1032 | SCM 1033 | ServiceClasses 1034 | 1035 | PBXCVSModule 1036 | 1037 | StatusbarIsVisible 1038 | 1 1039 | TableOfContents 1040 | 1041 | 1C78EAB4065D492600B07095 1042 | 1C78EAB5065D492600B07095 1043 | 1C78EAB2065D492600B07095 1044 | 1CD052920623707200166675 1045 | 1046 | ToolbarConfiguration 1047 | xcode.toolbar.config.scm 1048 | WindowString 1049 | 743 379 452 308 0 0 1280 1002 1050 | 1051 | 1052 | Identifier 1053 | windowTool.breakpoints 1054 | IsVertical 1055 | 0 1056 | Layout 1057 | 1058 | 1059 | Dock 1060 | 1061 | 1062 | BecomeActive 1063 | 1 1064 | ContentConfiguration 1065 | 1066 | PBXBottomSmartGroupGIDs 1067 | 1068 | 1C77FABC04509CD000000102 1069 | 1070 | PBXProjectModuleGUID 1071 | 1CE0B1FE06471DED0097A5F4 1072 | PBXProjectModuleLabel 1073 | Files 1074 | PBXProjectStructureProvided 1075 | no 1076 | PBXSmartGroupTreeModuleColumnData 1077 | 1078 | PBXSmartGroupTreeModuleColumnWidthsKey 1079 | 1080 | 168 1081 | 1082 | PBXSmartGroupTreeModuleColumnsKey_v4 1083 | 1084 | MainColumn 1085 | 1086 | 1087 | PBXSmartGroupTreeModuleOutlineStateKey_v7 1088 | 1089 | PBXSmartGroupTreeModuleOutlineStateExpansionKey 1090 | 1091 | 1C77FABC04509CD000000102 1092 | 1093 | PBXSmartGroupTreeModuleOutlineStateSelectionKey 1094 | 1095 | 1096 | 0 1097 | 1098 | 1099 | PBXSmartGroupTreeModuleOutlineStateVisibleRectKey 1100 | {{0, 0}, {168, 350}} 1101 | 1102 | PBXTopSmartGroupGIDs 1103 | 1104 | XCIncludePerspectivesSwitch 1105 | 0 1106 | 1107 | GeometryConfiguration 1108 | 1109 | Frame 1110 | {{0, 0}, {185, 368}} 1111 | GroupTreeTableConfiguration 1112 | 1113 | MainColumn 1114 | 168 1115 | 1116 | RubberWindowFrame 1117 | 315 424 744 409 0 0 1440 878 1118 | 1119 | Module 1120 | PBXSmartGroupTreeModule 1121 | Proportion 1122 | 185pt 1123 | 1124 | 1125 | ContentConfiguration 1126 | 1127 | PBXProjectModuleGUID 1128 | 1CA1AED706398EBD00589147 1129 | PBXProjectModuleLabel 1130 | Detail 1131 | 1132 | GeometryConfiguration 1133 | 1134 | Frame 1135 | {{190, 0}, {554, 368}} 1136 | RubberWindowFrame 1137 | 315 424 744 409 0 0 1440 878 1138 | 1139 | Module 1140 | XCDetailModule 1141 | Proportion 1142 | 554pt 1143 | 1144 | 1145 | Proportion 1146 | 368pt 1147 | 1148 | 1149 | MajorVersion 1150 | 3 1151 | MinorVersion 1152 | 0 1153 | Name 1154 | Breakpoints 1155 | ServiceClasses 1156 | 1157 | PBXSmartGroupTreeModule 1158 | XCDetailModule 1159 | 1160 | StatusbarIsVisible 1161 | 1 1162 | TableOfContents 1163 | 1164 | 1CDDB66807F98D9800BB5817 1165 | 1CDDB66907F98D9800BB5817 1166 | 1CE0B1FE06471DED0097A5F4 1167 | 1CA1AED706398EBD00589147 1168 | 1169 | ToolbarConfiguration 1170 | xcode.toolbar.config.breakpointsV3 1171 | WindowString 1172 | 315 424 744 409 0 0 1440 878 1173 | WindowToolGUID 1174 | 1CDDB66807F98D9800BB5817 1175 | WindowToolIsVisible 1176 | 1 1177 | 1178 | 1179 | Identifier 1180 | windowTool.debugAnimator 1181 | Layout 1182 | 1183 | 1184 | Dock 1185 | 1186 | 1187 | Module 1188 | PBXNavigatorGroup 1189 | Proportion 1190 | 100% 1191 | 1192 | 1193 | Proportion 1194 | 100% 1195 | 1196 | 1197 | Name 1198 | Debug Visualizer 1199 | ServiceClasses 1200 | 1201 | PBXNavigatorGroup 1202 | 1203 | StatusbarIsVisible 1204 | 1 1205 | ToolbarConfiguration 1206 | xcode.toolbar.config.debugAnimatorV3 1207 | WindowString 1208 | 100 100 700 500 0 0 1280 1002 1209 | 1210 | 1211 | Identifier 1212 | windowTool.bookmarks 1213 | Layout 1214 | 1215 | 1216 | Dock 1217 | 1218 | 1219 | Module 1220 | PBXBookmarksModule 1221 | Proportion 1222 | 100% 1223 | 1224 | 1225 | Proportion 1226 | 100% 1227 | 1228 | 1229 | Name 1230 | Bookmarks 1231 | ServiceClasses 1232 | 1233 | PBXBookmarksModule 1234 | 1235 | StatusbarIsVisible 1236 | 0 1237 | WindowString 1238 | 538 42 401 187 0 0 1280 1002 1239 | 1240 | 1241 | Identifier 1242 | windowTool.projectFormatConflicts 1243 | Layout 1244 | 1245 | 1246 | Dock 1247 | 1248 | 1249 | Module 1250 | XCProjectFormatConflictsModule 1251 | Proportion 1252 | 100% 1253 | 1254 | 1255 | Proportion 1256 | 100% 1257 | 1258 | 1259 | Name 1260 | Project Format Conflicts 1261 | ServiceClasses 1262 | 1263 | XCProjectFormatConflictsModule 1264 | 1265 | StatusbarIsVisible 1266 | 0 1267 | WindowContentMinSize 1268 | 450 300 1269 | WindowString 1270 | 50 850 472 307 0 0 1440 877 1271 | 1272 | 1273 | Identifier 1274 | windowTool.classBrowser 1275 | Layout 1276 | 1277 | 1278 | Dock 1279 | 1280 | 1281 | BecomeActive 1282 | 1 1283 | ContentConfiguration 1284 | 1285 | OptionsSetName 1286 | Hierarchy, all classes 1287 | PBXProjectModuleGUID 1288 | 1CA6456E063B45B4001379D8 1289 | PBXProjectModuleLabel 1290 | Class Browser - NSObject 1291 | 1292 | GeometryConfiguration 1293 | 1294 | ClassesFrame 1295 | {{0, 0}, {374, 96}} 1296 | ClassesTreeTableConfiguration 1297 | 1298 | PBXClassNameColumnIdentifier 1299 | 208 1300 | PBXClassBookColumnIdentifier 1301 | 22 1302 | 1303 | Frame 1304 | {{0, 0}, {630, 331}} 1305 | MembersFrame 1306 | {{0, 105}, {374, 395}} 1307 | MembersTreeTableConfiguration 1308 | 1309 | PBXMemberTypeIconColumnIdentifier 1310 | 22 1311 | PBXMemberNameColumnIdentifier 1312 | 216 1313 | PBXMemberTypeColumnIdentifier 1314 | 97 1315 | PBXMemberBookColumnIdentifier 1316 | 22 1317 | 1318 | PBXModuleWindowStatusBarHidden2 1319 | 1 1320 | RubberWindowFrame 1321 | 385 179 630 352 0 0 1440 878 1322 | 1323 | Module 1324 | PBXClassBrowserModule 1325 | Proportion 1326 | 332pt 1327 | 1328 | 1329 | Proportion 1330 | 332pt 1331 | 1332 | 1333 | Name 1334 | Class Browser 1335 | ServiceClasses 1336 | 1337 | PBXClassBrowserModule 1338 | 1339 | StatusbarIsVisible 1340 | 0 1341 | TableOfContents 1342 | 1343 | 1C0AD2AF069F1E9B00FABCE6 1344 | 1C0AD2B0069F1E9B00FABCE6 1345 | 1CA6456E063B45B4001379D8 1346 | 1347 | ToolbarConfiguration 1348 | xcode.toolbar.config.classbrowser 1349 | WindowString 1350 | 385 179 630 352 0 0 1440 878 1351 | WindowToolGUID 1352 | 1C0AD2AF069F1E9B00FABCE6 1353 | WindowToolIsVisible 1354 | 0 1355 | 1356 | 1357 | Identifier 1358 | windowTool.refactoring 1359 | IncludeInToolsMenu 1360 | 0 1361 | Layout 1362 | 1363 | 1364 | Dock 1365 | 1366 | 1367 | BecomeActive 1368 | 1 1369 | GeometryConfiguration 1370 | 1371 | Frame 1372 | {0, 0}, {500, 335} 1373 | RubberWindowFrame 1374 | {0, 0}, {500, 335} 1375 | 1376 | Module 1377 | XCRefactoringModule 1378 | Proportion 1379 | 100% 1380 | 1381 | 1382 | Proportion 1383 | 100% 1384 | 1385 | 1386 | Name 1387 | Refactoring 1388 | ServiceClasses 1389 | 1390 | XCRefactoringModule 1391 | 1392 | WindowString 1393 | 200 200 500 356 0 0 1920 1200 1394 | 1395 | 1396 | 1397 | 1398 | -------------------------------------------------------------------------------- /DemoPhotoBoard.xcodeproj/collinruffenach.pbxuser: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | 1D6058900D05DD3D006BFB54 /* DemoPhotoBoard */ = { 4 | activeExec = 0; 5 | executables = ( 6 | E283242D1264D72100F12641 /* DemoPhotoBoard */, 7 | ); 8 | }; 9 | 28D7ACF60DDB3853001CB0EB /* DemoPhotoBoardViewController.h */ = { 10 | uiCtxt = { 11 | sepNavIntBoundsRect = "{{0, 0}, {1484, 895}}"; 12 | sepNavSelRange = "{253, 28}"; 13 | sepNavVisRange = "{0, 550}"; 14 | }; 15 | }; 16 | 28D7ACF70DDB3853001CB0EB /* DemoPhotoBoardViewController.m */ = { 17 | uiCtxt = { 18 | sepNavIntBoundsRect = "{{0, 0}, {1332, 3723}}"; 19 | sepNavSelRange = "{4084, 1631}"; 20 | sepNavVisRange = "{4084, 1255}"; 21 | }; 22 | }; 23 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 24 | activeBuildConfigurationName = Debug; 25 | activeExecutable = E283242D1264D72100F12641 /* DemoPhotoBoard */; 26 | activeTarget = 1D6058900D05DD3D006BFB54 /* DemoPhotoBoard */; 27 | addToTargets = ( 28 | 1D6058900D05DD3D006BFB54 /* DemoPhotoBoard */, 29 | ); 30 | breakpoints = ( 31 | E28325341264DAF900F12641 /* DemoPhotoBoardViewController.m:198 */, 32 | ); 33 | codeSenseManager = E28324401264D72F00F12641 /* Code sense */; 34 | executables = ( 35 | E283242D1264D72100F12641 /* DemoPhotoBoard */, 36 | ); 37 | perUserDictionary = { 38 | PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { 39 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; 40 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; 41 | PBXFileTableDataSourceColumnWidthsKey = ( 42 | 20, 43 | 1129, 44 | 20, 45 | 48, 46 | 43, 47 | 43, 48 | 20, 49 | ); 50 | PBXFileTableDataSourceColumnsKey = ( 51 | PBXFileDataSource_FiletypeID, 52 | PBXFileDataSource_Filename_ColumnID, 53 | PBXFileDataSource_Built_ColumnID, 54 | PBXFileDataSource_ObjectSize_ColumnID, 55 | PBXFileDataSource_Errors_ColumnID, 56 | PBXFileDataSource_Warnings_ColumnID, 57 | PBXFileDataSource_Target_ColumnID, 58 | ); 59 | }; 60 | PBXPerProjectTemplateStateSaveDate = 308794231; 61 | PBXWorkspaceStateSaveDate = 308794231; 62 | }; 63 | perUserProjectItems = { 64 | E216858A1267D31D008FF2D9 = E216858A1267D31D008FF2D9 /* PBXTextBookmark */; 65 | E2AFEA4F1267D37800D8A8DA /* PBXTextBookmark */ = E2AFEA4F1267D37800D8A8DA /* PBXTextBookmark */; 66 | E2F801A912679B8900730FFA = E2F801A912679B8900730FFA /* PBXTextBookmark */; 67 | E2F801AB12679B8900730FFA = E2F801AB12679B8900730FFA /* PBXTextBookmark */; 68 | }; 69 | sourceControlManager = E283243F1264D72F00F12641 /* Source Control */; 70 | userBuildSettings = { 71 | }; 72 | }; 73 | E216858A1267D31D008FF2D9 /* PBXTextBookmark */ = { 74 | isa = PBXTextBookmark; 75 | fRef = 28D7ACF70DDB3853001CB0EB /* DemoPhotoBoardViewController.m */; 76 | name = "DemoPhotoBoardViewController.m: 120"; 77 | rLen = 1631; 78 | rLoc = 4084; 79 | rType = 0; 80 | vrLen = 1255; 81 | vrLoc = 4084; 82 | }; 83 | E283242D1264D72100F12641 /* DemoPhotoBoard */ = { 84 | isa = PBXExecutable; 85 | activeArgIndices = ( 86 | ); 87 | argumentStrings = ( 88 | ); 89 | autoAttachOnCrash = 1; 90 | breakpointsEnabled = 0; 91 | configStateDict = { 92 | }; 93 | customDataFormattersEnabled = 1; 94 | dataTipCustomDataFormattersEnabled = 1; 95 | dataTipShowTypeColumn = 1; 96 | dataTipSortType = 0; 97 | debuggerPlugin = GDBDebugging; 98 | disassemblyDisplayState = 0; 99 | dylibVariantSuffix = ""; 100 | enableDebugStr = 1; 101 | environmentEntries = ( 102 | ); 103 | executableSystemSymbolLevel = 0; 104 | executableUserSymbolLevel = 0; 105 | libgmallocEnabled = 0; 106 | name = DemoPhotoBoard; 107 | savedGlobals = { 108 | }; 109 | showTypeColumn = 0; 110 | sourceDirectories = ( 111 | ); 112 | }; 113 | E283243F1264D72F00F12641 /* Source Control */ = { 114 | isa = PBXSourceControlManager; 115 | fallbackIsa = XCSourceControlManager; 116 | isSCMEnabled = 0; 117 | scmConfiguration = { 118 | repositoryNamesForRoots = { 119 | "" = ""; 120 | }; 121 | }; 122 | }; 123 | E28324401264D72F00F12641 /* Code sense */ = { 124 | isa = PBXCodeSenseManager; 125 | indexTemplatePath = ""; 126 | }; 127 | E28325341264DAF900F12641 /* DemoPhotoBoardViewController.m:198 */ = { 128 | isa = PBXFileBreakpoint; 129 | actions = ( 130 | ); 131 | breakpointStyle = 0; 132 | continueAfterActions = 0; 133 | countType = 0; 134 | delayBeforeContinue = 0; 135 | fileReference = 28D7ACF70DDB3853001CB0EB /* DemoPhotoBoardViewController.m */; 136 | functionName = "-tapped:"; 137 | hitCount = 0; 138 | ignoreCount = 0; 139 | lineNumber = 198; 140 | modificationTime = 308786676.040231; 141 | originalNumberOfMultipleMatches = 1; 142 | state = 1; 143 | }; 144 | E2AFEA4F1267D37800D8A8DA /* PBXTextBookmark */ = { 145 | isa = PBXTextBookmark; 146 | fRef = 28D7ACF70DDB3853001CB0EB /* DemoPhotoBoardViewController.m */; 147 | name = "DemoPhotoBoardViewController.m: 120"; 148 | rLen = 1631; 149 | rLoc = 4084; 150 | rType = 0; 151 | vrLen = 1255; 152 | vrLoc = 4084; 153 | }; 154 | E2F801A912679B8900730FFA /* PBXTextBookmark */ = { 155 | isa = PBXTextBookmark; 156 | fRef = 28D7ACF60DDB3853001CB0EB /* DemoPhotoBoardViewController.h */; 157 | name = "DemoPhotoBoardViewController.h: 12"; 158 | rLen = 28; 159 | rLoc = 253; 160 | rType = 0; 161 | vrLen = 550; 162 | vrLoc = 0; 163 | }; 164 | E2F801AB12679B8900730FFA /* PBXTextBookmark */ = { 165 | isa = PBXTextBookmark; 166 | fRef = 28D7ACF70DDB3853001CB0EB /* DemoPhotoBoardViewController.m */; 167 | name = "DemoPhotoBoardViewController.m: 192"; 168 | rLen = 0; 169 | rLoc = 5715; 170 | rType = 0; 171 | vrLen = 1234; 172 | vrLoc = 5371; 173 | }; 174 | } 175 | -------------------------------------------------------------------------------- /DemoPhotoBoard.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 45; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1D3623260D0F684500981E51 /* DemoPhotoBoardAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* DemoPhotoBoardAppDelegate.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 /* DemoPhotoBoardViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2899E5210DE3E06400AC0155 /* DemoPhotoBoardViewController.xib */; }; 16 | 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; }; 17 | 28D7ACF80DDB3853001CB0EB /* DemoPhotoBoardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D7ACF70DDB3853001CB0EB /* DemoPhotoBoardViewController.m */; }; 18 | E28324EF1264D89300F12641 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E28324EE1264D89300F12641 /* MobileCoreServices.framework */; }; 19 | /* End PBXBuildFile section */ 20 | 21 | /* Begin PBXFileReference section */ 22 | 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 23 | 1D3623240D0F684500981E51 /* DemoPhotoBoardAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoPhotoBoardAppDelegate.h; sourceTree = ""; }; 24 | 1D3623250D0F684500981E51 /* DemoPhotoBoardAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DemoPhotoBoardAppDelegate.m; sourceTree = ""; }; 25 | 1D6058910D05DD3D006BFB54 /* DemoPhotoBoard.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DemoPhotoBoard.app; sourceTree = BUILT_PRODUCTS_DIR; }; 26 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 27 | 288765A40DF7441C002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 28 | 2899E5210DE3E06400AC0155 /* DemoPhotoBoardViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DemoPhotoBoardViewController.xib; sourceTree = ""; }; 29 | 28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; 30 | 28D7ACF60DDB3853001CB0EB /* DemoPhotoBoardViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoPhotoBoardViewController.h; sourceTree = ""; }; 31 | 28D7ACF70DDB3853001CB0EB /* DemoPhotoBoardViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DemoPhotoBoardViewController.m; sourceTree = ""; }; 32 | 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 33 | 32CA4F630368D1EE00C91783 /* DemoPhotoBoard_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoPhotoBoard_Prefix.pch; sourceTree = ""; }; 34 | 8D1107310486CEB800E47090 /* DemoPhotoBoard-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "DemoPhotoBoard-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; 35 | E28324EE1264D89300F12641 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; 36 | /* End PBXFileReference section */ 37 | 38 | /* Begin PBXFrameworksBuildPhase section */ 39 | 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { 40 | isa = PBXFrameworksBuildPhase; 41 | buildActionMask = 2147483647; 42 | files = ( 43 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 44 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 45 | 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */, 46 | E28324EF1264D89300F12641 /* MobileCoreServices.framework in Frameworks */, 47 | ); 48 | runOnlyForDeploymentPostprocessing = 0; 49 | }; 50 | /* End PBXFrameworksBuildPhase section */ 51 | 52 | /* Begin PBXGroup section */ 53 | 080E96DDFE201D6D7F000001 /* Classes */ = { 54 | isa = PBXGroup; 55 | children = ( 56 | 1D3623240D0F684500981E51 /* DemoPhotoBoardAppDelegate.h */, 57 | 1D3623250D0F684500981E51 /* DemoPhotoBoardAppDelegate.m */, 58 | 28D7ACF60DDB3853001CB0EB /* DemoPhotoBoardViewController.h */, 59 | 28D7ACF70DDB3853001CB0EB /* DemoPhotoBoardViewController.m */, 60 | ); 61 | path = Classes; 62 | sourceTree = ""; 63 | }; 64 | 19C28FACFE9D520D11CA2CBB /* Products */ = { 65 | isa = PBXGroup; 66 | children = ( 67 | 1D6058910D05DD3D006BFB54 /* DemoPhotoBoard.app */, 68 | ); 69 | name = Products; 70 | sourceTree = ""; 71 | }; 72 | 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { 73 | isa = PBXGroup; 74 | children = ( 75 | 080E96DDFE201D6D7F000001 /* Classes */, 76 | 29B97315FDCFA39411CA2CEA /* Other Sources */, 77 | 29B97317FDCFA39411CA2CEA /* Resources */, 78 | 29B97323FDCFA39411CA2CEA /* Frameworks */, 79 | 19C28FACFE9D520D11CA2CBB /* Products */, 80 | ); 81 | name = CustomTemplate; 82 | sourceTree = ""; 83 | }; 84 | 29B97315FDCFA39411CA2CEA /* Other Sources */ = { 85 | isa = PBXGroup; 86 | children = ( 87 | 32CA4F630368D1EE00C91783 /* DemoPhotoBoard_Prefix.pch */, 88 | 29B97316FDCFA39411CA2CEA /* main.m */, 89 | ); 90 | name = "Other Sources"; 91 | sourceTree = ""; 92 | }; 93 | 29B97317FDCFA39411CA2CEA /* Resources */ = { 94 | isa = PBXGroup; 95 | children = ( 96 | 2899E5210DE3E06400AC0155 /* DemoPhotoBoardViewController.xib */, 97 | 28AD733E0D9D9553002E5188 /* MainWindow.xib */, 98 | 8D1107310486CEB800E47090 /* DemoPhotoBoard-Info.plist */, 99 | ); 100 | name = Resources; 101 | sourceTree = ""; 102 | }; 103 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = { 104 | isa = PBXGroup; 105 | children = ( 106 | E28324EE1264D89300F12641 /* MobileCoreServices.framework */, 107 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, 108 | 1D30AB110D05D00D00671497 /* Foundation.framework */, 109 | 288765A40DF7441C002DB57D /* CoreGraphics.framework */, 110 | ); 111 | name = Frameworks; 112 | sourceTree = ""; 113 | }; 114 | /* End PBXGroup section */ 115 | 116 | /* Begin PBXNativeTarget section */ 117 | 1D6058900D05DD3D006BFB54 /* DemoPhotoBoard */ = { 118 | isa = PBXNativeTarget; 119 | buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "DemoPhotoBoard" */; 120 | buildPhases = ( 121 | 1D60588D0D05DD3D006BFB54 /* Resources */, 122 | 1D60588E0D05DD3D006BFB54 /* Sources */, 123 | 1D60588F0D05DD3D006BFB54 /* Frameworks */, 124 | ); 125 | buildRules = ( 126 | ); 127 | dependencies = ( 128 | ); 129 | name = DemoPhotoBoard; 130 | productName = DemoPhotoBoard; 131 | productReference = 1D6058910D05DD3D006BFB54 /* DemoPhotoBoard.app */; 132 | productType = "com.apple.product-type.application"; 133 | }; 134 | /* End PBXNativeTarget section */ 135 | 136 | /* Begin PBXProject section */ 137 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 138 | isa = PBXProject; 139 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "DemoPhotoBoard" */; 140 | compatibilityVersion = "Xcode 3.1"; 141 | developmentRegion = English; 142 | hasScannedForEncodings = 1; 143 | knownRegions = ( 144 | English, 145 | Japanese, 146 | French, 147 | German, 148 | ); 149 | mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; 150 | projectDirPath = ""; 151 | projectRoot = ""; 152 | targets = ( 153 | 1D6058900D05DD3D006BFB54 /* DemoPhotoBoard */, 154 | ); 155 | }; 156 | /* End PBXProject section */ 157 | 158 | /* Begin PBXResourcesBuildPhase section */ 159 | 1D60588D0D05DD3D006BFB54 /* Resources */ = { 160 | isa = PBXResourcesBuildPhase; 161 | buildActionMask = 2147483647; 162 | files = ( 163 | 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */, 164 | 2899E5220DE3E06400AC0155 /* DemoPhotoBoardViewController.xib in Resources */, 165 | ); 166 | runOnlyForDeploymentPostprocessing = 0; 167 | }; 168 | /* End PBXResourcesBuildPhase section */ 169 | 170 | /* Begin PBXSourcesBuildPhase section */ 171 | 1D60588E0D05DD3D006BFB54 /* Sources */ = { 172 | isa = PBXSourcesBuildPhase; 173 | buildActionMask = 2147483647; 174 | files = ( 175 | 1D60589B0D05DD56006BFB54 /* main.m in Sources */, 176 | 1D3623260D0F684500981E51 /* DemoPhotoBoardAppDelegate.m in Sources */, 177 | 28D7ACF80DDB3853001CB0EB /* DemoPhotoBoardViewController.m in Sources */, 178 | ); 179 | runOnlyForDeploymentPostprocessing = 0; 180 | }; 181 | /* End PBXSourcesBuildPhase section */ 182 | 183 | /* Begin XCBuildConfiguration section */ 184 | 1D6058940D05DD3E006BFB54 /* Debug */ = { 185 | isa = XCBuildConfiguration; 186 | buildSettings = { 187 | ALWAYS_SEARCH_USER_PATHS = NO; 188 | COPY_PHASE_STRIP = NO; 189 | GCC_DYNAMIC_NO_PIC = NO; 190 | GCC_OPTIMIZATION_LEVEL = 0; 191 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 192 | GCC_PREFIX_HEADER = DemoPhotoBoard_Prefix.pch; 193 | INFOPLIST_FILE = "DemoPhotoBoard-Info.plist"; 194 | PRODUCT_NAME = DemoPhotoBoard; 195 | }; 196 | name = Debug; 197 | }; 198 | 1D6058950D05DD3E006BFB54 /* Release */ = { 199 | isa = XCBuildConfiguration; 200 | buildSettings = { 201 | ALWAYS_SEARCH_USER_PATHS = NO; 202 | COPY_PHASE_STRIP = YES; 203 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 204 | GCC_PREFIX_HEADER = DemoPhotoBoard_Prefix.pch; 205 | INFOPLIST_FILE = "DemoPhotoBoard-Info.plist"; 206 | PRODUCT_NAME = DemoPhotoBoard; 207 | VALIDATE_PRODUCT = YES; 208 | }; 209 | name = Release; 210 | }; 211 | C01FCF4F08A954540054247B /* Debug */ = { 212 | isa = XCBuildConfiguration; 213 | buildSettings = { 214 | ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; 215 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 216 | GCC_C_LANGUAGE_STANDARD = c99; 217 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 218 | GCC_WARN_UNUSED_VARIABLE = YES; 219 | PREBINDING = NO; 220 | SDKROOT = iphoneos3.2; 221 | TARGETED_DEVICE_FAMILY = 2; 222 | }; 223 | name = Debug; 224 | }; 225 | C01FCF5008A954540054247B /* Release */ = { 226 | isa = XCBuildConfiguration; 227 | buildSettings = { 228 | ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; 229 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 230 | GCC_C_LANGUAGE_STANDARD = c99; 231 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 232 | GCC_WARN_UNUSED_VARIABLE = YES; 233 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 234 | PREBINDING = NO; 235 | SDKROOT = iphoneos3.2; 236 | TARGETED_DEVICE_FAMILY = 2; 237 | }; 238 | name = Release; 239 | }; 240 | /* End XCBuildConfiguration section */ 241 | 242 | /* Begin XCConfigurationList section */ 243 | 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "DemoPhotoBoard" */ = { 244 | isa = XCConfigurationList; 245 | buildConfigurations = ( 246 | 1D6058940D05DD3E006BFB54 /* Debug */, 247 | 1D6058950D05DD3E006BFB54 /* Release */, 248 | ); 249 | defaultConfigurationIsVisible = 0; 250 | defaultConfigurationName = Release; 251 | }; 252 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "DemoPhotoBoard" */ = { 253 | isa = XCConfigurationList; 254 | buildConfigurations = ( 255 | C01FCF4F08A954540054247B /* Debug */, 256 | C01FCF5008A954540054247B /* Release */, 257 | ); 258 | defaultConfigurationIsVisible = 0; 259 | defaultConfigurationName = Release; 260 | }; 261 | /* End XCConfigurationList section */ 262 | }; 263 | rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; 264 | } 265 | -------------------------------------------------------------------------------- /DemoPhotoBoardViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 800 5 | 10F569 6 | 804 7 | 1038.29 8 | 461.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 123 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 | IBIPadFramework 35 | 36 | 37 | IBFirstResponder 38 | IBIPadFramework 39 | 40 | 41 | 42 | 274 43 | 44 | YES 45 | 46 | 47 | 290 48 | {768, 44} 49 | 50 | NO 51 | NO 52 | IBIPadFramework 53 | 54 | YES 55 | 56 | IBIPadFramework 57 | 58 | 5 59 | 60 | 61 | IBIPadFramework 62 | 1 63 | 64 | 4 65 | 66 | 67 | 68 | 69 | {768, 1004} 70 | 71 | 72 | 3 73 | MQA 74 | 75 | 2 76 | 77 | 78 | 79 | 2 80 | 81 | IBIPadFramework 82 | 83 | 84 | 85 | 86 | YES 87 | 88 | 89 | view 90 | 91 | 92 | 93 | 3 94 | 95 | 96 | 97 | addPhoto: 98 | 99 | 100 | 101 | 8 102 | 103 | 104 | 105 | 106 | YES 107 | 108 | 0 109 | 110 | 111 | 112 | 113 | 114 | -1 115 | 116 | 117 | File's Owner 118 | 119 | 120 | -2 121 | 122 | 123 | 124 | 125 | 2 126 | 127 | 128 | YES 129 | 130 | 131 | 132 | 133 | 134 | 4 135 | 136 | 137 | YES 138 | 139 | 140 | 141 | 142 | 143 | 144 | 5 145 | 146 | 147 | 148 | 149 | 7 150 | 151 | 152 | 153 | 154 | 155 | 156 | YES 157 | 158 | YES 159 | -1.CustomClassName 160 | -2.CustomClassName 161 | 2.IBEditorWindowLastContentRect 162 | 2.IBPluginDependency 163 | 4.IBPluginDependency 164 | 4.IBViewBoundsToFrameTransform 165 | 5.IBPluginDependency 166 | 7.IBPluginDependency 167 | 168 | 169 | YES 170 | DemoPhotoBoardViewController 171 | UIResponder 172 | {{189, 110}, {768, 1024}} 173 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 174 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 175 | 176 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 177 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 178 | 179 | 180 | 181 | YES 182 | 183 | 184 | YES 185 | 186 | 187 | 188 | 189 | YES 190 | 191 | 192 | YES 193 | 194 | 195 | 196 | 8 197 | 198 | 199 | 200 | YES 201 | 202 | DemoPhotoBoardViewController 203 | UIViewController 204 | 205 | addPhoto: 206 | id 207 | 208 | 209 | addPhoto: 210 | 211 | addPhoto: 212 | id 213 | 214 | 215 | 216 | IBProjectSource 217 | Classes/DemoPhotoBoardViewController.h 218 | 219 | 220 | 221 | 222 | YES 223 | 224 | NSObject 225 | 226 | IBFrameworkSource 227 | Foundation.framework/Headers/NSError.h 228 | 229 | 230 | 231 | NSObject 232 | 233 | IBFrameworkSource 234 | Foundation.framework/Headers/NSFileManager.h 235 | 236 | 237 | 238 | NSObject 239 | 240 | IBFrameworkSource 241 | Foundation.framework/Headers/NSKeyValueCoding.h 242 | 243 | 244 | 245 | NSObject 246 | 247 | IBFrameworkSource 248 | Foundation.framework/Headers/NSKeyValueObserving.h 249 | 250 | 251 | 252 | NSObject 253 | 254 | IBFrameworkSource 255 | Foundation.framework/Headers/NSKeyedArchiver.h 256 | 257 | 258 | 259 | NSObject 260 | 261 | IBFrameworkSource 262 | Foundation.framework/Headers/NSNetServices.h 263 | 264 | 265 | 266 | NSObject 267 | 268 | IBFrameworkSource 269 | Foundation.framework/Headers/NSObject.h 270 | 271 | 272 | 273 | NSObject 274 | 275 | IBFrameworkSource 276 | Foundation.framework/Headers/NSPort.h 277 | 278 | 279 | 280 | NSObject 281 | 282 | IBFrameworkSource 283 | Foundation.framework/Headers/NSRunLoop.h 284 | 285 | 286 | 287 | NSObject 288 | 289 | IBFrameworkSource 290 | Foundation.framework/Headers/NSStream.h 291 | 292 | 293 | 294 | NSObject 295 | 296 | IBFrameworkSource 297 | Foundation.framework/Headers/NSThread.h 298 | 299 | 300 | 301 | NSObject 302 | 303 | IBFrameworkSource 304 | Foundation.framework/Headers/NSURL.h 305 | 306 | 307 | 308 | NSObject 309 | 310 | IBFrameworkSource 311 | Foundation.framework/Headers/NSURLConnection.h 312 | 313 | 314 | 315 | NSObject 316 | 317 | IBFrameworkSource 318 | Foundation.framework/Headers/NSXMLParser.h 319 | 320 | 321 | 322 | NSObject 323 | 324 | IBFrameworkSource 325 | UIKit.framework/Headers/UIAccessibility.h 326 | 327 | 328 | 329 | NSObject 330 | 331 | IBFrameworkSource 332 | UIKit.framework/Headers/UINibLoading.h 333 | 334 | 335 | 336 | NSObject 337 | 338 | IBFrameworkSource 339 | UIKit.framework/Headers/UIResponder.h 340 | 341 | 342 | 343 | UIBarButtonItem 344 | UIBarItem 345 | 346 | IBFrameworkSource 347 | UIKit.framework/Headers/UIBarButtonItem.h 348 | 349 | 350 | 351 | UIBarItem 352 | NSObject 353 | 354 | IBFrameworkSource 355 | UIKit.framework/Headers/UIBarItem.h 356 | 357 | 358 | 359 | UIResponder 360 | NSObject 361 | 362 | 363 | 364 | UISearchBar 365 | UIView 366 | 367 | IBFrameworkSource 368 | UIKit.framework/Headers/UISearchBar.h 369 | 370 | 371 | 372 | UISearchDisplayController 373 | NSObject 374 | 375 | IBFrameworkSource 376 | UIKit.framework/Headers/UISearchDisplayController.h 377 | 378 | 379 | 380 | UIToolbar 381 | UIView 382 | 383 | IBFrameworkSource 384 | UIKit.framework/Headers/UIToolbar.h 385 | 386 | 387 | 388 | UIView 389 | 390 | IBFrameworkSource 391 | UIKit.framework/Headers/UITextField.h 392 | 393 | 394 | 395 | UIView 396 | UIResponder 397 | 398 | IBFrameworkSource 399 | UIKit.framework/Headers/UIView.h 400 | 401 | 402 | 403 | UIViewController 404 | 405 | IBFrameworkSource 406 | UIKit.framework/Headers/UINavigationController.h 407 | 408 | 409 | 410 | UIViewController 411 | 412 | IBFrameworkSource 413 | UIKit.framework/Headers/UIPopoverController.h 414 | 415 | 416 | 417 | UIViewController 418 | 419 | IBFrameworkSource 420 | UIKit.framework/Headers/UISplitViewController.h 421 | 422 | 423 | 424 | UIViewController 425 | 426 | IBFrameworkSource 427 | UIKit.framework/Headers/UITabBarController.h 428 | 429 | 430 | 431 | UIViewController 432 | UIResponder 433 | 434 | IBFrameworkSource 435 | UIKit.framework/Headers/UIViewController.h 436 | 437 | 438 | 439 | 440 | 0 441 | IBIPadFramework 442 | 443 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 444 | 445 | 446 | 447 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 448 | 449 | 450 | YES 451 | DemoPhotoBoard.xcodeproj 452 | 3 453 | 123 454 | 455 | 456 | -------------------------------------------------------------------------------- /DemoPhotoBoard_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'DemoPhotoBoard' target in the 'DemoPhotoBoard' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #import 8 | #endif 9 | -------------------------------------------------------------------------------- /MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 800 5 | 10D540 6 | 760 7 | 1038.29 8 | 460.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 81 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 | 292 43 | {768, 1024} 44 | 45 | 46 | 1 47 | MSAxIDEAA 48 | 49 | NO 50 | NO 51 | 52 | 2 53 | 54 | IBIPadFramework 55 | YES 56 | 57 | 58 | IBIPadFramework 59 | 60 | 61 | DemoPhotoBoardViewController 62 | 63 | IBIPadFramework 64 | 65 | 66 | 67 | 68 | YES 69 | 70 | 71 | viewController 72 | 73 | 74 | 75 | 8 76 | 77 | 78 | 79 | delegate 80 | 81 | 82 | 83 | 9 84 | 85 | 86 | 87 | window 88 | 89 | 90 | 91 | 10 92 | 93 | 94 | 95 | 96 | YES 97 | 98 | 0 99 | 100 | 101 | 102 | 103 | 104 | -1 105 | 106 | 107 | File's Owner 108 | 109 | 110 | -2 111 | 112 | 113 | 114 | 115 | 2 116 | 117 | 118 | 119 | 120 | 6 121 | 122 | 123 | DemoPhotoBoard App Delegate 124 | 125 | 126 | 7 127 | 128 | 129 | 130 | 131 | 132 | 133 | YES 134 | 135 | YES 136 | -1.CustomClassName 137 | -2.CustomClassName 138 | 2.IBEditorWindowLastContentRect 139 | 2.IBPluginDependency 140 | 6.CustomClassName 141 | 6.IBPluginDependency 142 | 7.CustomClassName 143 | 7.IBEditorWindowLastContentRect 144 | 7.IBPluginDependency 145 | 146 | 147 | YES 148 | UIApplication 149 | UIResponder 150 | {{200, 57}, {783, 799}} 151 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 152 | DemoPhotoBoardAppDelegate 153 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 154 | DemoPhotoBoardViewController 155 | {{512, 351}, {320, 480}} 156 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 157 | 158 | 159 | 160 | YES 161 | 162 | 163 | YES 164 | 165 | 166 | 167 | 168 | YES 169 | 170 | 171 | YES 172 | 173 | 174 | 175 | 10 176 | 177 | 178 | 179 | YES 180 | 181 | DemoPhotoBoardAppDelegate 182 | NSObject 183 | 184 | YES 185 | 186 | YES 187 | viewController 188 | window 189 | 190 | 191 | YES 192 | DemoPhotoBoardViewController 193 | UIWindow 194 | 195 | 196 | 197 | IBProjectSource 198 | Classes/DemoPhotoBoardAppDelegate.h 199 | 200 | 201 | 202 | DemoPhotoBoardViewController 203 | UIViewController 204 | 205 | IBProjectSource 206 | Classes/DemoPhotoBoardViewController.h 207 | 208 | 209 | 210 | 211 | YES 212 | 213 | NSObject 214 | 215 | IBFrameworkSource 216 | Foundation.framework/Headers/NSError.h 217 | 218 | 219 | 220 | NSObject 221 | 222 | IBFrameworkSource 223 | Foundation.framework/Headers/NSFileManager.h 224 | 225 | 226 | 227 | NSObject 228 | 229 | IBFrameworkSource 230 | Foundation.framework/Headers/NSKeyValueCoding.h 231 | 232 | 233 | 234 | NSObject 235 | 236 | IBFrameworkSource 237 | Foundation.framework/Headers/NSKeyValueObserving.h 238 | 239 | 240 | 241 | NSObject 242 | 243 | IBFrameworkSource 244 | Foundation.framework/Headers/NSKeyedArchiver.h 245 | 246 | 247 | 248 | NSObject 249 | 250 | IBFrameworkSource 251 | Foundation.framework/Headers/NSNetServices.h 252 | 253 | 254 | 255 | NSObject 256 | 257 | IBFrameworkSource 258 | Foundation.framework/Headers/NSObject.h 259 | 260 | 261 | 262 | NSObject 263 | 264 | IBFrameworkSource 265 | Foundation.framework/Headers/NSPort.h 266 | 267 | 268 | 269 | NSObject 270 | 271 | IBFrameworkSource 272 | Foundation.framework/Headers/NSRunLoop.h 273 | 274 | 275 | 276 | NSObject 277 | 278 | IBFrameworkSource 279 | Foundation.framework/Headers/NSStream.h 280 | 281 | 282 | 283 | NSObject 284 | 285 | IBFrameworkSource 286 | Foundation.framework/Headers/NSThread.h 287 | 288 | 289 | 290 | NSObject 291 | 292 | IBFrameworkSource 293 | Foundation.framework/Headers/NSURL.h 294 | 295 | 296 | 297 | NSObject 298 | 299 | IBFrameworkSource 300 | Foundation.framework/Headers/NSURLConnection.h 301 | 302 | 303 | 304 | NSObject 305 | 306 | IBFrameworkSource 307 | Foundation.framework/Headers/NSXMLParser.h 308 | 309 | 310 | 311 | NSObject 312 | 313 | IBFrameworkSource 314 | UIKit.framework/Headers/UIAccessibility.h 315 | 316 | 317 | 318 | NSObject 319 | 320 | IBFrameworkSource 321 | UIKit.framework/Headers/UINibLoading.h 322 | 323 | 324 | 325 | NSObject 326 | 327 | IBFrameworkSource 328 | UIKit.framework/Headers/UIResponder.h 329 | 330 | 331 | 332 | UIApplication 333 | UIResponder 334 | 335 | IBFrameworkSource 336 | UIKit.framework/Headers/UIApplication.h 337 | 338 | 339 | 340 | UIResponder 341 | NSObject 342 | 343 | 344 | 345 | UIResponder 346 | 347 | IBFrameworkSource 348 | UIKit.framework/Headers/UITextInput.h 349 | 350 | 351 | 352 | UISearchBar 353 | UIView 354 | 355 | IBFrameworkSource 356 | UIKit.framework/Headers/UISearchBar.h 357 | 358 | 359 | 360 | UISearchDisplayController 361 | NSObject 362 | 363 | IBFrameworkSource 364 | UIKit.framework/Headers/UISearchDisplayController.h 365 | 366 | 367 | 368 | UIView 369 | 370 | IBFrameworkSource 371 | UIKit.framework/Headers/UITextField.h 372 | 373 | 374 | 375 | UIView 376 | UIResponder 377 | 378 | IBFrameworkSource 379 | UIKit.framework/Headers/UIView.h 380 | 381 | 382 | 383 | UIViewController 384 | 385 | IBFrameworkSource 386 | UIKit.framework/Headers/UINavigationController.h 387 | 388 | 389 | 390 | UIViewController 391 | 392 | IBFrameworkSource 393 | UIKit.framework/Headers/UISplitViewController.h 394 | 395 | 396 | 397 | UIViewController 398 | 399 | IBFrameworkSource 400 | UIKit.framework/Headers/UITabBarController.h 401 | 402 | 403 | 404 | UIViewController 405 | UIResponder 406 | 407 | IBFrameworkSource 408 | UIKit.framework/Headers/UIViewController.h 409 | 410 | 411 | 412 | UIWindow 413 | UIView 414 | 415 | IBFrameworkSource 416 | UIKit.framework/Headers/UIWindow.h 417 | 418 | 419 | 420 | 421 | 0 422 | IBIPadFramework 423 | 424 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 425 | 426 | 427 | 428 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 429 | 430 | 431 | YES 432 | DemoPhotoBoard.xcodeproj 433 | 3 434 | 81 435 | 436 | 437 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | ****** Info ****** 2 | 3 | This is a project that is described in detail on iCodeBlog.com. The project shows how to create and implement several UIGestureRecognizer subclasses, including rotation, scale and pan. 4 | 5 | The MIT License 6 | 7 | Copyright (c) 2010 ELC Technologies 8 | 9 | Permission is hereby granted, free of charge, to any person obtaining a copy 10 | of this software and associated documentation files (the "Software"), to deal 11 | in the Software without restriction, including without limitation the rights 12 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | copies of the Software, and to permit persons to whom the Software is 14 | furnished to do so, subject to the following conditions: 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. -------------------------------------------------------------------------------- /main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // DemoPhotoBoard 4 | // 5 | // Created by Collin Ruffenach on 10/12/10. 6 | // Copyright 2010 ELC Technologies. 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 | --------------------------------------------------------------------------------