Authored by Thomas Rasch

o Merge fixes

... ... @@ -27,6 +27,27 @@
#import "RMFoundation.h"
bool RMProjectedPointEqualToProjectedPoint(RMProjectedPoint point1, RMProjectedPoint point2)
{
return point1.easting == point2.easting && point2.northing == point2.northing;
}
bool RMProjectedRectInterectsProjectedRect(RMProjectedRect rect1, RMProjectedRect rect2)
{
double minEasting1 = rect1.origin.easting;
double maxEasting1 = rect1.origin.easting + rect1.size.width;
double minNorthing1 = rect1.origin.northing;
double maxNorthing1 = rect1.origin.northing + rect1.size.height;
double minEasting2 = rect2.origin.easting;
double maxEasting2 = rect2.origin.easting + rect2.size.width;
double minNorthing2 = rect2.origin.northing;
double maxNorthing2 = rect2.origin.northing + rect2.size.height;
return ((minEasting1 <= minEasting2 && minEasting2 <= maxEasting1) || (minEasting2 <= minEasting1 && minEasting1 <= maxEasting2))
&& ((minNorthing1 <= minNorthing2 && minNorthing2 <= maxNorthing1) || (minNorthing2 <= minNorthing1 && minNorthing1 <= maxNorthing2));
}
RMProjectedPoint RMScaleProjectedPointAboutPoint(RMProjectedPoint point, float factor, RMProjectedPoint pivot)
{
point.easting = (point.easting - pivot.easting) * factor + pivot.easting;
... ...
... ... @@ -28,6 +28,8 @@
#ifndef _RMFOUNDATION_H_
#define _RMFOUNDATION_H_
#include <stdbool.h>
/*! \struct RMProjectedPoint
\brief coordinates, in projected meters, paralleling CGPoint */
typedef struct {
... ... @@ -52,6 +54,11 @@ RMProjectedRect RMScaleProjectedRectAboutPoint(RMProjectedRect rect, float fact
RMProjectedPoint RMTranslateProjectedPointBy(RMProjectedPoint point, RMProjectedSize delta);
RMProjectedRect RMTranslateProjectedRectBy(RMProjectedRect rect, RMProjectedSize delta);
/// \brief The function checks whether two passed projected points are equal.
bool RMProjectedPointEqualToProjectedPoint(RMProjectedPoint point1, RMProjectedPoint point2);
/// \brief The function returs true, if passed rects intersect each other.
bool RMProjectedRectInterectsProjectedRect(RMProjectedRect rect1, RMProjectedRect rect2);
RMProjectedPoint RMMakeProjectedPoint(double easting, double northing);
RMProjectedRect RMMakeProjectedRect(double easting, double northing, double width, double height);
... ...
... ... @@ -46,8 +46,7 @@
- (void) dealloc
{
[sublayers release];
sublayers = nil;
[sublayers release]; sublayers = nil;
mapContents = nil;
[super dealloc];
}
... ...
... ... @@ -67,6 +67,7 @@ enum {
@optional
- (void)animationFinishedWithZoomFactor:(float)zoomFactor near:(CGPoint)p;
- (void)animationStepped;
@end
... ... @@ -126,6 +127,7 @@ enum {
}
@property (readwrite) CLLocationCoordinate2D mapCenter;
@property (readwrite) RMProjectedPoint centerProjectedPoint;
@property (readwrite) RMProjectedRect projectedBounds;
@property (readonly) RMTileRect tileBounds;
@property (readonly) CGRect screenBounds;
... ... @@ -182,17 +184,16 @@ enum {
- (void)handleMemoryWarningNotification:(NSNotification *)notification;
- (void)didReceiveMemoryWarning;
- (BOOL) tileSourceBoundsContainProjectedPoint:(RMProjectedPoint) point;
- (BOOL)tileSourceBoundsContainProjectedPoint:(RMProjectedPoint) point;
- (void)moveToLatLong: (CLLocationCoordinate2D)latlong;
- (void)moveToProjectedPoint: (RMProjectedPoint)aPoint;
- (void)moveToLatLong:(CLLocationCoordinate2D)latlong;
- (void)moveBy: (CGSize) delta;
- (void)zoomByFactor: (float) zoomFactor near:(CGPoint) center;
- (void)zoomInToNextNativeZoomAt:(CGPoint) pivot animated:(BOOL) animated;
- (void)zoomOutToNextNativeZoomAt:(CGPoint) pivot animated:(BOOL) animated;
- (void)zoomByFactor: (float) zoomFactor near:(CGPoint) center animated:(BOOL) animated;
- (void)zoomByFactor: (float) zoomFactor near:(CGPoint) center animated:(BOOL) animated withCallback:(id<RMMapContentsAnimationCallback>)callback;
- (void)moveBy:(CGSize)delta;
- (void)zoomByFactor:(float)zoomFactor near:(CGPoint)center;
- (void)zoomInToNextNativeZoomAt:(CGPoint)pivot animated:(BOOL)animated;
- (void)zoomOutToNextNativeZoomAt:(CGPoint)pivot animated:(BOOL)animated;
- (void)zoomByFactor:(float)zoomFactor near:(CGPoint)center animated:(BOOL)animated;
- (void)zoomByFactor:(float)zoomFactor near:(CGPoint)center animated:(BOOL)animated withCallback:(id<RMMapContentsAnimationCallback>)callback;
- (void)zoomInToNextNativeZoomAt:(CGPoint) pivot;
- (void)zoomOutToNextNativeZoomAt:(CGPoint) pivot;
... ...
... ... @@ -319,19 +319,7 @@
- (void)moveToLatLong:(CLLocationCoordinate2D)latlong
{
RMProjectedPoint aPoint = [[self projection] coordinateToProjectedPoint:latlong];
[self moveToProjectedPoint: aPoint];
}
- (void)moveToProjectedPoint:(RMProjectedPoint)aPoint
{
if (![self tileSourceBoundsContainProjectedPoint:aPoint])
return;
[mercatorToScreenProjection setProjectedCenter:aPoint];
[overlay correctPositionOfAllSublayers];
[tileLoader reload];
[renderer setNeedsDisplay];
[overlay setNeedsDisplay];
[self setCenterProjectedPoint:aPoint];
}
- (void)moveBy:(CGSize)delta
... ... @@ -739,6 +727,23 @@
[self moveToLatLong:center];
}
- (RMProjectedPoint)centerProjectedPoint
{
return [mercatorToScreenProjection projectedCenter];
}
- (void)setCenterProjectedPoint:(RMProjectedPoint)projectedPoint
{
if (![self tileSourceBoundsContainProjectedPoint:projectedPoint])
return;
[mercatorToScreenProjection setProjectedCenter:projectedPoint];
[overlay correctPositionOfAllSublayers];
[tileLoader reload];
[renderer setNeedsDisplay];
[overlay setNeedsDisplay];
}
- (RMProjectedRect)projectedBounds
{
return [mercatorToScreenProjection projectedBounds];
... ...
... ... @@ -186,6 +186,7 @@ typedef struct {
- (void)moveBy:(CGSize)delta;
- (void)setConstraintsSW:(CLLocationCoordinate2D)sw NE:(CLLocationCoordinate2D)ne;
- (void)setProjectedConstraintsSW:(RMProjectedPoint)sw NE:(RMProjectedPoint)ne;
- (void)zoomByFactor:(float)zoomFactor near:(CGPoint)aPoint;
- (void)zoomByFactor:(float)zoomFactor near:(CGPoint)aPoint animated:(BOOL)animated;
... ...
... ... @@ -203,7 +203,7 @@
- (void)moveToProjectedPoint:(RMProjectedPoint)aPoint
{
if (_delegateHasBeforeMapMove) [delegate beforeMapMove:self];
[contents moveToProjectedPoint:aPoint];
[contents setCenterProjectedPoint:aPoint];
if (_delegateHasAfterMapMove) [delegate afterMapMove:self];
}
... ... @@ -218,10 +218,17 @@
{
RMProjection *proj = self.contents.projection;
NEconstraint = [proj coordinateToProjectedPoint:ne];
SWconstraint = [proj coordinateToProjectedPoint:sw];
RMProjectedPoint projectedNE = [proj coordinateToProjectedPoint:ne];
RMProjectedPoint projectedSW = [proj coordinateToProjectedPoint:sw];
_constrainMovement=YES;
[self setProjectedConstraintsSW:projectedSW NE:projectedNE];
}
- (void)setProjectedConstraintsSW:(RMProjectedPoint)sw NE:(RMProjectedPoint)ne
{
SWconstraint = sw;
NEconstraint = ne;
_constrainMovement = YES;
}
- (void)moveBy:(CGSize)delta
... ...
... ... @@ -41,6 +41,7 @@
- (id)initWithContents:(RMMapContents *)mapContents;
- (void)addMarker:(RMMarker *)marker atProjectedPoint:(RMProjectedPoint)projectedPoint;
- (void)addMarker:(RMMarker *)marker atLatLong:(CLLocationCoordinate2D)point;
- (void)removeMarkers;
- (void)hideAllMarkers;
... ...
... ... @@ -55,12 +55,21 @@
#pragma mark
#pragma mark Adding / Removing / Displaying Markers
/// place the (new created) marker onto the map at projected point and take ownership of it
- (void)addMarker:(RMMarker *)marker atProjectedPoint:(RMProjectedPoint)projectedPoint
{
[marker setAffineTransform:rotationTransform];
[marker setProjectedLocation:projectedPoint];
[marker setPosition:[[contents mercatorToScreenProjection] projectProjectedPoint:projectedPoint]];
[[contents overlay] addSublayer:marker];
}
/// place the (newly created) marker onto the map and take ownership of it
/// \bug should return the marker
- (void)addMarker:(RMMarker *)marker atLatLong:(CLLocationCoordinate2D)point
{
[marker setAffineTransform:rotationTransform];
[marker setProjectedLocation:[[contents projection]coordinateToProjectedPoint:point]];
[marker setProjectedLocation:[[contents projection] coordinateToProjectedPoint:point]];
[marker setPosition:[[contents mercatorToScreenProjection] projectProjectedPoint:[[contents projection] coordinateToProjectedPoint:point]]];
[[contents overlay] addSublayer:marker];
}
... ...
... ... @@ -53,7 +53,7 @@
- (void)dealloc
{
[cache release];
[cache release]; cache = nil;
[super dealloc];
}
... ...
... ... @@ -83,8 +83,8 @@
@property (nonatomic, assign) RMProjectedPoint projectedLocation;
@property (assign) BOOL enableDragging;
@property (assign) BOOL enableRotation;
@property (readwrite, assign) UIColor *lineColor;
@property (readwrite, assign) UIColor *fillColor;
@property (readwrite, retain) UIColor *lineColor;
@property (readwrite, retain) UIColor *fillColor;
- (void)moveToXY:(RMProjectedPoint)point;
- (void)moveToScreenPoint:(CGPoint)point;
... ...
... ... @@ -79,10 +79,10 @@
- (void)dealloc
{
CGPathRelease(path);
[self setLineColor:nil];
[self setFillColor:nil];
[super dealloc];
CGPathRelease(path); path = NULL;
[lineColor release]; lineColor = nil;
[fillColor release]; fillColor = nil;
[super dealloc];
}
- (id <CAAction>)actionForKey:(NSString *)key
... ...
... ... @@ -35,25 +35,25 @@
@interface RMTiledLayerController : NSObject
{
CATiledLayer *layer;
// MercatorPoint topLeft;
// Size in pixels
// CGSize viewSize;
float metersPerPixel;
id tileSource;
}
-(id) initWithTileSource: (id <RMTileSource>) tileSource;
- (id)initWithTileSource:(id <RMTileSource>)tileSource;
-(void) setMetersPerPixel: (float) scale;
- (void)setMetersPerPixel:(float)scale;
-(void) centerProjectedPoint: (RMProjectedPoint) aPoint animate: (BOOL) animate;
-(void) centerLatLong: (CLLocationCoordinate2D) point animate: (BOOL) animate;
-(void) dragBy: (CGSize) delta;
-(void) zoomByFactor: (float) zoomFactor near:(CGPoint) center;
- (void)centerProjectedPoint:(RMProjectedPoint)aPoint animate:(BOOL)animate;
- (void)centerLatLong:(CLLocationCoordinate2D)point animate:(BOOL)animate;
- (void)dragBy:(CGSize)delta;
- (void)zoomByFactor:(float)zoomFactor near:(CGPoint)center;
/*
-(CGPoint) projectMercatorPoint: (MercatorPoint) point;
... ... @@ -64,6 +64,7 @@
-(MercatorRect) bounds;
*/
@property (assign, readwrite, nonatomic) float metersPerPixel;
@property (readonly, nonatomic) CATiledLayer *layer;
... ...
... ... @@ -24,6 +24,7 @@
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
#import "RMGlobalConstants.h"
#import "RMTiledLayerController.h"
#import "RMFractalTileProjection.h"
... ... @@ -33,56 +34,56 @@
@synthesize layer;
-(id) initWithTileSource: (id <RMTileSource>) _tileSource
- (id)initWithTileSource:(id <RMTileSource>)_tileSource
{
if (![super init])
return nil;
@throw [NSException exceptionWithName:@"NotImplementedExcption" reason:@"TiledLayerController is not complete. Use CoreAnimationRenderer instead." userInfo:nil];
tileSource = _tileSource;
[tileSource retain];
RMFractalTileProjection *tileProjection = [tileSource tileProjection];
layer = [CATiledLayer layer];
layer.delegate = self;
layer.levelsOfDetail = tileProjection.maxZoom + 1; // check this.
layer.levelsOfDetailBias = 1; // Allows zoom level 0.
layer.tileSize = CGSizeMake(tileProjection.tileSideLength,
tileProjection.tileSideLength);
RMXYRect boundsRect = tileProjection.bounds;
layer.bounds = CGRectMake(boundsRect.origin.x, boundsRect.origin.y, boundsRect.size.width, boundsRect.size.height) ;
layer.position = CGPointZero;
[self setScale:1];
[layer setNeedsDisplay];
return self;
}
-(void) dealloc
- (void)dealloc
{
layer.delegate = nil;
[layer release];
[layer release]; layer = nil;
[super dealloc];
}
-(void) setScale: (float) _scale
- (void)setScale:(float)_scale
{
scale = _scale;
layer.transform = CATransform3DMakeScale(1/scale,1/scale, 1.0f);
layer.transform = CATransform3DMakeScale(1/scale, 1/scale, 1.0f);
}
- (float) scale
- (float)scale
{
return scale;
}
-(void) centerProjectedPoint: (RMProjectedPoint) aPoint animate: (BOOL) animate
- (void)centerProjectedPoint:(RMProjectedPoint)aPoint animate:(BOOL)animate
{
if (animate == NO)
{
... ... @@ -90,51 +91,49 @@
[CATransaction setValue:[NSNumber numberWithFloat:0.0f]
forKey:kCATransactionAnimationDuration];
}
// layer.position = CGPointMake(point.x, point.y);
if (animate == NO)
{
if (animate == NO) {
[CATransaction commit];
}
// topLeft = point;
// topLeft.x -= viewSize.width * scale / 2;
// topLeft.y -= viewSize.height * scale / 2;
}
-(void) centerLatLong: (CLLocationCoordinate2D) aPoint animate: (BOOL) animate
- (void)centerLatLong:(CLLocationCoordinate2D)aPoint animate:(BOOL)animate
{
[self centerMercator:[RMMercator toMercator:aPoint] animate: animate];
}
-(void) dragBy: (CGSize) delta
{
- (void)dragBy:(CGSize)delta
{
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:0.0f]
forKey:kCATransactionAnimationDuration];
layer.position = CGPointMake(layer.position.x + delta.width,
layer.position.y + delta.height);
[CATransaction commit];
}
-(void) zoomByFactor: (float) zoomFactor near:(CGPoint) center
- (void)zoomByFactor:(float)zoomFactor near:(CGPoint)center
{
[self setScale: scale * zoomFactor];
[self setScale:scale * zoomFactor];
}
- (void)drawLayer:(CALayer *)theLayer
inContext:(CGContextRef)theContext
- (void)drawLayer:(CALayer *)theLayer inContext:(CGContextRef)theContext
{
RMLog(@"drawLayer:inContext:");
// CGRect visibleRect = [self visibleRect];
// RMLog(@"visibleRect: %d %d %d %d", visibleRect.origin.x, visibleRect.origin.y, visibleRect.size.width, visibleRect.size.height);
CGRect rect = CGContextGetClipBoundingBox(theContext);
// RMLog(@"rect: %d %d %d %d", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
//CGAffineTransform transform = CGContextGetCTM(theContext);
// RMLog(@"transform scale: a:%f b:%f c:%f d:%f tx:%f ty:%f", transform.a, transform.b, transform.c, transform.d, transform.tx, transform.ty);
... ... @@ -143,7 +142,7 @@
CGDataProviderRef dataProvider = CGDataProviderCreateWithFilename([path UTF8String]);
CGImageRef image = CGImageCreateWithPNGDataProvider(dataProvider, NULL, FALSE, kCGRenderingIntentDefault);
CGDataProviderRelease(dataProvider);
CGContextDrawImage(theContext, rect, image);
}
... ... @@ -151,7 +150,7 @@
{
}
- (CALayer*) layer
- (CALayer *)layer
{
return layer;
}
... ...
... ... @@ -34,18 +34,18 @@
/* Begin PBXBuildFile section */
090FE3140ECD71A500035FBC /* RMTilesUpdateDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 090FE3130ECD71A500035FBC /* RMTilesUpdateDelegate.h */; };
126693040EB76C0B00E002D5 /* RMConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 126692A00EB75C0A00E002D5 /* RMConfiguration.m */; };
1601410C133204D20043FCA3 /* RMCacheObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 1601410A133204D20043FCA3 /* RMCacheObject.h */; };
1601410D133204D20043FCA3 /* RMCacheObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 1601410B133204D20043FCA3 /* RMCacheObject.m */; };
1605FA15133221E9008E1B13 /* RMOpenStreetMapSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 1605FA13133221E9008E1B13 /* RMOpenStreetMapSource.h */; };
1605FA16133221E9008E1B13 /* RMOpenStreetMapSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 1605FA14133221E9008E1B13 /* RMOpenStreetMapSource.m */; };
16097D7B1330DEC60057F640 /* RMAbstractWebMapSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 16097D791330DEC60057F640 /* RMAbstractWebMapSource.h */; };
16097D7C1330DEC60057F640 /* RMAbstractWebMapSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 16097D7A1330DEC60057F640 /* RMAbstractWebMapSource.m */; };
16097E921330E0B10057F640 /* RMTileImageSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 16097E911330E0B10057F640 /* RMTileImageSet.h */; };
16EC85D2133CA6C300219947 /* RMAbstractMercatorTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 16EC85CC133CA6C300219947 /* RMAbstractMercatorTileSource.h */; };
16EC85D3133CA6C300219947 /* RMAbstractMercatorTileSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 16EC85CD133CA6C300219947 /* RMAbstractMercatorTileSource.m */; };
16EC85D4133CA6C300219947 /* RMAbstractWebMapSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 16EC85CE133CA6C300219947 /* RMAbstractWebMapSource.h */; };
16EC85D5133CA6C300219947 /* RMAbstractWebMapSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 16EC85CF133CA6C300219947 /* RMAbstractWebMapSource.m */; };
16EC85D6133CA6C300219947 /* RMCacheObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 16EC85D0133CA6C300219947 /* RMCacheObject.h */; };
16EC85D7133CA6C300219947 /* RMCacheObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 16EC85D1133CA6C300219947 /* RMCacheObject.m */; };
175701DE1323C2E900A5D314 /* NSUserDefaults+RouteMe.h in Headers */ = {isa = PBXBuildFile; fileRef = 175701DC1323C2E900A5D314 /* NSUserDefaults+RouteMe.h */; };
175701DF1323C2E900A5D314 /* NSUserDefaults+RouteMe.m in Sources */ = {isa = PBXBuildFile; fileRef = 175701DD1323C2E900A5D314 /* NSUserDefaults+RouteMe.m */; };
17F02BB11319BA4B00260C6B /* RouteMe.h in Headers */ = {isa = PBXBuildFile; fileRef = 17F02BB01319BA4B00260C6B /* RouteMe.h */; };
23A0AAE90EB90A99003A4521 /* RMFoundation.c in Sources */ = {isa = PBXBuildFile; fileRef = 23A0AAE80EB90A99003A4521 /* RMFoundation.c */; };
23A0AAEB0EB90AA6003A4521 /* RMFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 23A0AAEA0EB90AA6003A4521 /* RMFoundation.h */; };
23A0ABAA0EB923AF003A4521 /* RMLatLong.h in Headers */ = {isa = PBXBuildFile; fileRef = 23A0ABA90EB923AF003A4521 /* RMLatLong.h */; };
25757F4F1291C8640083D504 /* RMCircle.h in Headers */ = {isa = PBXBuildFile; fileRef = 25757F4D1291C8640083D504 /* RMCircle.h */; };
25757F501291C8640083D504 /* RMCircle.m in Sources */ = {isa = PBXBuildFile; fileRef = 25757F4E1291C8640083D504 /* RMCircle.m */; };
25757F521291C8850083D504 /* RMCircle.m in Sources */ = {isa = PBXBuildFile; fileRef = 25757F4E1291C8640083D504 /* RMCircle.m */; };
... ... @@ -62,12 +62,12 @@
2BEC602C0F8AC6FC008FB858 /* FMDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = B8474B8E0EB40094006A0BC1 /* FMDatabase.m */; };
2BEC602D0F8AC6FE008FB858 /* FMDatabaseAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B8474B900EB40094006A0BC1 /* FMDatabaseAdditions.m */; };
2BEC602F0F8AC700008FB858 /* FMResultSet.m in Sources */ = {isa = PBXBuildFile; fileRef = B8474B930EB40094006A0BC1 /* FMResultSet.m */; };
2BEC60300F8AC70C008FB858 /* RMAbstractMercatorTileSource.m in Sources */ = {isa = PBXBuildFile; fileRef = C7A967510E8412930031BA75 /* RMAbstractMercatorTileSource.m */; };
2BEC60330F8AC70F008FB858 /* RMConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 126692A00EB75C0A00E002D5 /* RMConfiguration.m */; };
2BEC60340F8AC712008FB858 /* RMCoreAnimationRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64BE0E80E73F001663B6 /* RMCoreAnimationRenderer.m */; };
2BEC60350F8AC713008FB858 /* RMDatabaseCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B8474B990EB40094006A0BC1 /* RMDatabaseCache.m */; };
2BEC60370F8AC718008FB858 /* RMFoundation.c in Sources */ = {isa = PBXBuildFile; fileRef = 23A0AAE80EB90A99003A4521 /* RMFoundation.c */; };
2BEC60380F8AC71A008FB858 /* RMFractalTileProjection.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64EA0E80E73F001663B6 /* RMFractalTileProjection.m */; };
2BEC60390F8AC71C008FB858 /* RMGeoHash.m in Sources */ = {isa = PBXBuildFile; fileRef = F5C12D290F8A86CA00A894D2 /* RMGeoHash.m */; };
2BEC603A0F8AC71D008FB858 /* RMLayerCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = B8FA92180E9315EC003A9FE6 /* RMLayerCollection.m */; };
2BEC603B0F8AC71E008FB858 /* RMMapContents.m in Sources */ = {isa = PBXBuildFile; fileRef = B8C974B70E8A280A007D16AD /* RMMapContents.m */; };
2BEC603C0F8AC71F008FB858 /* RMMapLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = B8F3FC600EA2B382004D8F85 /* RMMapLayer.m */; };
... ... @@ -77,6 +77,7 @@
2BEC60400F8AC725008FB858 /* RMMarkerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 090C948C0EC23FCD003AEE25 /* RMMarkerManager.m */; };
2BEC60430F8AC729008FB858 /* RMMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64D30E80E73F001663B6 /* RMMemoryCache.m */; };
2BEC60440F8AC729008FB858 /* RMMercatorToScreenProjection.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64C90E80E73F001663B6 /* RMMercatorToScreenProjection.m */; };
2BEC60460F8AC72C008FB858 /* RMOpenStreetMapSource.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64EE0E80E73F001663B6 /* RMOpenStreetMapSource.m */; };
2BEC60470F8AC72E008FB858 /* RMPath.m in Sources */ = {isa = PBXBuildFile; fileRef = B8CEB1C40ED5A3480014C431 /* RMPath.m */; };
2BEC60480F8AC72F008FB858 /* RMPixel.c in Sources */ = {isa = PBXBuildFile; fileRef = B83E64B70E80E73F001663B6 /* RMPixel.c */; };
2BEC60490F8AC738008FB858 /* RMProjection.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64E40E80E73F001663B6 /* RMProjection.m */; };
... ... @@ -116,29 +117,30 @@
B8C9741D0E8A19B2007D16AD /* RMCoreAnimationRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = B83E64BD0E80E73F001663B6 /* RMCoreAnimationRenderer.h */; };
B8C974220E8A19B2007D16AD /* RMProjection.h in Headers */ = {isa = PBXBuildFile; fileRef = B83E64E30E80E73F001663B6 /* RMProjection.h */; };
B8C974230E8A19B2007D16AD /* RMTileCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B83E64D00E80E73F001663B6 /* RMTileCache.h */; };
B8C974250E8A19B2007D16AD /* RMOpenStreetMapSource.h in Headers */ = {isa = PBXBuildFile; fileRef = B83E64ED0E80E73F001663B6 /* RMOpenStreetMapSource.h */; settings = {ATTRIBUTES = (); }; };
B8C974260E8A19B2007D16AD /* RMTile.h in Headers */ = {isa = PBXBuildFile; fileRef = B83E64D60E80E73F001663B6 /* RMTile.h */; };
B8C974270E8A19B2007D16AD /* RMPixel.h in Headers */ = {isa = PBXBuildFile; fileRef = B83E64B60E80E73F001663B6 /* RMPixel.h */; };
B8C9742A0E8A19B2007D16AD /* RMTileImage.h in Headers */ = {isa = PBXBuildFile; fileRef = B83E64D80E80E73F001663B6 /* RMTileImage.h */; };
B8C9742B0E8A19B2007D16AD /* RMMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B83E64D20E80E73F001663B6 /* RMMemoryCache.h */; };
B8C9742D0E8A19B2007D16AD /* RMFractalTileProjection.h in Headers */ = {isa = PBXBuildFile; fileRef = B83E64E90E80E73F001663B6 /* RMFractalTileProjection.h */; };
B8C9742F0E8A19B2007D16AD /* RMMapLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = B86F26AC0E87442C007A3773 /* RMMapLayer.h */; };
B8C974310E8A19B2007D16AD /* RMAbstractMercatorTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = C7A967500E8412930031BA75 /* RMAbstractMercatorTileSource.h */; };
B8C974350E8A19B2007D16AD /* RMMercatorToScreenProjection.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64C90E80E73F001663B6 /* RMMercatorToScreenProjection.m */; };
B8C974380E8A19B2007D16AD /* RMMapRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64CB0E80E73F001663B6 /* RMMapRenderer.m */; };
B8C9743A0E8A19B2007D16AD /* RMCoreAnimationRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64BE0E80E73F001663B6 /* RMCoreAnimationRenderer.m */; };
B8C9743F0E8A19B2007D16AD /* RMTileImage.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64D90E80E73F001663B6 /* RMTileImage.m */; };
B8C974400E8A19B2007D16AD /* RMTile.c in Sources */ = {isa = PBXBuildFile; fileRef = B83E64D70E80E73F001663B6 /* RMTile.c */; };
B8C974410E8A19B2007D16AD /* RMOpenStreetMapSource.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64EE0E80E73F001663B6 /* RMOpenStreetMapSource.m */; };
B8C974420E8A19B2007D16AD /* RMMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64D30E80E73F001663B6 /* RMMemoryCache.m */; };
B8C974430E8A19B2007D16AD /* RMPixel.c in Sources */ = {isa = PBXBuildFile; fileRef = B83E64B70E80E73F001663B6 /* RMPixel.c */; };
B8C974440E8A19B2007D16AD /* RMFractalTileProjection.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64EA0E80E73F001663B6 /* RMFractalTileProjection.m */; };
B8C974480E8A19B2007D16AD /* RMTileCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64D10E80E73F001663B6 /* RMTileCache.m */; };
B8C9744A0E8A19B2007D16AD /* RMProjection.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64E40E80E73F001663B6 /* RMProjection.m */; };
B8C9744C0E8A19B2007D16AD /* RMAbstractMercatorTileSource.m in Sources */ = {isa = PBXBuildFile; fileRef = C7A967510E8412930031BA75 /* RMAbstractMercatorTileSource.m */; };
B8C974500E8A19B2007D16AD /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B83E65590E80E7EB001663B6 /* CoreFoundation.framework */; };
B8C974510E8A19B2007D16AD /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; };
B8C974520E8A19B2007D16AD /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B83E65630E80E81C001663B6 /* CoreLocation.framework */; };
B8C974530E8A19B2007D16AD /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
B8C974540E8A19B2007D16AD /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B83E65680E80E830001663B6 /* QuartzCore.framework */; };
B8C9745C0E8A19E5007D16AD /* RMTileImageSet.h in Headers */ = {isa = PBXBuildFile; fileRef = B83E64E00E80E73F001663B6 /* RMTileImageSet.h */; };
B8C9745D0E8A19E6007D16AD /* RMTileImageSet.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64E10E80E73F001663B6 /* RMTileImageSet.m */; };
B8C9745E0E8A19E6007D16AD /* RMTileLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = B83E64C60E80E73F001663B6 /* RMTileLoader.h */; };
B8C9745F0E8A19E7007D16AD /* RMTileLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = B83E64C70E80E73F001663B6 /* RMTileLoader.m */; };
... ... @@ -157,6 +159,7 @@
B8FA921A0E9315EC003A9FE6 /* RMLayerCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = B8FA92180E9315EC003A9FE6 /* RMLayerCollection.m */; };
D1437B36122869E400888DAE /* RMDBMapSource.m in Sources */ = {isa = PBXBuildFile; fileRef = D1437B32122869E400888DAE /* RMDBMapSource.m */; };
D1437B37122869E400888DAE /* RMDBMapSource.h in Headers */ = {isa = PBXBuildFile; fileRef = D1437B33122869E400888DAE /* RMDBMapSource.h */; };
F5C12D2A0F8A86CA00A894D2 /* RMGeoHash.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C12D280F8A86CA00A894D2 /* RMGeoHash.h */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
... ... @@ -190,20 +193,21 @@
1266929F0EB75C0A00E002D5 /* RMConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMConfiguration.h; sourceTree = "<group>"; };
126692A00EB75C0A00E002D5 /* RMConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMConfiguration.m; sourceTree = "<group>"; };
12F2031E0EBB65E9003D7B6B /* RMMapViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMMapViewDelegate.h; sourceTree = "<group>"; };
1601410A133204D20043FCA3 /* RMCacheObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMCacheObject.h; sourceTree = "<group>"; };
1601410B133204D20043FCA3 /* RMCacheObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMCacheObject.m; sourceTree = "<group>"; };
1605FA13133221E9008E1B13 /* RMOpenStreetMapSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMOpenStreetMapSource.h; sourceTree = "<group>"; };
1605FA14133221E9008E1B13 /* RMOpenStreetMapSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMOpenStreetMapSource.m; sourceTree = "<group>"; };
16097D791330DEC60057F640 /* RMAbstractWebMapSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMAbstractWebMapSource.h; sourceTree = "<group>"; };
16097D7A1330DEC60057F640 /* RMAbstractWebMapSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMAbstractWebMapSource.m; sourceTree = "<group>"; };
16097E911330E0B10057F640 /* RMTileImageSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMTileImageSet.h; sourceTree = "<group>"; };
16EC85CC133CA6C300219947 /* RMAbstractMercatorTileSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMAbstractMercatorTileSource.h; sourceTree = "<group>"; };
16EC85CD133CA6C300219947 /* RMAbstractMercatorTileSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMAbstractMercatorTileSource.m; sourceTree = "<group>"; };
16EC85CE133CA6C300219947 /* RMAbstractWebMapSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMAbstractWebMapSource.h; sourceTree = "<group>"; };
16EC85CF133CA6C300219947 /* RMAbstractWebMapSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMAbstractWebMapSource.m; sourceTree = "<group>"; };
16EC85D0133CA6C300219947 /* RMCacheObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMCacheObject.h; sourceTree = "<group>"; };
16EC85D1133CA6C300219947 /* RMCacheObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMCacheObject.m; sourceTree = "<group>"; };
175701DC1323C2E900A5D314 /* NSUserDefaults+RouteMe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSUserDefaults+RouteMe.h"; sourceTree = "<group>"; };
175701DD1323C2E900A5D314 /* NSUserDefaults+RouteMe.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSUserDefaults+RouteMe.m"; sourceTree = "<group>"; };
17F02BB01319BA4B00260C6B /* RouteMe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RouteMe.h; sourceTree = "<group>"; };
17F31EFA1331050A00122B16 /* libMapView.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMapView.a; sourceTree = BUILT_PRODUCTS_DIR; };
1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
23A0AAE80EB90A99003A4521 /* RMFoundation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = RMFoundation.c; sourceTree = "<group>"; };
23A0AAEA0EB90AA6003A4521 /* RMFoundation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMFoundation.h; sourceTree = "<group>"; };
23A0ABA90EB923AF003A4521 /* RMLatLong.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMLatLong.h; sourceTree = "<group>"; };
25757F4D1291C8640083D504 /* RMCircle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMCircle.h; sourceTree = "<group>"; };
25757F4E1291C8640083D504 /* RMCircle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMCircle.m; sourceTree = "<group>"; };
288765A40DF7441C002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
... ... @@ -261,12 +265,15 @@
B83E64D70E80E73F001663B6 /* RMTile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = RMTile.c; sourceTree = "<group>"; };
B83E64D80E80E73F001663B6 /* RMTileImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMTileImage.h; sourceTree = "<group>"; };
B83E64D90E80E73F001663B6 /* RMTileImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMTileImage.m; sourceTree = "<group>"; };
B83E64E00E80E73F001663B6 /* RMTileImageSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMTileImageSet.h; sourceTree = "<group>"; };
B83E64E10E80E73F001663B6 /* RMTileImageSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMTileImageSet.m; sourceTree = "<group>"; };
B83E64E30E80E73F001663B6 /* RMProjection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMProjection.h; sourceTree = "<group>"; };
B83E64E40E80E73F001663B6 /* RMProjection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMProjection.m; sourceTree = "<group>"; };
B83E64E90E80E73F001663B6 /* RMFractalTileProjection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMFractalTileProjection.h; sourceTree = "<group>"; };
B83E64EA0E80E73F001663B6 /* RMFractalTileProjection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMFractalTileProjection.m; sourceTree = "<group>"; };
B83E64EC0E80E73F001663B6 /* RMTileSource.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = RMTileSource.h; sourceTree = "<group>"; };
B83E64ED0E80E73F001663B6 /* RMOpenStreetMapSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMOpenStreetMapSource.h; sourceTree = "<group>"; };
B83E64EE0E80E73F001663B6 /* RMOpenStreetMapSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMOpenStreetMapSource.m; sourceTree = "<group>"; };
B83E654A0E80E7A8001663B6 /* Proj4.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Proj4.xcodeproj; path = ../Proj4/Proj4.xcodeproj; sourceTree = SOURCE_ROOT; };
B83E65590E80E7EB001663B6 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
B83E65630E80E81C001663B6 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };
... ... @@ -289,7 +296,6 @@
B86F26AC0E87442C007A3773 /* RMMapLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMMapLayer.h; sourceTree = "<group>"; };
B86F26E10E877802007A3773 /* DesktopMapView-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "DesktopMapView-Info.plist"; sourceTree = "<group>"; };
B8C9740E0E8A198F007D16AD /* README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README.txt; path = Map/README.txt; sourceTree = "<group>"; };
B8C974590E8A19B2007D16AD /* libMapView.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMapView.a; sourceTree = BUILT_PRODUCTS_DIR; };
B8C974690E8A1A50007D16AD /* RMMapView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMMapView.h; sourceTree = "<group>"; };
B8C9746A0E8A1A50007D16AD /* RMMapView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMMapView.m; sourceTree = "<group>"; };
B8C974AE0E8A1F08007D16AD /* RMMercatorToTileProjection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMMercatorToTileProjection.h; sourceTree = "<group>"; };
... ... @@ -302,10 +308,10 @@
B8F3FC630EA2E792004D8F85 /* RMMarker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMMarker.m; sourceTree = "<group>"; };
B8FA92170E9315EC003A9FE6 /* RMLayerCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMLayerCollection.h; sourceTree = "<group>"; };
B8FA92180E9315EC003A9FE6 /* RMLayerCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMLayerCollection.m; sourceTree = "<group>"; };
C7A967500E8412930031BA75 /* RMAbstractMercatorTileSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMAbstractMercatorTileSource.h; sourceTree = "<group>"; };
C7A967510E8412930031BA75 /* RMAbstractMercatorTileSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMAbstractMercatorTileSource.m; sourceTree = "<group>"; };
D1437B32122869E400888DAE /* RMDBMapSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMDBMapSource.m; sourceTree = "<group>"; };
D1437B33122869E400888DAE /* RMDBMapSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMDBMapSource.h; sourceTree = "<group>"; };
F5C12D280F8A86CA00A894D2 /* RMGeoHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RMGeoHash.h; sourceTree = "<group>"; };
F5C12D290F8A86CA00A894D2 /* RMGeoHash.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RMGeoHash.m; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
... ... @@ -350,13 +356,13 @@
name = Configuration;
sourceTree = "<group>";
};
1605FAA413322410008E1B13 /* Map sources */ = {
16EC85CB133CA69A00219947 /* Map sources */ = {
isa = PBXGroup;
children = (
D1437B33122869E400888DAE /* RMDBMapSource.h */,
D1437B32122869E400888DAE /* RMDBMapSource.m */,
1605FA13133221E9008E1B13 /* RMOpenStreetMapSource.h */,
1605FA14133221E9008E1B13 /* RMOpenStreetMapSource.m */,
D1437B33122869E400888DAE /* RMDBMapSource.h */,
B83E64ED0E80E73F001663B6 /* RMOpenStreetMapSource.h */,
B83E64EE0E80E73F001663B6 /* RMOpenStreetMapSource.m */,
);
name = "Map sources";
sourceTree = "<group>";
... ... @@ -373,9 +379,9 @@
19C28FACFE9D520D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
B8C974590E8A19B2007D16AD /* libMapView.a */,
3866784C0F6B9B9200C56B17 /* MapView.framework */,
2BF3078F0F8AC5C0007014EE /* RM Unit Tests.app */,
17F31EFA1331050A00122B16 /* libMapView.a */,
);
name = Products;
sourceTree = "<group>";
... ... @@ -398,11 +404,11 @@
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
isa = PBXGroup;
children = (
B83E654A0E80E7A8001663B6 /* Proj4.xcodeproj */,
B8474BC00EB4019A006A0BC1 /* libsqlite3.dylib */,
B83E65590E80E7EB001663B6 /* CoreFoundation.framework */,
B83E65630E80E81C001663B6 /* CoreLocation.framework */,
B83E65680E80E830001663B6 /* QuartzCore.framework */,
B83E654A0E80E7A8001663B6 /* Proj4.xcodeproj */,
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
1D30AB110D05D00D00671497 /* Foundation.framework */,
288765A40DF7441C002DB57D /* CoreGraphics.framework */,
... ... @@ -507,7 +513,7 @@
children = (
B83E64D80E80E73F001663B6 /* RMTileImage.h */,
B83E64D90E80E73F001663B6 /* RMTileImage.m */,
16097E911330E0B10057F640 /* RMTileImageSet.h */,
B83E64E00E80E73F001663B6 /* RMTileImageSet.h */,
B83E64E10E80E73F001663B6 /* RMTileImageSet.m */,
B83E64C60E80E73F001663B6 /* RMTileLoader.h */,
B83E64C70E80E73F001663B6 /* RMTileLoader.m */,
... ... @@ -518,8 +524,8 @@
B83E64CF0E80E73F001663B6 /* Tile Cache */ = {
isa = PBXGroup;
children = (
1601410A133204D20043FCA3 /* RMCacheObject.h */,
1601410B133204D20043FCA3 /* RMCacheObject.m */,
16EC85D0133CA6C300219947 /* RMCacheObject.h */,
16EC85D1133CA6C300219947 /* RMCacheObject.m */,
B83E64D00E80E73F001663B6 /* RMTileCache.h */,
B83E64D10E80E73F001663B6 /* RMTileCache.m */,
B83E64D20E80E73F001663B6 /* RMMemoryCache.h */,
... ... @@ -534,9 +540,9 @@
isa = PBXGroup;
children = (
B8C974B20E8A1FED007D16AD /* Proj4 wrapper */,
B8C974AE0E8A1F08007D16AD /* RMMercatorToTileProjection.h */,
B83E64E90E80E73F001663B6 /* RMFractalTileProjection.h */,
B83E64EA0E80E73F001663B6 /* RMFractalTileProjection.m */,
B8C974AE0E8A1F08007D16AD /* RMMercatorToTileProjection.h */,
B83E64C80E80E73F001663B6 /* RMMercatorToScreenProjection.h */,
B83E64C90E80E73F001663B6 /* RMMercatorToScreenProjection.m */,
);
... ... @@ -546,12 +552,12 @@
B83E64EB0E80E73F001663B6 /* Tile Source */ = {
isa = PBXGroup;
children = (
1605FAA413322410008E1B13 /* Map sources */,
16EC85CB133CA69A00219947 /* Map sources */,
B83E64EC0E80E73F001663B6 /* RMTileSource.h */,
C7A967500E8412930031BA75 /* RMAbstractMercatorTileSource.h */,
C7A967510E8412930031BA75 /* RMAbstractMercatorTileSource.m */,
16097D791330DEC60057F640 /* RMAbstractWebMapSource.h */,
16097D7A1330DEC60057F640 /* RMAbstractWebMapSource.m */,
16EC85CC133CA6C300219947 /* RMAbstractMercatorTileSource.h */,
16EC85CD133CA6C300219947 /* RMAbstractMercatorTileSource.m */,
16EC85CE133CA6C300219947 /* RMAbstractWebMapSource.h */,
16EC85CF133CA6C300219947 /* RMAbstractWebMapSource.m */,
);
name = "Tile Source";
sourceTree = "<group>";
... ... @@ -616,15 +622,16 @@
B8C9740D0E8A196E007D16AD /* Map */ = {
isa = PBXGroup;
children = (
175701DB1323C2CF00A5D314 /* iOS Additions */,
17F02BB01319BA4B00260C6B /* RouteMe.h */,
B1EB26C510B5D8E6009F8658 /* RMNotifications.h */,
96492C3F0FA8AD3400EBA6D2 /* RMGlobalConstants.h */,
12F2031E0EBB65E9003D7B6B /* RMMapViewDelegate.h */,
B1EB26C510B5D8E6009F8658 /* RMNotifications.h */,
090FE3130ECD71A500035FBC /* RMTilesUpdateDelegate.h */,
B8C974690E8A1A50007D16AD /* RMMapView.h */,
B8C9746A0E8A1A50007D16AD /* RMMapView.m */,
B8C974B60E8A280A007D16AD /* RMMapContents.h */,
B8C974B70E8A280A007D16AD /* RMMapContents.m */,
12F2031E0EBB65E9003D7B6B /* RMMapViewDelegate.h */,
B8C974B30E8A23C5007D16AD /* Coordinate Systems */,
B83E64E20E80E73F001663B6 /* Projections */,
B83E64CF0E80E73F001663B6 /* Tile Cache */,
... ... @@ -652,6 +659,9 @@
B8C974B30E8A23C5007D16AD /* Coordinate Systems */ = {
isa = PBXGroup;
children = (
F5C12D280F8A86CA00A894D2 /* RMGeoHash.h */,
F5C12D290F8A86CA00A894D2 /* RMGeoHash.m */,
23A0ABA90EB923AF003A4521 /* RMLatLong.h */,
23A0AAEA0EB90AA6003A4521 /* RMFoundation.h */,
23A0AAE80EB90A99003A4521 /* RMFoundation.c */,
B83E64D60E80E73F001663B6 /* RMTile.h */,
... ... @@ -670,6 +680,7 @@
buildActionMask = 2147483647;
files = (
B8C974170E8A19B2007D16AD /* RMMercatorToScreenProjection.h in Headers */,
B8C974250E8A19B2007D16AD /* RMOpenStreetMapSource.h in Headers */,
B8C974190E8A19B2007D16AD /* RMMapRenderer.h in Headers */,
B8C9741D0E8A19B2007D16AD /* RMCoreAnimationRenderer.h in Headers */,
B8C974220E8A19B2007D16AD /* RMProjection.h in Headers */,
... ... @@ -680,7 +691,7 @@
B8C9742B0E8A19B2007D16AD /* RMMemoryCache.h in Headers */,
B8C9742D0E8A19B2007D16AD /* RMFractalTileProjection.h in Headers */,
B8C9742F0E8A19B2007D16AD /* RMMapLayer.h in Headers */,
B8C974310E8A19B2007D16AD /* RMAbstractMercatorTileSource.h in Headers */,
B8C9745C0E8A19E5007D16AD /* RMTileImageSet.h in Headers */,
B8C9745E0E8A19E6007D16AD /* RMTileLoader.h in Headers */,
B8C974620E8A19E8007D16AD /* RMTileSource.h in Headers */,
B8C9746B0E8A1A50007D16AD /* RMMapView.h in Headers */,
... ... @@ -693,21 +704,22 @@
B8474B9F0EB40094006A0BC1 /* FMResultSet.h in Headers */,
B8474BA40EB40094006A0BC1 /* RMDatabaseCache.h in Headers */,
23A0AAEB0EB90AA6003A4521 /* RMFoundation.h in Headers */,
23A0ABAA0EB923AF003A4521 /* RMLatLong.h in Headers */,
B8800FF10EC3A237003E9CDD /* RMMarkerManager.h in Headers */,
B8800FF20EC3A239003E9CDD /* RMMapViewDelegate.h in Headers */,
B8800FF30EC3A23D003E9CDD /* RMConfiguration.h in Headers */,
090FE3140ECD71A500035FBC /* RMTilesUpdateDelegate.h in Headers */,
B8CEB1C50ED5A3480014C431 /* RMPath.h in Headers */,
F5C12D2A0F8A86CA00A894D2 /* RMGeoHash.h in Headers */,
96492C400FA8AD3400EBA6D2 /* RMGlobalConstants.h in Headers */,
B1EB26C610B5D8E6009F8658 /* RMNotifications.h in Headers */,
D1437B37122869E400888DAE /* RMDBMapSource.h in Headers */,
25757F4F1291C8640083D504 /* RMCircle.h in Headers */,
17F02BB11319BA4B00260C6B /* RouteMe.h in Headers */,
175701DE1323C2E900A5D314 /* NSUserDefaults+RouteMe.h in Headers */,
16097D7B1330DEC60057F640 /* RMAbstractWebMapSource.h in Headers */,
16097E921330E0B10057F640 /* RMTileImageSet.h in Headers */,
1601410C133204D20043FCA3 /* RMCacheObject.h in Headers */,
1605FA15133221E9008E1B13 /* RMOpenStreetMapSource.h in Headers */,
16EC85D2133CA6C300219947 /* RMAbstractMercatorTileSource.h in Headers */,
16EC85D4133CA6C300219947 /* RMAbstractWebMapSource.h in Headers */,
16EC85D6133CA6C300219947 /* RMCacheObject.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
... ... @@ -748,7 +760,7 @@
);
name = MapView;
productName = MapView;
productReference = B8C974590E8A19B2007D16AD /* libMapView.a */;
productReference = 17F31EFA1331050A00122B16 /* libMapView.a */;
productType = "com.apple.product-type.library.static";
};
/* End PBXNativeTarget section */
... ... @@ -856,12 +868,12 @@
2BEC602C0F8AC6FC008FB858 /* FMDatabase.m in Sources */,
2BEC602D0F8AC6FE008FB858 /* FMDatabaseAdditions.m in Sources */,
2BEC602F0F8AC700008FB858 /* FMResultSet.m in Sources */,
2BEC60300F8AC70C008FB858 /* RMAbstractMercatorTileSource.m in Sources */,
2BEC60330F8AC70F008FB858 /* RMConfiguration.m in Sources */,
2BEC60340F8AC712008FB858 /* RMCoreAnimationRenderer.m in Sources */,
2BEC60350F8AC713008FB858 /* RMDatabaseCache.m in Sources */,
2BEC60370F8AC718008FB858 /* RMFoundation.c in Sources */,
2BEC60380F8AC71A008FB858 /* RMFractalTileProjection.m in Sources */,
2BEC60390F8AC71C008FB858 /* RMGeoHash.m in Sources */,
2BEC603A0F8AC71D008FB858 /* RMLayerCollection.m in Sources */,
2BEC603B0F8AC71E008FB858 /* RMMapContents.m in Sources */,
2BEC603C0F8AC71F008FB858 /* RMMapLayer.m in Sources */,
... ... @@ -871,6 +883,7 @@
2BEC60400F8AC725008FB858 /* RMMarkerManager.m in Sources */,
2BEC60430F8AC729008FB858 /* RMMemoryCache.m in Sources */,
2BEC60440F8AC729008FB858 /* RMMercatorToScreenProjection.m in Sources */,
2BEC60460F8AC72C008FB858 /* RMOpenStreetMapSource.m in Sources */,
2BEC60470F8AC72E008FB858 /* RMPath.m in Sources */,
2BEC60480F8AC72F008FB858 /* RMPixel.c in Sources */,
2BEC60490F8AC738008FB858 /* RMProjection.m in Sources */,
... ... @@ -902,12 +915,12 @@
B8C9743A0E8A19B2007D16AD /* RMCoreAnimationRenderer.m in Sources */,
B8C9743F0E8A19B2007D16AD /* RMTileImage.m in Sources */,
B8C974400E8A19B2007D16AD /* RMTile.c in Sources */,
B8C974410E8A19B2007D16AD /* RMOpenStreetMapSource.m in Sources */,
B8C974420E8A19B2007D16AD /* RMMemoryCache.m in Sources */,
B8C974430E8A19B2007D16AD /* RMPixel.c in Sources */,
B8C974440E8A19B2007D16AD /* RMFractalTileProjection.m in Sources */,
B8C974480E8A19B2007D16AD /* RMTileCache.m in Sources */,
B8C9744A0E8A19B2007D16AD /* RMProjection.m in Sources */,
B8C9744C0E8A19B2007D16AD /* RMAbstractMercatorTileSource.m in Sources */,
B8C9745D0E8A19E6007D16AD /* RMTileImageSet.m in Sources */,
B8C9745F0E8A19E7007D16AD /* RMTileLoader.m in Sources */,
B8C9746C0E8A1A50007D16AD /* RMMapView.m in Sources */,
... ... @@ -926,9 +939,9 @@
D1437B36122869E400888DAE /* RMDBMapSource.m in Sources */,
25757F501291C8640083D504 /* RMCircle.m in Sources */,
175701DF1323C2E900A5D314 /* NSUserDefaults+RouteMe.m in Sources */,
16097D7C1330DEC60057F640 /* RMAbstractWebMapSource.m in Sources */,
1601410D133204D20043FCA3 /* RMCacheObject.m in Sources */,
1605FA16133221E9008E1B13 /* RMOpenStreetMapSource.m in Sources */,
16EC85D3133CA6C300219947 /* RMAbstractMercatorTileSource.m in Sources */,
16EC85D5133CA6C300219947 /* RMAbstractWebMapSource.m in Sources */,
16EC85D7133CA6C300219947 /* RMCacheObject.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
... ... @@ -1110,32 +1123,23 @@
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Don't Code Sign";
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_FAST_MATH = NO;
GCC_FAST_MATH = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_STRICT_ALIASING = NO;
GCC_STRICT_ALIASING = YES;
GCC_THUMB_SUPPORT = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
GCC_WARN_MISSING_PARENTHESES = YES;
GCC_WARN_SHADOW = YES;
GCC_WARN_SIGN_COMPARE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
IPHONEOS_DEPLOYMENT_TARGET = 3.0;
OTHER_CFLAGS = (
"-O",
"-Wuninitialized",
);
OTHER_LDFLAGS = "";
PREBINDING = NO;
RUN_CLANG_STATIC_ANALYZER = NO;
RUN_CLANG_STATIC_ANALYZER = YES;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
STRIP_INSTALLED_PRODUCT = NO;
};
name = Debug;
};
... ... @@ -1145,19 +1149,12 @@
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_FAST_MATH = NO;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_STRICT_ALIASING = NO;
GCC_FAST_MATH = YES;
GCC_STRICT_ALIASING = YES;
GCC_THUMB_SUPPORT = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
GCC_WARN_MISSING_PARENTHESES = YES;
GCC_WARN_SHADOW = YES;
GCC_WARN_SIGN_COMPARE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
IPHONEOS_DEPLOYMENT_TARGET = 3.0;
OTHER_LDFLAGS = "";
PREBINDING = NO;
SDKROOT = iphoneos;
... ...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>com.yourcompany.${PRODUCT_NAME:identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
... ...
//
// Prefix header for all source files of the 'MapViewTests' target in the 'MapViewTests' project
//
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import "RouteMe.h"
#endif
... ...
/* Localized versions of Info.plist keys */
... ...
//
// RMFoundationTests.h
//
// Copyright (c) 2008-2011, Route-Me Contributors
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
#import <SenTestingKit/SenTestingKit.h>
#import <UIKit/UIKit.h>
@interface RMFoundationTests : SenTestCase {
}
@end
... ...
//
// RMFoundationTests.m
// MapView
//
// Copyright (c) 2008-2011, Route-Me Contributors
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
#import "RMFoundationTests.h"
@implementation RMFoundationTests
- (void)testProjectedRectIntersectsProjectedRect {
RMProjectedRect r0022 = RMMakeProjectedRect(0.0, 0.0, 2.0, 2.0);
RMProjectedRect r0123 = RMMakeProjectedRect(0.0, 1.0, 2.0, 2.0);
RMProjectedRect r0325 = RMMakeProjectedRect(0.0, 3.0, 2.0, 2.0);
RMProjectedRect r1032 = RMMakeProjectedRect(1.0, 0.0, 2.0, 2.0);
STAssertTrue(RMProjectedRectInterectsProjectedRect(r0123, r1032), nil);
STAssertTrue(RMProjectedRectInterectsProjectedRect(r1032, r0123), nil);
STAssertFalse(RMProjectedRectInterectsProjectedRect(r0022, r0325), nil);
STAssertFalse(RMProjectedRectInterectsProjectedRect(r0325, r0022), nil);
STAssertTrue(RMProjectedRectInterectsProjectedRect(r0022, r0123), nil);
STAssertTrue(RMProjectedRectInterectsProjectedRect(r0123, r0022), nil);
}
@end
... ...
... ... @@ -795,7 +795,9 @@
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = Proj4_Prefix.pch;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_UNUSED_VARIABLE = NO;
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
PRODUCT_NAME = Proj4;
};
name = Debug;
... ... @@ -808,8 +810,11 @@
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = Proj4_Prefix.pch;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_UNUSED_VARIABLE = NO;
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
PRODUCT_NAME = Proj4;
STRIP_INSTALLED_PRODUCT = YES;
};
name = Release;
};
... ... @@ -842,7 +847,7 @@
GCC_STRICT_ALIASING = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 3.0;
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
PREBINDING = NO;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
... ...