Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Added slide menu, Facebook connectivity (needs work)

  • Loading branch information...
commit 012eb3e9730f7d4a64876efd48598fc30d58b70a 1 parent 4dc171c
@fqassem fqassem authored
Showing with 704 additions and 147 deletions.
  1. 0  .gitignore
  2. +97 −3 ar-project.xcodeproj/project.pbxproj
  3. BIN  ar-project/.DS_Store
  4. +29 −15 ar-project/ARViewController.h
  5. +144 −38 ar-project/ARViewController.m
  6. +9 −1 ar-project/AppDelegate.h
  7. +38 −25 ar-project/AppDelegate.m
  8. 0  ar-project/CLLocation+HeadingFromLocation.h
  9. 0  ar-project/CLLocation+HeadingFromLocation.m
  10. 0  ar-project/MapViewController.h
  11. 0  ar-project/MapViewController.m
  12. +22 −0 ar-project/Picture.h
  13. +24 −0 ar-project/Picture.m
  14. +37 −0 ar-project/SlideMenu.h
  15. +129 −0 ar-project/SlideMenu.m
  16. +9 −0 ar-project/ar-project-Info.plist
  17. 0  ar-project/ar-project-Prefix.pch
  18. 0  ar-project/brooks_hall_1936.jpg
  19. +4 −4 ar-project/data.plist
  20. 0  ar-project/en.lproj/InfoPlist.strings
  21. +162 −61 ar-project/en.lproj/MainStoryboard_iPad.storyboard
  22. 0  ar-project/en.lproj/MainStoryboard_iPhone.storyboard
  23. 0  ar-project/main.m
  24. 0  ar-project/tab_ar.png
  25. 0  ar-project/tab_ar@2x.png
  26. 0  ar-project/tab_list.png
  27. 0  ar-project/tab_list@2x.png
  28. 0  ar-project/tab_map.png
  29. 0  ar-project/tab_map@2x.png
View
0  .gitignore 100644 → 100755
File mode changed
View
100 ar-project.xcodeproj/project.pbxproj 100644 → 100755
@@ -7,6 +7,10 @@
objects = {
/* Begin PBXBuildFile section */
+ CE6DACA5158CE7AC0030158A /* SlideMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6DACA4158CE7AC0030158A /* SlideMenu.m */; };
+ CE6E5A15158EB0E300752FE5 /* FBDialog.bundle in Resources */ = {isa = PBXBuildFile; fileRef = CE6E5A08158EB0E300752FE5 /* FBDialog.bundle */; };
+ CE6E5A16158EB0E300752FE5 /* libfacebook_ios_sdk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE6E5A0E158EB0E300752FE5 /* libfacebook_ios_sdk.a */; };
+ CE6E5A6B158EC95B00752FE5 /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CE6E5A6A158EC95B00752FE5 /* libxml2.dylib */; };
DD0E2C2C157EC2B700F3AAF9 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD0E2C2B157EC2B700F3AAF9 /* UIKit.framework */; };
DD0E2C2E157EC2B700F3AAF9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD0E2C2D157EC2B700F3AAF9 /* Foundation.framework */; };
DD0E2C30157EC2B700F3AAF9 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD0E2C2F157EC2B700F3AAF9 /* CoreGraphics.framework */; };
@@ -24,6 +28,7 @@
DD0E2C6A157EC95000F3AAF9 /* ARViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DD0E2C69157EC95000F3AAF9 /* ARViewController.m */; };
DD0E2C6C157ECA1900F3AAF9 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD0E2C6B157ECA1900F3AAF9 /* AVFoundation.framework */; };
DD0E2C6F157ECBB200F3AAF9 /* brooks_hall_1936.jpg in Resources */ = {isa = PBXBuildFile; fileRef = DD0E2C6E157ECBB200F3AAF9 /* brooks_hall_1936.jpg */; };
+ DD34EA2115894FFC00740B4C /* Picture.m in Sources */ = {isa = PBXBuildFile; fileRef = DD34EA2015894FFC00740B4C /* Picture.m */; };
DD79FF24158188C2001597D0 /* CLLocation+HeadingFromLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = DD79FF23158188C2001597D0 /* CLLocation+HeadingFromLocation.m */; };
DD847ADA157FD2C100855FEA /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD847AD9157FD2C100855FEA /* CoreLocation.framework */; };
DDAC61971587BB2300D2E484 /* data.plist in Resources */ = {isa = PBXBuildFile; fileRef = DDAC61961587BB2300D2E484 /* data.plist */; };
@@ -32,6 +37,24 @@
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
+ CE6DACA3158CE7AC0030158A /* SlideMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlideMenu.h; sourceTree = "<group>"; };
+ CE6DACA4158CE7AC0030158A /* SlideMenu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SlideMenu.m; sourceTree = "<group>"; };
+ CE6E5A06158EB0E300752FE5 /* Facebook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Facebook.h; sourceTree = "<group>"; };
+ CE6E5A07158EB0E300752FE5 /* FBConnect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBConnect.h; sourceTree = "<group>"; };
+ CE6E5A08158EB0E300752FE5 /* FBDialog.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = FBDialog.bundle; sourceTree = "<group>"; };
+ CE6E5A09158EB0E300752FE5 /* FBDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBDialog.h; sourceTree = "<group>"; };
+ CE6E5A0A158EB0E300752FE5 /* FBFrictionlessRequestSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBFrictionlessRequestSettings.h; sourceTree = "<group>"; };
+ CE6E5A0B158EB0E300752FE5 /* FBLoginDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBLoginDialog.h; sourceTree = "<group>"; };
+ CE6E5A0C158EB0E300752FE5 /* FBRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBRequest.h; sourceTree = "<group>"; };
+ CE6E5A0D158EB0E300752FE5 /* JSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSON.h; sourceTree = "<group>"; };
+ CE6E5A0E158EB0E300752FE5 /* libfacebook_ios_sdk.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libfacebook_ios_sdk.a; sourceTree = "<group>"; };
+ CE6E5A0F158EB0E300752FE5 /* NSObject+SBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+SBJSON.h"; sourceTree = "<group>"; };
+ CE6E5A10158EB0E300752FE5 /* NSString+SBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+SBJSON.h"; sourceTree = "<group>"; };
+ CE6E5A11158EB0E300752FE5 /* SBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJSON.h; sourceTree = "<group>"; };
+ CE6E5A12158EB0E300752FE5 /* SBJsonBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonBase.h; sourceTree = "<group>"; };
+ CE6E5A13158EB0E300752FE5 /* SBJsonParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonParser.h; sourceTree = "<group>"; };
+ CE6E5A14158EB0E300752FE5 /* SBJsonWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonWriter.h; sourceTree = "<group>"; };
+ CE6E5A6A158EC95B00752FE5 /* libxml2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.dylib; path = usr/lib/libxml2.dylib; sourceTree = SDKROOT; };
DD0E2C27157EC2B700F3AAF9 /* ar-project.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ar-project.app"; sourceTree = BUILT_PRODUCTS_DIR; };
DD0E2C2B157EC2B700F3AAF9 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
DD0E2C2D157EC2B700F3AAF9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
@@ -54,6 +77,8 @@
DD0E2C69157EC95000F3AAF9 /* ARViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARViewController.m; sourceTree = "<group>"; };
DD0E2C6B157ECA1900F3AAF9 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
DD0E2C6E157ECBB200F3AAF9 /* brooks_hall_1936.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = brooks_hall_1936.jpg; sourceTree = "<group>"; };
+ DD34EA1F15894FFC00740B4C /* Picture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Picture.h; sourceTree = "<group>"; };
+ DD34EA2015894FFC00740B4C /* Picture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Picture.m; sourceTree = "<group>"; };
DD79FF22158188C2001597D0 /* CLLocation+HeadingFromLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CLLocation+HeadingFromLocation.h"; sourceTree = "<group>"; };
DD79FF23158188C2001597D0 /* CLLocation+HeadingFromLocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CLLocation+HeadingFromLocation.m"; sourceTree = "<group>"; };
DD847AD9157FD2C100855FEA /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };
@@ -68,21 +93,47 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ CE6E5A6B158EC95B00752FE5 /* libxml2.dylib in Frameworks */,
DDD116FB1587C3F900490B53 /* MapKit.framework in Frameworks */,
DD847ADA157FD2C100855FEA /* CoreLocation.framework in Frameworks */,
DD0E2C6C157ECA1900F3AAF9 /* AVFoundation.framework in Frameworks */,
DD0E2C2C157EC2B700F3AAF9 /* UIKit.framework in Frameworks */,
DD0E2C2E157EC2B700F3AAF9 /* Foundation.framework in Frameworks */,
DD0E2C30157EC2B700F3AAF9 /* CoreGraphics.framework in Frameworks */,
+ CE6E5A16158EB0E300752FE5 /* libfacebook_ios_sdk.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ CE6E5A05158EB0E300752FE5 /* facebook-ios-sdk */ = {
+ isa = PBXGroup;
+ children = (
+ CE6E5A06158EB0E300752FE5 /* Facebook.h */,
+ CE6E5A07158EB0E300752FE5 /* FBConnect.h */,
+ CE6E5A08158EB0E300752FE5 /* FBDialog.bundle */,
+ CE6E5A09158EB0E300752FE5 /* FBDialog.h */,
+ CE6E5A0A158EB0E300752FE5 /* FBFrictionlessRequestSettings.h */,
+ CE6E5A0B158EB0E300752FE5 /* FBLoginDialog.h */,
+ CE6E5A0C158EB0E300752FE5 /* FBRequest.h */,
+ CE6E5A0D158EB0E300752FE5 /* JSON.h */,
+ CE6E5A0E158EB0E300752FE5 /* libfacebook_ios_sdk.a */,
+ CE6E5A0F158EB0E300752FE5 /* NSObject+SBJSON.h */,
+ CE6E5A10158EB0E300752FE5 /* NSString+SBJSON.h */,
+ CE6E5A11158EB0E300752FE5 /* SBJSON.h */,
+ CE6E5A12158EB0E300752FE5 /* SBJsonBase.h */,
+ CE6E5A13158EB0E300752FE5 /* SBJsonParser.h */,
+ CE6E5A14158EB0E300752FE5 /* SBJsonWriter.h */,
+ );
+ name = "facebook-ios-sdk";
+ path = "../../../facebook-ios-sdk/lib/facebook-ios-sdk";
+ sourceTree = "<group>";
+ };
DD0E2C1C157EC2B600F3AAF9 = {
isa = PBXGroup;
children = (
+ CE6E5A6A158EC95B00752FE5 /* libxml2.dylib */,
DD0E2C31157EC2B700F3AAF9 /* ar-project */,
DD0E2C2A157EC2B700F3AAF9 /* Frameworks */,
DD0E2C28157EC2B700F3AAF9 /* Products */,
@@ -113,18 +164,23 @@
DD0E2C31157EC2B700F3AAF9 /* ar-project */ = {
isa = PBXGroup;
children = (
+ CE6E5A05158EB0E300752FE5 /* facebook-ios-sdk */,
DD0E2C62157EC51500F3AAF9 /* assets */,
DD0E2C3A157EC2B700F3AAF9 /* AppDelegate.h */,
DD0E2C3B157EC2B700F3AAF9 /* AppDelegate.m */,
+ DD79FF22158188C2001597D0 /* CLLocation+HeadingFromLocation.h */,
+ DD79FF23158188C2001597D0 /* CLLocation+HeadingFromLocation.m */,
DD0E2C3D157EC2B700F3AAF9 /* MainStoryboard_iPhone.storyboard */,
DD0E2C40157EC2B700F3AAF9 /* MainStoryboard_iPad.storyboard */,
+ CE6DACA3158CE7AC0030158A /* SlideMenu.h */,
+ CE6DACA4158CE7AC0030158A /* SlideMenu.m */,
DD0E2C68157EC95000F3AAF9 /* ARViewController.h */,
DD0E2C69157EC95000F3AAF9 /* ARViewController.m */,
- DD0E2C32157EC2B700F3AAF9 /* Supporting Files */,
- DD79FF22158188C2001597D0 /* CLLocation+HeadingFromLocation.h */,
- DD79FF23158188C2001597D0 /* CLLocation+HeadingFromLocation.m */,
DDAC61991587C02600D2E484 /* MapViewController.h */,
DDAC619A1587C02600D2E484 /* MapViewController.m */,
+ DD34EA1F15894FFC00740B4C /* Picture.h */,
+ DD34EA2015894FFC00740B4C /* Picture.m */,
+ DD0E2C32157EC2B700F3AAF9 /* Supporting Files */,
);
path = "ar-project";
sourceTree = "<group>";
@@ -232,6 +288,7 @@
DD0E2C61157EC50900F3AAF9 /* tab_list@2x.png in Resources */,
DD0E2C6F157ECBB200F3AAF9 /* brooks_hall_1936.jpg in Resources */,
DDAC61971587BB2300D2E484 /* data.plist in Resources */,
+ CE6E5A15158EB0E300752FE5 /* FBDialog.bundle in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -247,6 +304,8 @@
DD0E2C6A157EC95000F3AAF9 /* ARViewController.m in Sources */,
DD79FF24158188C2001597D0 /* CLLocation+HeadingFromLocation.m in Sources */,
DDAC619B1587C02600D2E484 /* MapViewController.m in Sources */,
+ DD34EA2115894FFC00740B4C /* Picture.m in Sources */,
+ CE6DACA5158CE7AC0030158A /* SlideMenu.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -300,6 +359,10 @@
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ HEADER_SEARCH_PATHS = (
+ "$(SDKROOT)/usr/include/libxml2",
+ "\n$(SDKROOT)/usr/include/libxml2",
+ );
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -319,6 +382,10 @@
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ HEADER_SEARCH_PATHS = (
+ "$(SDKROOT)/usr/include/libxml2",
+ "\n$(SDKROOT)/usr/include/libxml2",
+ );
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
SDKROOT = iphoneos;
@@ -330,10 +397,23 @@
DD0E2C54157EC2B700F3AAF9 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ CODE_SIGN_IDENTITY = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "ar-project/ar-project-Prefix.pch";
INFOPLIST_FILE = "ar-project/ar-project-Info.plist";
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(SRCROOT)/../facebook-ios-sdk/build/facebook-ios-sdk.build/Release-iphoneos/facebook-ios-sdk.build/Objects-normal/armv6\"",
+ "\"$(SRCROOT)/../facebook-ios-sdk/build/facebook-ios-sdk.build/Release-iphoneos/facebook-ios-sdk.build/Objects-normal/armv7\"",
+ "\"$(SRCROOT)/../facebook-ios-sdk/build/Release-iphoneos\"",
+ "\"$(SRCROOT)/../facebook-ios-sdk/build/Release-iphonesimulator\"",
+ "\"$(SRCROOT)/../facebook-ios-sdk/lib/facebook-ios-sdk\"",
+ "\"$(SRCROOT)/../../facebook-ios-sdk/lib/facebook-ios-sdk\"",
+ "\"$(SRCROOT)/../bengottlieb-Twitter-OAuth-iPhone-d26af5a/Twitter+OAuth/Libraries & Headers\"",
+ );
PRODUCT_NAME = "$(TARGET_NAME)";
+ "PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
WRAPPER_EXTENSION = app;
};
name = Debug;
@@ -341,10 +421,24 @@
DD0E2C55157EC2B700F3AAF9 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ CODE_SIGN_IDENTITY = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "ar-project/ar-project-Prefix.pch";
INFOPLIST_FILE = "ar-project/ar-project-Info.plist";
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(SRCROOT)/../facebook-ios-sdk/build/facebook-ios-sdk.build/Release-iphoneos/facebook-ios-sdk.build/Objects-normal/armv6\"",
+ "\"$(SRCROOT)/../facebook-ios-sdk/build/facebook-ios-sdk.build/Release-iphoneos/facebook-ios-sdk.build/Objects-normal/armv7\"",
+ "\"$(SRCROOT)/../facebook-ios-sdk/build/Release-iphoneos\"",
+ "\"$(SRCROOT)/../facebook-ios-sdk/build/Release-iphonesimulator\"",
+ "\"$(SRCROOT)/../facebook-ios-sdk/lib/facebook-ios-sdk\"",
+ "\"$(SRCROOT)/../../facebook-ios-sdk/lib/facebook-ios-sdk\"",
+ "\"$(SRCROOT)/../bengottlieb-Twitter-OAuth-iPhone-d26af5a/Twitter+OAuth/Libraries & Headers\"",
+ );
PRODUCT_NAME = "$(TARGET_NAME)";
+ "PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
+ VALIDATE_PRODUCT = NO;
WRAPPER_EXTENSION = app;
};
name = Release;
View
BIN  ar-project/.DS_Store
Binary file not shown
View
44 ar-project/ARViewController.h 100644 → 100755
@@ -10,38 +10,52 @@
#import <CoreLocation/CoreLocation.h>
#import <UIKit/UIKit.h>
-#import "CLLocation+HeadingFromLocation.h"
+#import "AppDelegate.h"
+#import "Picture.h"
+#import "SlideMenu.h"
-@interface ARViewController : UIViewController <CLLocationManagerDelegate> {
+
+
+@interface ARViewController : UIViewController <CLLocationManagerDelegate>
+{
AVCaptureSession *captureSession;
- UIView* cameraView;
- UIImageView* imageView;
- UISlider* slider;
+ UIView *cameraView;
+ UIView *radarView;
+ NSMutableArray *radarViews;
+ NSMutableArray *pictures;
+ UIImageView *imageView;
+ UISlider *slider;
+ SlideMenu* slideMenu;
CLLocationManager *locationManager;
- UILabel *headingLabel;
- UILabel *bearingLabel;
-
CLLocation *location;
CLHeading *heading;
+ // Temporary
+ UILabel *headingLabel;
+ UILabel *coordinatesLabel;
UIView *point0;
- UIView *point1;
- UIView *point2;
}
@property (nonatomic, retain) IBOutlet UIView *cameraView;
-@property (nonatomic, retain) IBOutlet UIImageView* imageView;
-@property (nonatomic, retain) IBOutlet UISlider* slider;
+@property (nonatomic, retain) IBOutlet UIView *radarView;
+@property (nonatomic, retain) IBOutlet UIImageView *imageView;
+@property (nonatomic, retain) IBOutlet UISlider *slider;
+@property (nonatomic, retain) IBOutlet SlideMenu *slideMenu;
+
+@property (nonatomic, retain) CLLocation *location;
+@property (nonatomic, retain) CLHeading *heading;
+
+// Temporary
@property (nonatomic, retain) IBOutlet UILabel *headingLabel;
-@property (nonatomic, retain) IBOutlet UILabel *bearingLabel;
+@property (nonatomic, retain) IBOutlet UILabel *coordinatesLabel;
@property (nonatomic, retain) IBOutlet UIView *point0;
-@property (nonatomic, retain) IBOutlet UIView *point1;
-@property (nonatomic, retain) IBOutlet UIView *point2;
-(IBAction) sliderChanged:(id)sender;
+-(IBAction) captureView:(id)sender;
- (void)initCamera;
+-(void)touchMenu;
@end
View
182 ar-project/ARViewController.m 100644 → 100755
@@ -15,22 +15,28 @@ @interface ARViewController ()
@implementation ARViewController
@synthesize cameraView = _cameraView;
+@synthesize radarView = _radarView;
@synthesize imageView = _imageView;
@synthesize slider = _slider;
-@synthesize headingLabel = _headingLabel;
-@synthesize bearingLabel = _bearingLabel;
+@synthesize location = _location;
+@synthesize heading = _heading;
+@synthesize slideMenu = _slideMenu;
-@synthesize point1 = _point1;
-@synthesize point2 = _point2;
+@synthesize headingLabel = _headingLabel;
+@synthesize coordinatesLabel = _coordinatesLabel;
+@synthesize point0 = _point0;
- (void)viewDidLoad
-{
+{
[super viewDidLoad];
-
[self initLocationServices];
[self initCamera];
+ [self initRadar];
}
+
+
+
- (void)initCamera {
captureSession = [[AVCaptureSession alloc] init];
@@ -66,6 +72,88 @@ -(IBAction) sliderChanged:(id)sender {
[_imageView setAlpha:_slider.value];
}
+
+
+-(void)touchMenu
+{
+ NSLog(@"touched");
+}
+
+-(IBAction) captureView:(id)sender {
+ // http://developer.apple.com/library/ios/#qa/qa1703/_index.html
+ // Create a graphics context with the target size
+ // On iOS 4 and later, use UIGraphicsBeginImageContextWithOptions to take the scale into consideration
+ // On iOS prior to 4, fall back to use UIGraphicsBeginImageContext
+ // Create a graphics context with the target size
+ // On iOS 4 and later, use UIGraphicsBeginImageContextWithOptions to take the scale into consideration
+ // On iOS prior to 4, fall back to use UIGraphicsBeginImageContext
+
+ // camera image size extended to screen ratio so it captures the entire screen
+ //
+ CGSize imageSize = CGSizeMake( (CGFloat)480.0, (CGFloat)720.0 );
+
+ if (NULL != UIGraphicsBeginImageContextWithOptions)
+ UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0);
+ else
+ UIGraphicsBeginImageContext(imageSize);
+
+ CGContextRef context = UIGraphicsGetCurrentContext();
+
+ // Start with the view...
+ //
+ CGContextSaveGState(context);
+ CGContextTranslateCTM(context, [self.view center].x, [self.view center].y);
+ CGContextConcatCTM(context, [self.view transform]);
+ CGContextTranslateCTM(context,-[self.view bounds].size.width * [[self.view layer] anchorPoint].x,-[self.view bounds].size.height * [[self.view layer] anchorPoint].y);
+ [[self.view layer] renderInContext:context];
+ CGContextRestoreGState(context);
+
+ // ...then repeat for every subview from back to front
+ //
+ for (UIView *subView in [self.view subviews])
+ {
+ if ( [subView respondsToSelector:@selector(screen)] )
+ if ( [(UIWindow *)subView screen] == [UIScreen mainScreen] )
+ continue;
+
+ CGContextSaveGState(context);
+ CGContextTranslateCTM(context, [subView center].x, [subView center].y);
+ CGContextConcatCTM(context, [subView transform]);
+ CGContextTranslateCTM(context,-[subView bounds].size.width * [[subView layer] anchorPoint].x,-[subView bounds].size.height * [[subView layer] anchorPoint].y);
+ [[subView layer] renderInContext:context];
+ CGContextRestoreGState(context);
+ }
+
+ UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); // autoreleased image
+
+ UIGraphicsEndImageContext();
+
+ UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
+
+
+
+ NSData* imageData = UIImageJPEGRepresentation(image, 90);
+ Facebook* fb = [(AppDelegate *)[[UIApplication sharedApplication] delegate] facebook ];
+
+ NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys:[fb accessToken],@"access_token",
+ @"OMG!", @"LOOK!",
+ imageData, @"source",
+ nil];
+ [fb requestWithGraphPath:@"me"
+ andParams:params
+ andHttpMethod:@"POST"
+ andDelegate:self];
+
+
+
+
+
+}
+
+- (void) image:(UIImage*)image didFinishSavingWithError:(NSError *)error contextInfo:(NSDictionary*)info {
+
+}
+
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
@@ -91,6 +179,8 @@ -(void)initLocationServices {
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
location = newLocation;
+ //Override Location to: 35.78528, -78.66330 (Pullen Rd.)
+ location = [[CLLocation alloc] initWithLatitude:35.78528 longitude:-78.66330];
[self redraw];
}
@@ -100,43 +190,41 @@ - (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading
}
- (void)redraw {
- CLLocation* location1 = [[CLLocation alloc] initWithLatitude:35.78453 longitude:-78.66633];
- //Bell tower 35.78620, -78.66351
- //35.78448, -78.66503
- //35.78453, -78.66633
- //35.78424, -78.66538
-
-
-
- CLLocation* location2 = [[CLLocation alloc] initWithLatitude:35.78424 longitude:-78.66538];
-
- CLLocationDistance distance1 = [location distanceFromLocation:location1];
- float bearing1 = [location bearingFromLocation:location1];
- CLLocationDistance distance2 = [location distanceFromLocation:location2];
- float bearing2 = [location bearingFromLocation:location2];
- NSLog(@"PICTURE: latitude %+.6f, longitude %+.6f", location1.coordinate.latitude, location1.coordinate.longitude);
- NSLog(@"IPAD: latitude %+.6f, longitude %+.6f", location.coordinate.latitude, location.coordinate.longitude);
- NSLog(@"Distance: %lf", distance1);
- NSLog(@"Bearing: %+.6f DEG", bearing1);
- NSLog(@"Distance: %lf", distance2);
- NSLog(@"Bearing: %+.6f DEG", bearing2);
- [_bearingLabel setText:[NSString stringWithFormat:@"%+.0f°", bearing1]];
+ for (int i = 0; i<(int)radarViews.count; i++) {
+ UIView *picture_view = [radarViews objectAtIndex:i];
+ Picture *picture = [pictures objectAtIndex:i];
+
+// if ([location distanceFromLocation:picture.location] < 75) {
+ CLLocationDistance distance = [location distanceFromLocation:picture.location];
+ float bearing = [location bearingFromLocation:picture.location];
+
+ float x = sin(degreesToRadians(heading.trueHeading - bearing)) * distance / 2;
+ float y = cos(degreesToRadians(heading.trueHeading - bearing)) * distance / 2;
+
+ picture_view.frame = CGRectMake(_point0.frame.origin.x - round(x), _point0.frame.origin.y - round(y), 10.0, 10.0);
+// }
+ }
- if (heading.headingAccuracy > 0) {
- NSLog(@"%@", [NSString stringWithFormat:@"Magnetic Heading: %f", heading.magneticHeading]);
- NSLog(@"%@", [NSString stringWithFormat:@"True Heading: %f", heading.trueHeading]);
- [_headingLabel setText:[NSString stringWithFormat:@"%+.0f°", heading.trueHeading]];
+ Picture *picture = [pictures objectAtIndex:1];
+ CLLocationDistance distance = [location distanceFromLocation:picture.location];
+ float bearing = [location bearingFromLocation:picture.location];
+ float angle = 34.1;
+ float zero = heading.trueHeading - angle / 2;
+ if (zero < bearing && bearing < (zero + angle)) {
+ float x = round(((bearing - zero) * 768 / angle) - 768 / 2);
+ _imageView.frame = CGRectMake(x, _imageView.frame.origin.y, _imageView.frame.size.width, _imageView.frame.size.height);
+ } else {
+ float x = 1024;
+ _imageView.frame = CGRectMake(x, _imageView.frame.origin.y, _imageView.frame.size.width, _imageView.frame.size.height);
}
- //X = SIN(RADIANS(ANGLE))*DISTANCE
- float x1 = sin(degreesToRadians(heading.trueHeading - bearing1)) * distance1;
- float y1 = cos(degreesToRadians(heading.trueHeading - bearing1)) * distance1;
- _point1.frame = CGRectMake(_point0.frame.origin.x - round(x1), _point0.frame.origin.y - round(y1), 10.0, 10.0);
- float x2 = sin(degreesToRadians(heading.trueHeading - bearing2)) * distance2;
- float y2 = cos(degreesToRadians(heading.trueHeading - bearing2)) * distance2;
- _point2.frame = CGRectMake(_point0.frame.origin.x - round(x2), _point0.frame.origin.y - round(y2), 10.0, 10.0);
+ [_coordinatesLabel setText:[NSString stringWithFormat:@"%+.4f, %+.4f°", location.coordinate.latitude, location.coordinate.longitude]];
+
+ if (heading.headingAccuracy > 0) {
+ [_headingLabel setText:[NSString stringWithFormat:@"%.0f°", heading.trueHeading]];
+ }
}
@@ -144,4 +232,22 @@ - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *
}
+#pragma Radar
+- (void)initRadar {
+ AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
+
+ pictures = [[NSMutableArray alloc] initWithCapacity:[[appDelegate.data allValues] count]];
+ radarViews = [[NSMutableArray alloc] initWithCapacity:[[appDelegate.data allValues] count]];
+ for (NSDictionary *dictionary in [appDelegate.data allValues]) {
+ Picture *picture = [[Picture alloc] initWithDictionary:dictionary];
+ [pictures addObject:picture];
+
+ UIView *picture_view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10.0, 10.0)];
+ [picture_view setBackgroundColor:[UIColor redColor]];
+
+ [radarViews addObject:picture_view];
+ [_radarView addSubview:picture_view];
+ }
+}
+
@end
View
10 ar-project/AppDelegate.h 100644 → 100755
@@ -7,12 +7,20 @@
//
#import <UIKit/UIKit.h>
+#import "FBConnect.h"
-@interface AppDelegate : UIResponder <UIApplicationDelegate> {
+#import "CLLocation+HeadingFromLocation.h"
+
+@interface AppDelegate : UIResponder <UIApplicationDelegate, FBSessionDelegate> {
NSDictionary *data;
+ Facebook* facebook;
}
+
+
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) NSDictionary *data;
+@property (nonatomic, retain) Facebook* facebook;
@end
+
View
63 ar-project/AppDelegate.m 100644 → 100755
@@ -3,6 +3,7 @@
// ar-project
//
// Created by Leonel Galan on 6/5/12.
+// Modified by Fadi Qassem
// Copyright (c) 2012 NCSU. All rights reserved.
//
@@ -12,39 +13,51 @@ @implementation AppDelegate
@synthesize window = _window;
@synthesize data = _data;
+@synthesize facebook;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
+ facebook = [[Facebook alloc] initWithAppId:@"351841488223055" andDelegate:self];
+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+ if ([defaults objectForKey:@"FBAccessTokenKey"]
+ && [defaults objectForKey:@"FBExpirationDateKey"]) {
+ facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
+ facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
+ }
+
+ //check for valid session
+ if (![facebook isSessionValid]) {
+ NSArray *permissions = [[NSArray alloc] initWithObjects:
+ @"user_likes",
+ @"read_stream",
+ nil];
+ [facebook authorize:permissions];
+ [facebook authorize:nil];
+ }
+
+
_data = [[NSDictionary alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"]];
-
return YES;
+
}
-
-- (void)applicationWillResignActive:(UIApplication *)application
-{
- // 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.
- // 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.
-}
-
-- (void)applicationDidEnterBackground:(UIApplication *)application
-{
- // 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.
- // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
-}
-
-- (void)applicationWillEnterForeground:(UIApplication *)application
-{
- // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+
+ // Pre iOS 4.2 support
+- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
+ return [facebook handleOpenURL:url];
}
-
-- (void)applicationDidBecomeActive:(UIApplication *)application
-{
- // 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.
+
+ // For iOS 4.2+ support
+- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
+sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
+ return [facebook handleOpenURL:url];
}
-- (void)applicationWillTerminate:(UIApplication *)application
-{
- // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+- (void)fbDidLogin {
+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+ [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
+ [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
+ [defaults synchronize];
+
}
-
@end
+
View
0  ar-project/CLLocation+HeadingFromLocation.h 100644 → 100755
File mode changed
View
0  ar-project/CLLocation+HeadingFromLocation.m 100644 → 100755
File mode changed
View
0  ar-project/MapViewController.h 100644 → 100755
File mode changed
View
0  ar-project/MapViewController.m 100644 → 100755
File mode changed
View
22 ar-project/Picture.h
@@ -0,0 +1,22 @@
+//
+// Picture.h
+// ar-project
+//
+// Created by Leonel Galan on 6/13/12.
+// Copyright (c) 2012 NCSU. All rights reserved.
+//
+
+#import <CoreLocation/CoreLocation.h>
+#import <Foundation/Foundation.h>
+
+#import "AppDelegate.h"
+
+@interface Picture : NSObject {
+ CLLocation *location;
+}
+
+@property (nonatomic, retain) CLLocation *location;
+
+- (id)initWithDictionary:(NSDictionary *)dictionary;
+
+@end
View
24 ar-project/Picture.m
@@ -0,0 +1,24 @@
+//
+// Picture.m
+// ar-project
+//
+// Created by Leonel Galan on 6/13/12.
+// Copyright (c) 2012 NCSU. All rights reserved.
+//
+
+#import "Picture.h"
+
+@implementation Picture
+
+@synthesize location = _location;
+
+- (id)initWithDictionary:(NSDictionary *)dictionary {
+ if (self = [super init]) {
+ self.location = [[CLLocation alloc]
+ initWithLatitude:[((NSNumber *)[dictionary objectForKey:@"latitude"]) doubleValue]
+ longitude:[((NSNumber *)[dictionary objectForKey:@"longitude"]) doubleValue]];
+ }
+ return self;
+}
+
+@end
View
37 ar-project/SlideMenu.h
@@ -0,0 +1,37 @@
+//
+// SlideMenu.h
+// ar-project
+//
+// Created by Lion User on 16/06/2012.
+// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+
+/*
+Easy navigation for the AR view, slide out at thumb level
+*/
+
+@interface SlideMenu : UIView
+{
+ UIButton* listNav;
+ UIButton* mapNav;
+ BOOL isOpen;
+
+}
+
+@property (nonatomic, retain) IBOutlet UIButton* listNav;
+@property (nonatomic, retain) IBOutlet UIButton* mapNav;
+@property (nonatomic, retain) IBOutlet UIView* menuView;
+@property (nonatomic, retain) IBOutlet UISwipeGestureRecognizer* swipeRight;
+@property (nonatomic, retain) IBOutlet UISwipeGestureRecognizer* swipeLeft;
+@property (nonatomic, retain) IBOutlet UITapGestureRecognizer* tapMenu;
+
+
+
+-(IBAction)handleMenu:(UIGestureRecognizer*)sender;
+-(IBAction)buttonTouched:(id)sender;
+
+
+@end
View
129 ar-project/SlideMenu.m
@@ -0,0 +1,129 @@
+//
+// SlideMenu.m
+// ar-project
+//
+// Created by Lion User on 16/06/2012.
+// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
+//
+
+#import "SlideMenu.h"
+
+@implementation SlideMenu
+
+
+@synthesize mapNav = _mapNav;
+@synthesize listNav = _listNav;
+@synthesize menuView = _menuView;
+@synthesize swipeLeft = _swipeLeft;
+@synthesize swipeRight = _swipeRight;
+@synthesize tapMenu = _tapMenu;
+
+-(void)viewDidLoad
+{
+ isOpen = NO;
+
+}
+
+
+-(void)buttonTouched:(id)sender
+{
+ NSLog(@"button touched");
+}
+
+- (id)initWithFrame:(CGRect)frame
+{
+ self = [super initWithFrame:frame];
+ float delta = self.frame.size.height;
+ if (self) {
+
+ self.frame = CGRectOffset(self.frame, -delta, 0.0);
+
+ }
+ return self;
+}
+
+- (BOOL)buttonPressed:(UIGestureRecognizer *) gestureRecognizer {
+
+ // Get the position of the point tapped in the window co-ordinate system
+ CGPoint tapPoint = [gestureRecognizer locationInView:nil];
+
+ // If there are no buttons beneath this tap then move to the next page if near the page edge
+ UIView *viewAtBottomOfHeirachy = [self.window hitTest:tapPoint withEvent:nil];
+ if ([viewAtBottomOfHeirachy isKindOfClass:[UIButton class]]) {
+ return NO;
+
+ }
+ return YES;
+}
+
+
+-(IBAction)handleMenu:(UIGestureRecognizer*)sender
+{
+ if(![self buttonPressed:sender])
+ {
+ NSLog(@"button!");
+ return;
+ }
+
+ /*
+ if (((touch.view == mapNav) && (sender == _tapMenu)) || ((touch.view == mapNav) && (sender == _tapMenu)))
+ {
+ //chagneviews
+ }
+ */
+
+ // get the height of the search bar
+ float delta = self.frame.size.width;
+
+ if(sender == _swipeRight && isOpen == NO)
+ { //swiped right
+ [self animate:delta];
+ NSLog(@"swipe right");
+
+ }
+ else if(sender == _swipeLeft && isOpen == YES)
+ { //swiped left
+ [self animate:(-delta)];
+ NSLog(@"swipe left");
+
+ }
+ else {
+ //tapped
+
+ if(isOpen)
+ {
+ delta *= -1;
+ }
+ [self animate:delta];
+
+ }
+ }
+
+-(void)animate:(CGFloat)delta
+{
+ // run animation with duration of 0.7 second and no delay
+ [UIView animateWithDuration:0.7 delay: 0.0 options: UIViewAnimationOptionCurveEaseIn animations:^{
+ self.frame = CGRectOffset(self.frame, delta/5, 0.0); self.menuView.frame = CGRectOffset(self.menuView.frame, delta/2.5, 0.0);
+ }
+ completion:^(BOOL finished){
+ //if open, set to not open
+ if (isOpen){
+ isOpen = NO;
+ }
+ else {
+ isOpen = YES;
+ }
+ }];
+
+}
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect
+{
+ // Drawing code
+}
+*/
+
+@end
View
9 ar-project/ar-project-Info.plist 100644 → 100755
@@ -45,5 +45,14 @@
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
+ <key>CFBundleURLTypes</key>
+ <array>
+ <dict>
+ <key>CFBundleURLSchemes</key>
+ <array>
+ <string>fb351841488223055</string>
+ </array>
+ </dict>
+ </array>
</dict>
</plist>
View
0  ar-project/ar-project-Prefix.pch 100644 → 100755
File mode changed
View
0  ar-project/brooks_hall_1936.jpg 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
8 ar-project/data.plist 100644 → 100755
@@ -9,9 +9,9 @@
<key>description</key>
<string>College of Design</string>
<key>longitude</key>
- <real>-78.665167</real>
+ <real>-78.66448</real>
<key>latitude</key>
- <real>35.784289</real>
+ <real>35.78461</real>
</dict>
<key>2</key>
<dict>
@@ -20,9 +20,9 @@
<key>description</key>
<string>North Carolina State</string>
<key>longitude</key>
- <real>-78.665167</real>
+ <real>-78.66348000000001</real>
<key>latitude</key>
- <real>35.784289</real>
+ <real>35.78612</real>
</dict>
</dict>
</plist>
View
0  ar-project/en.lproj/InfoPlist.strings 100644 → 100755
File mode changed
View
223 ar-project/en.lproj/MainStoryboard_iPad.storyboard 100644 → 100755
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="2.0" toolsVersion="2541" systemVersion="11E53" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" initialViewController="4">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="1.1" toolsVersion="2182" systemVersion="11E53" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" initialViewController="4">
<dependencies>
- <deployment defaultVersion="1536" identifier="iOS"/>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="1875"/>
+ <deployment defaultVersion="1296" identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="1181"/>
</dependencies>
<scenes>
<!--Navigation Controller - AR-->
@@ -21,12 +21,28 @@
</objects>
<point key="canvasLocation" x="2201" y="-1163"/>
</scene>
+ <!--Navigation Controller - List-->
+ <scene sceneID="jAC-xj-6yl">
+ <objects>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="e9I-3i-vFJ" userLabel="First Responder" sceneMemberID="firstResponder"/>
+ <navigationController definesPresentationContext="YES" id="dpl-Ck-iOu" sceneMemberID="viewController">
+ <tabBarItem key="tabBarItem" title="List" image="tab_list.png" id="0jV-8A-5Lv"/>
+ <navigationBar key="navigationBar" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="UDS-UQ-hiy">
+ <autoresizingMask key="autoresizingMask"/>
+ </navigationBar>
+ <connections>
+ <segue destination="2" kind="relationship" relationship="rootViewController" id="jPe-jh-ftw"/>
+ </connections>
+ </navigationController>
+ </objects>
+ <point key="canvasLocation" x="2201" y="14"/>
+ </scene>
<!--View Controller - Map-->
<scene sceneID="11">
<objects>
<viewController id="2" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="17">
- <rect key="frame" x="0.0" y="20" width="768" height="955"/>
+ <rect key="frame" x="0.0" y="20" width="768" height="1004"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="20">
@@ -38,6 +54,7 @@
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
<tabBarItem key="tabBarItem" title="Map" image="tab_map.png" id="7"/>
+ <navigationItem key="navigationItem" id="6NN-bn-F65"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="10" sceneMemberID="firstResponder"/>
</objects>
@@ -60,6 +77,7 @@
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
<tabBarItem key="tabBarItem" title="List" image="tab_list.png" id="EFv-zb-L9P"/>
+ <navigationItem key="navigationItem" id="QRm-m3-bTF"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Fqc-R2-UkZ" sceneMemberID="firstResponder"/>
</objects>
@@ -77,8 +95,8 @@
</tabBar>
<connections>
<segue destination="qHI-Uz-ahh" kind="relationship" relationship="viewControllers" id="O2R-Lz-cix"/>
- <segue destination="2" kind="relationship" relationship="viewControllers" id="g0G-2j-u7w"/>
<segue destination="I8H-Mo-yxW" kind="relationship" relationship="viewControllers" id="gRp-kx-Lhx"/>
+ <segue destination="dpl-Ck-iOu" kind="relationship" relationship="viewControllers" id="UQo-UT-FCx"/>
</connections>
</tabBarController>
<placeholder placeholderIdentifier="IBFirstResponder" id="14" sceneMemberID="firstResponder"/>
@@ -96,74 +114,170 @@
<view userInteractionEnabled="NO" contentMode="scaleToFill" id="ITU-CJ-xQc">
<rect key="frame" x="0.0" y="0.0" width="768" height="911"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <imageView userInteractionEnabled="NO" alpha="0.60000000000000009" contentMode="scaleAspectFit" image="brooks_hall_1936.jpg" id="MQg-Rn-Cqq">
+ <rect key="frame" x="0.0" y="0.0" width="768" height="911"/>
+ <autoresizingMask key="autoresizingMask"/>
+ </imageView>
+ </subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ <gestureRecognizers/>
</view>
- <imageView userInteractionEnabled="NO" alpha="0.60000000000000009" contentMode="scaleAspectFit" image="brooks_hall_1936.jpg" id="MQg-Rn-Cqq">
- <rect key="frame" x="0.0" y="0.0" width="768" height="911"/>
- <autoresizingMask key="autoresizingMask"/>
- </imageView>
- <slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" id="xJr-pD-1ih">
- <rect key="frame" x="569" y="235" width="333" height="23"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <connections>
- <action selector="sliderChanged:" destination="dCJ-wZ-CwT" eventType="valueChanged" id="l9M-a1-tmt"/>
- </connections>
- </slider>
- <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" text="+000°" adjustsFontSizeToFit="NO" autoshrinkMode="none" id="agh-b4-2Tu">
- <rect key="frame" x="300" y="20" width="157" height="64"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <nil key="highlightedColor"/>
- <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
- <fontDescription key="fontDescription" type="system" pointSize="45"/>
- </label>
- <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" text="+000°" adjustsFontSizeToFit="NO" autoshrinkMode="none" id="kND-7S-iIl">
- <rect key="frame" x="450" y="20" width="148" height="64"/>
+ <view contentMode="scaleToFill" id="7qi-Cz-arD">
+ <rect key="frame" x="-90" y="375" width="187" height="152"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <nil key="highlightedColor"/>
- <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
- <fontDescription key="fontDescription" type="system" pointSize="45"/>
- </label>
- <view contentMode="scaleToFill" id="EIH-rv-MDx">
+ <subviews>
+ <view contentMode="scaleToFill" id="9d9-30-0rm" customClass="SlideMenu">
+ <rect key="frame" x="-9" y="0.0" width="151" height="152"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <subviews>
+ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="NVC-vR-dX0">
+ <rect key="frame" x="27" y="76" width="72" height="37"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <gestureRecognizers/>
+ <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+ <state key="normal" title="Map">
+ <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <state key="highlighted">
+ <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="buttonTouched:" destination="9d9-30-0rm" eventType="touchUpInside" id="I8K-wB-EIR"/>
+ <segue destination="2" kind="custom" id="p2w-Yq-Q7p"/>
+ </connections>
+ </button>
+ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="u8a-6Y-fTT">
+ <rect key="frame" x="27" y="20" width="72" height="37"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <gestureRecognizers/>
+ <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+ <state key="normal" title="List">
+ <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <state key="highlighted">
+ <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="buttonTouched:" destination="9d9-30-0rm" eventType="touchUpInside" id="90e-JN-z8T"/>
+ </connections>
+ </button>
+ <button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="AsR-zQ-MTK">
+ <rect key="frame" x="137" y="0.0" width="33" height="152"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+ <state key="normal">
+ <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <state key="highlighted">
+ <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ </button>
+ </subviews>
+ <color key="backgroundColor" cocoaTouchSystemColor="lightTextColor"/>
+ <gestureRecognizers/>
+ <connections>
+ <outlet property="listNav" destination="u8a-6Y-fTT" id="JfB-4g-WpC"/>
+ <outlet property="mapNav" destination="NVC-vR-dX0" id="VqA-l8-W8a"/>
+ <outlet property="menuView" destination="7qi-Cz-arD" id="sgJ-sh-RIR"/>
+ <outlet property="swipeLeft" destination="eqa-xg-4TX" id="v3s-b0-Cl4"/>
+ <outlet property="swipeRight" destination="qTG-2M-M8z" id="A5D-48-cfY"/>
+ <outlet property="tapMenu" destination="VZt-Wp-kTM" id="JOX-rt-g5G"/>
+ <outletCollection property="gestureRecognizers" destination="qTG-2M-M8z" id="dMH-ze-ssd"/>
+ <outletCollection property="gestureRecognizers" destination="eqa-xg-4TX" id="vQL-1h-CdC"/>
+ <outletCollection property="gestureRecognizers" destination="VZt-Wp-kTM" id="apv-27-pxj"/>
+ </connections>
+ </view>
+ </subviews>
+ <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
+ <gestureRecognizers/>
+ </view>
+ <view alpha="0.50000000000000011" contentMode="scaleToFill" id="EIH-rv-MDx">
<rect key="frame" x="607" y="10" width="151" height="150"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
- <view contentMode="scaleToFill" id="BdN-b4-5yC">
+ <view alpha="0.50000000000000011" contentMode="scaleToFill" id="BdN-b4-5yC">
<rect key="frame" x="70" y="70" width="10" height="10"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
- <view contentMode="scaleToFill" id="4gC-Bx-ROS">
- <rect key="frame" x="80" y="80" width="10" height="10"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <color key="backgroundColor" red="0.80000001190000003" green="1" blue="0.40000000600000002" alpha="1" colorSpace="calibratedRGB"/>
- </view>
- <view contentMode="scaleToFill" id="BiZ-aH-Txh">
- <rect key="frame" x="90" y="90" width="10" height="10"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <color key="backgroundColor" red="1" green="0.40000000596046448" blue="0.40000000596046448" alpha="1" colorSpace="calibratedRGB"/>
- </view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
</view>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="+000°" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="agh-b4-2Tu">
+ <rect key="frame" x="447" y="20" width="157" height="64"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <fontDescription key="fontDescription" type="system" pointSize="45"/>
+ <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="00.00000, 00.00000" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="yQd-Mi-c8C">
+ <rect key="frame" x="20" y="20" width="419" height="64"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <fontDescription key="fontDescription" type="system" pointSize="45"/>
+ <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" id="xJr-pD-1ih">
+ <rect key="frame" x="569" y="235" width="333" height="23"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <connections>
+ <action selector="sliderChanged:" destination="dCJ-wZ-CwT" eventType="valueChanged" id="l9M-a1-tmt"/>
+ </connections>
+ </slider>
+ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="3sC-Tw-Met">
+ <rect key="frame" x="683" y="418" width="75" height="75"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+ <state key="normal">
+ <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <state key="highlighted">
+ <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="captureView:" destination="dCJ-wZ-CwT" eventType="touchUpInside" id="9MK-yD-RIO"/>
+ </connections>
+ </button>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ <gestureRecognizers/>
</view>
<tabBarItem key="tabBarItem" title="" id="Brx-jL-P0c"/>
<navigationItem key="navigationItem" id="M19-en-RE3"/>
<connections>
- <outlet property="bearingLabel" destination="kND-7S-iIl" id="FuQ-6X-Yv7"/>
<outlet property="cameraView" destination="ITU-CJ-xQc" id="d97-rQ-kXd"/>
+ <outlet property="coordinatesLabel" destination="yQd-Mi-c8C" id="clm-Zf-hpA"/>
<outlet property="headingLabel" destination="agh-b4-2Tu" id="pC3-IZ-xs6"/>
<outlet property="imageView" destination="MQg-Rn-Cqq" id="FOd-f2-IkR"/>
<outlet property="point0" destination="BdN-b4-5yC" id="VhK-Uw-nV2"/>
- <outlet property="point1" destination="4gC-Bx-ROS" id="cwj-N3-qGP"/>
- <outlet property="point2" destination="BiZ-aH-Txh" id="XV2-WS-tbE"/>
+ <outlet property="radarView" destination="EIH-rv-MDx" id="hIQ-JP-fmj"/>
+ <outlet property="slideMenu" destination="9d9-30-0rm" id="coW-LO-vbv"/>
<outlet property="slider" destination="xJr-pD-1ih" id="Qpz-JU-uJ1"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="6Iy-8q-qnW" sceneMemberID="firstResponder"/>
+ <tapGestureRecognizer id="VZt-Wp-kTM">
+ <connections>
+ <action selector="handleMenu:" destination="9d9-30-0rm" id="kJ7-fg-FxC"/>
+ </connections>
+ </tapGestureRecognizer>
+ <swipeGestureRecognizer direction="right" id="qTG-2M-M8z" userLabel="SwipeRight">
+ <connections>
+ <action selector="handleMenu:" destination="9d9-30-0rm" id="BfB-1N-HXr"/>
+ </connections>
+ </swipeGestureRecognizer>
+ <swipeGestureRecognizer direction="left" id="eqa-xg-4TX" userLabel="SwipeLeft">
+ <connections>
+ <action selector="handleMenu:" destination="9d9-30-0rm" id="yDu-rg-1GP"/>
+ </connections>
+ </swipeGestureRecognizer>
</objects>
- <point key="canvasLocation" x="3221" y="-1163"/>
+ <point key="canvasLocation" x="3211" y="-1147"/>
</scene>
</scenes>
<resources>
@@ -172,25 +286,12 @@
<image name="tab_list.png" width="20" height="14"/>
<image name="tab_map.png" width="16" height="26"/>
</resources>
- <classes>
- <class className="ARViewController" superclassName="UIViewController">
- <source key="sourceIdentifier" type="project" relativePath="./Classes/ARViewController.h"/>
- <relationships>
- <relationship kind="action" name="sliderChanged:"/>
- <relationship kind="outlet" name="bearingLabel" candidateClass="UILabel"/>
- <relationship kind="outlet" name="cameraView" candidateClass="UIView"/>
- <relationship kind="outlet" name="headingLabel" candidateClass="UILabel"/>
- <relationship kind="outlet" name="imageView" candidateClass="UIImageView"/>
- <relationship kind="outlet" name="point0" candidateClass="UIView"/>
- <relationship kind="outlet" name="point1" candidateClass="UIView"/>
- <relationship kind="outlet" name="point2" candidateClass="UIView"/>
- <relationship kind="outlet" name="slider" candidateClass="UISlider"/>
- </relationships>
- </class>
- </classes>
<simulatedMetricsContainer key="defaultSimulatedMetrics">
<simulatedStatusBarMetrics key="statusBar" statusBarStyle="blackTranslucent"/>
<simulatedOrientationMetrics key="orientation"/>
<simulatedScreenMetrics key="destination"/>
</simulatedMetricsContainer>
+ <inferredMetricsTieBreakers>
+ <segue reference="p2w-Yq-Q7p"/>
+ </inferredMetricsTieBreakers>
</document>
View
0  ar-project/en.lproj/MainStoryboard_iPhone.storyboard 100644 → 100755
File mode changed
View
0  ar-project/main.m 100644 → 100755
File mode changed
View
0  ar-project/tab_ar.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  ar-project/tab_ar@2x.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  ar-project/tab_list.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  ar-project/tab_list@2x.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  ar-project/tab_map.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  ar-project/tab_map@2x.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Please sign in to comment.
Something went wrong with that request. Please try again.