summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinh Nguyễn <mxn@1ec5.org>2016-04-22 11:12:27 -0700
committerMinh Nguyễn <mxn@1ec5.org>2016-04-22 11:29:10 -0700
commit2a1a5f088564b2d6c2e3765d0d741edf1886fc81 (patch)
tree4f58085117a42213db7b70e21cc16a535fe3ff34
parente5c6cfde4b4f36cadeadfcb320bd641c4517f366 (diff)
downloadqtlocation-mapboxgl-2a1a5f088564b2d6c2e3765d0d741edf1886fc81.tar.gz
[ios, osx] Split MGLDirectionFormatter in two
Split MGLDirectionFormatter into MGLClockDirectionFormatter, which specializes in clock positions, and MGLCompassDirectionFormatter, which boxes the compass. This neatly avoids any confusion that might arise if the developer fails to read the documentation and thinks the original unified formatter can convert between the two types of directions.
-rw-r--r--.jazzy.yaml4
-rw-r--r--platform/darwin/include/MGLClockDirectionFormatter.h52
-rw-r--r--platform/darwin/include/MGLCompassDirectionFormatter.h42
-rw-r--r--platform/darwin/include/MGLDirectionFormatter.h77
-rw-r--r--platform/darwin/src/MGLClockDirectionFormatter.m64
-rw-r--r--platform/darwin/src/MGLCompassDirectionFormatter.m (renamed from platform/darwin/src/MGLDirectionFormatter.m)51
-rw-r--r--platform/darwin/test/MGLClockDirectionFormatterTests.m49
-rw-r--r--platform/darwin/test/MGLCompassDirectionFormatterTests.m (renamed from platform/darwin/test/MGLDirectionFormatterTests.m)58
-rw-r--r--platform/ios/framework/Mapbox.h3
-rw-r--r--platform/ios/ios.xcodeproj/project.pbxproj44
-rw-r--r--platform/osx/osx.xcodeproj/project.pbxproj36
-rw-r--r--platform/osx/sdk/Mapbox.h3
12 files changed, 278 insertions, 205 deletions
diff --git a/.jazzy.yaml b/.jazzy.yaml
index e6ed144282..e14b7f803e 100644
--- a/.jazzy.yaml
+++ b/.jazzy.yaml
@@ -57,6 +57,8 @@ custom_categories:
- NSValue(MGLOfflinePackAdditions)
- name: Geometry
children:
+ - MGLClockDirectionFormatter
+ - MGLCompassDirectionFormatter
- MGLCoordinateBounds
- MGLCoordinateBoundsEqualToCoordinateBounds
- MGLCoordinateBoundsGetCoordinateSpan
@@ -69,8 +71,6 @@ custom_categories:
- MGLCoordinateSpanMake
- MGLCoordinateSpanZero
- MGLDegreesFromRadians
- - MGLDirectionFormatter
- - MGLDirectionFormatterOrigin
- MGLRadiansFromDegrees
- MGLStringFromCoordinateBounds
- NSValue(MGLGeometryAdditions)
diff --git a/platform/darwin/include/MGLClockDirectionFormatter.h b/platform/darwin/include/MGLClockDirectionFormatter.h
new file mode 100644
index 0000000000..e748a15847
--- /dev/null
+++ b/platform/darwin/include/MGLClockDirectionFormatter.h
@@ -0,0 +1,52 @@
+#import <Foundation/Foundation.h>
+#import <CoreLocation/CoreLocation.h>
+
+#import "MGLTypes.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The `MGLClockDirectionFormatter` class provides properly formatted descriptions
+ of headings relative to the user, known as <i>clock positions</i>. For
+ example, a value of `90` may be formatted as “3 o’clock”, depending on the
+ locale.
+
+ Use this class to create localized heading strings when displaying directions
+ relative to the user’s current location and heading. To format a direction
+ irrespective of the user’s orientation, use `MGLCompassDirectionFormatter`
+ instead.
+ */
+@interface MGLClockDirectionFormatter : NSFormatter
+
+/**
+ The unit style used by this formatter.
+
+ This property defaults to `NSFormattingUnitStyleMedium`.
+ */
+@property (nonatomic) NSFormattingUnitStyle unitStyle;
+
+/**
+ The locale of the receiver.
+
+ The locale determines the output language and numeral system of the output.
+ */
+@property (copy) NSLocale *locale;
+
+/**
+ Returns a clock position string for the provided value.
+
+ @param direction The heading, measured in degrees, where 0° means “straight
+ ahead” and 90° means “directly to your right”.
+ @return The clock position string appropriately formatted for the receiver’s
+ locale.
+ */
+- (NSString *)stringFromDirection:(CLLocationDirection)direction;
+
+/**
+ This method is not supported for the `MGLDirectionFormatter` class.
+ */
+- (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/include/MGLCompassDirectionFormatter.h b/platform/darwin/include/MGLCompassDirectionFormatter.h
new file mode 100644
index 0000000000..d7c3113291
--- /dev/null
+++ b/platform/darwin/include/MGLCompassDirectionFormatter.h
@@ -0,0 +1,42 @@
+#import <Foundation/Foundation.h>
+#import <CoreLocation/CoreLocation.h>
+
+#import "MGLTypes.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The `MGLCompassDirectionFormatter` class provides properly formatted
+ descriptions of absolute headings. For example, a value of `90` may be
+ formatted as “east”, depending on the locale.
+
+ Use this class to create localized heading strings when displaying directions
+ irrespective of the user’s current location. To format a direction relative to
+ the user’s current location, use `MGLCompassDirectionFormatter` instead.
+ */
+@interface MGLCompassDirectionFormatter : NSFormatter
+
+/**
+ The unit style used by this formatter.
+
+ This property defaults to `NSFormattingUnitStyleMedium`.
+ */
+@property (nonatomic) NSFormattingUnitStyle unitStyle;
+
+/**
+ Returns a heading string for the provided value.
+
+ @param direction The heading, measured in degrees, where 0° means “due north”
+ and 90° means “due east”.
+ @return The heading string appropriately formatted for the formatter’s locale.
+ */
+- (NSString *)stringFromDirection:(CLLocationDirection)direction;
+
+/**
+ This method is not supported for the `MGLDirectionFormatter` class.
+ */
+- (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/include/MGLDirectionFormatter.h b/platform/darwin/include/MGLDirectionFormatter.h
deleted file mode 100644
index 9091292e22..0000000000
--- a/platform/darwin/include/MGLDirectionFormatter.h
+++ /dev/null
@@ -1,77 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-#import "MGLTypes.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The reference point for an `MGLDirectionFormatter`.
- */
-typedef NS_ENUM(NSUInteger, MGLDirectionFormatterOrigin) {
- /**
- Directions are assumed to be relative to true north and are given as
- compass directions, such as “south” for a value of `90`.
- */
- MGLDirectionFormatterOriginNorth = 0,
- /**
- Directions are assumed to be relative to the direction in which the user is
- facing and are given as “clock directions”, such as “6 o’clock” for a value
- of `90`.
- */
- MGLDirectionFormatterOriginStraightAhead,
-};
-
-/**
- The `MGLDirectionFormatter` class provides properly formatted descriptions of
- absolute or relative headings. Use this class to create localized heading
- strings when displaying directional information to users.
- */
-@interface MGLDirectionFormatter : NSFormatter
-
-/**
- The receiver’s reference point. The receiver’s input is assumed to be relative
- to this reference point, and its output is given in the conventional form for
- directions with this reference point.
-
- This class does not convert between different reference points. To convert an
- `CLLocationDirection` with respect to true north into a `CLLocationDirection`
- with respect to the direction in which the user is currently facing, use Core
- Location to determine the user’s current heading.
-
- The default value of this property is `MGLDirectionFormatterOriginNorth`, which
- means a value of `0` is formatted as “north” in the receiver’s locale.
- */
-@property (nonatomic) MGLDirectionFormatterOrigin origin;
-
-/**
- The unit style used by this formatter.
-
- This property defaults to `NSFormattingUnitStyleMedium`.
- */
-@property (nonatomic) NSFormattingUnitStyle unitStyle;
-
-/**
- The locale of the receiver.
-
- The locale determines the output language as well as the numeral system used
- when the `relativeToUser` property is set to `YES`.
- */
-@property (copy) NSLocale *locale;
-
-/**
- Returns a heading string for the provided value.
-
- @param direction The heading, measured in degrees.
- @return The heading string appropriately formatted for the formatter’s locale.
- */
-- (NSString *)stringFromDirection:(CLLocationDirection)direction;
-
-/**
- This method is not supported for the `MGLDirectionFormatter` class.
- */
-- (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLClockDirectionFormatter.m b/platform/darwin/src/MGLClockDirectionFormatter.m
new file mode 100644
index 0000000000..56740e74e3
--- /dev/null
+++ b/platform/darwin/src/MGLClockDirectionFormatter.m
@@ -0,0 +1,64 @@
+#import "MGLClockDirectionFormatter.h"
+
+#define wrap(value, min, max) \
+ (fmod((fmod((value - min), (max - min)) + (max - min)), (max - min)) + min)
+
+@implementation MGLClockDirectionFormatter {
+ NSNumberFormatter *_numberFormatter;
+}
+
+- (instancetype)init {
+ if (self = [super init]) {
+ _unitStyle = NSFormattingUnitStyleMedium;
+ _numberFormatter = [[NSNumberFormatter alloc] init];
+ }
+ return self;
+}
+
+- (NSLocale *)locale {
+ return _numberFormatter.locale;
+}
+
+- (void)setLocale:(NSLocale *)locale {
+ _numberFormatter.locale = locale;
+}
+
+- (NSString *)stringFromDirection:(CLLocationDirection)direction {
+ NSInteger hour = round(-wrap(-direction, -360, 0) / 360 * 12);
+ NSString *format;
+ NSNumberFormatterStyle style = NSNumberFormatterDecimalStyle;
+ switch (self.unitStyle) {
+ case NSFormattingUnitStyleShort:
+ format = NSLocalizedString(@"%@:00", @"Clock position format, short style");
+ break;
+
+ case NSFormattingUnitStyleMedium:
+ format = NSLocalizedString(@"%@ o’clock", @"Clock position format, medium style");
+
+ break;
+
+ case NSFormattingUnitStyleLong:
+ format = NSLocalizedString(@"%@ o’clock", @"Clock position format, long style");
+ style = NSNumberFormatterSpellOutStyle;
+ break;
+
+ default:
+ break;
+ }
+ _numberFormatter.numberStyle = style;
+ return [NSString stringWithFormat:format, [_numberFormatter stringFromNumber:@(hour)]];
+}
+
+- (nullable NSString *)stringForObjectValue:(id)obj {
+ if (![obj isKindOfClass:[NSValue class]]) {
+ return nil;
+ }
+ return [self stringFromDirection:[obj doubleValue]];
+}
+
+- (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error {
+ NSAssert(NO, @"-getObjectValue:forString:errorDescription: has not been implemented");
+ return NO;
+}
+
+@end
diff --git a/platform/darwin/src/MGLDirectionFormatter.m b/platform/darwin/src/MGLCompassDirectionFormatter.m
index ca0468f508..efda5705a4 100644
--- a/platform/darwin/src/MGLDirectionFormatter.m
+++ b/platform/darwin/src/MGLCompassDirectionFormatter.m
@@ -1,63 +1,18 @@
-#import "MGLDirectionFormatter.h"
+#import "MGLCompassDirectionFormatter.h"
#define wrap(value, min, max) \
(fmod((fmod((value - min), (max - min)) + (max - min)), (max - min)) + min)
-@implementation MGLDirectionFormatter {
- NSNumberFormatter *_numberFormatter;
-}
+@implementation MGLCompassDirectionFormatter
- (instancetype)init {
if (self = [super init]) {
_unitStyle = NSFormattingUnitStyleMedium;
- _numberFormatter = [[NSNumberFormatter alloc] init];
}
return self;
}
-- (NSLocale *)locale {
- return _numberFormatter.locale;
-}
-
-- (void)setLocale:(NSLocale *)locale {
- _numberFormatter.locale = locale;
-}
-
- (NSString *)stringFromDirection:(CLLocationDirection)direction {
- if (self.origin == MGLDirectionFormatterOriginNorth) {
- return [self stringFromAbsoluteDirection:direction];
- } else {
- return [self stringFromRelativeDirection:direction];
- }
-}
-
-- (NSString *)stringFromRelativeDirection:(CLLocationDirection)direction {
- NSInteger hour = round(-wrap(-direction, -360, 0) / 360 * 12);
- NSString *format;
- NSNumberFormatterStyle style = NSNumberFormatterDecimalStyle;
- switch (self.unitStyle) {
- case NSFormattingUnitStyleShort:
- format = NSLocalizedString(@"%@:00", @"Relative heading format, short style");
- break;
-
- case NSFormattingUnitStyleMedium:
- format = NSLocalizedString(@"%@ o’clock", @"Relative heading format, medium style");
-
- break;
-
- case NSFormattingUnitStyleLong:
- format = NSLocalizedString(@"%@ o’clock", @"Relative heading format, long style");
- style = NSNumberFormatterSpellOutStyle;
- break;
-
- default:
- break;
- }
- _numberFormatter.numberStyle = style;
- return [NSString stringWithFormat:format, [_numberFormatter stringFromNumber:@(hour)]];
-}
-
-- (NSString *)stringFromAbsoluteDirection:(CLLocationDirection)direction {
static NS_ARRAY_OF(NSString *) *shortStrings;
static NS_ARRAY_OF(NSString *) *longStrings;
static dispatch_once_t onceToken;
@@ -138,7 +93,7 @@
NSLocalizedString(@"north by west", @"North by west, long"),
];
- NSAssert(shortStrings.count == longStrings.count, @"Long and short direction string arrays must have the same size.");
+ NSAssert(shortStrings.count == longStrings.count, @"Long and short compass direction string arrays must have the same size.");
});
NSInteger cardinalPoint = round(wrap(direction, 0, 360) / 360 * shortStrings.count);
diff --git a/platform/darwin/test/MGLClockDirectionFormatterTests.m b/platform/darwin/test/MGLClockDirectionFormatterTests.m
new file mode 100644
index 0000000000..b85f4bed8c
--- /dev/null
+++ b/platform/darwin/test/MGLClockDirectionFormatterTests.m
@@ -0,0 +1,49 @@
+#import <Mapbox/Mapbox.h>
+#import <XCTest/XCTest.h>
+
+static NSString * const MGLTestLocaleIdentifier = @"en-US";
+
+@interface MGLClockDirectionFormatterTests : XCTestCase
+
+@end
+
+@implementation MGLClockDirectionFormatterTests
+
+- (void)testClockDirections {
+ MGLClockDirectionFormatter *shortFormatter = [[MGLClockDirectionFormatter alloc] init];
+ shortFormatter.unitStyle = NSFormattingUnitStyleShort;
+ shortFormatter.locale = [NSLocale localeWithLocaleIdentifier:MGLTestLocaleIdentifier];
+
+ MGLClockDirectionFormatter *mediumFormatter = [[MGLClockDirectionFormatter alloc] init];
+ mediumFormatter.locale = [NSLocale localeWithLocaleIdentifier:MGLTestLocaleIdentifier];
+
+ MGLClockDirectionFormatter *longFormatter = [[MGLClockDirectionFormatter alloc] init];
+ longFormatter.unitStyle = NSFormattingUnitStyleLong;
+ longFormatter.locale = [NSLocale localeWithLocaleIdentifier:MGLTestLocaleIdentifier];
+
+ XCTAssertEqualObjects(@"9:00", [shortFormatter stringFromDirection:-90]);
+ XCTAssertEqualObjects(@"9 o’clock", [mediumFormatter stringFromDirection:-90]);
+ XCTAssertEqualObjects(@"nine o’clock", [longFormatter stringFromDirection:-90]);
+
+ XCTAssertEqualObjects(@"12:00", [shortFormatter stringFromDirection:0]);
+ XCTAssertEqualObjects(@"12 o’clock", [mediumFormatter stringFromDirection:0]);
+ XCTAssertEqualObjects(@"twelve o’clock", [longFormatter stringFromDirection:0]);
+
+ XCTAssertEqualObjects(@"2:00", [shortFormatter stringFromDirection:45]);
+ XCTAssertEqualObjects(@"2 o’clock", [mediumFormatter stringFromDirection:45]);
+ XCTAssertEqualObjects(@"two o’clock", [longFormatter stringFromDirection:45]);
+
+ XCTAssertEqualObjects(@"3:00", [shortFormatter stringFromDirection:90]);
+ XCTAssertEqualObjects(@"3 o’clock", [mediumFormatter stringFromDirection:90]);
+ XCTAssertEqualObjects(@"three o’clock", [longFormatter stringFromDirection:90]);
+
+ XCTAssertEqualObjects(@"6:00", [shortFormatter stringFromDirection:180]);
+ XCTAssertEqualObjects(@"6 o’clock", [mediumFormatter stringFromDirection:180]);
+ XCTAssertEqualObjects(@"six o’clock", [longFormatter stringFromDirection:180]);
+
+ XCTAssertEqualObjects(@"9:00", [shortFormatter stringFromDirection:270]);
+ XCTAssertEqualObjects(@"9 o’clock", [mediumFormatter stringFromDirection:270]);
+ XCTAssertEqualObjects(@"nine o’clock", [longFormatter stringFromDirection:270]);
+}
+
+@end
diff --git a/platform/darwin/test/MGLDirectionFormatterTests.m b/platform/darwin/test/MGLCompassDirectionFormatterTests.m
index 81c5223068..034e07818b 100644
--- a/platform/darwin/test/MGLDirectionFormatterTests.m
+++ b/platform/darwin/test/MGLCompassDirectionFormatterTests.m
@@ -1,27 +1,21 @@
#import <Mapbox/Mapbox.h>
#import <XCTest/XCTest.h>
-static NSString * const MGLTestLocaleIdentifier = @"en-US";
-
-@interface MGLDirectionFormatterTests : XCTestCase
+@interface MGLCompassDirectionFormatterTests : XCTestCase
@end
-@implementation MGLDirectionFormatterTests
+@implementation MGLCompassDirectionFormatterTests
-- (void)testAbsoluteDirections {
- MGLDirectionFormatter *shortFormatter = [[MGLDirectionFormatter alloc] init];
- XCTAssertEqual(shortFormatter.origin, MGLDirectionFormatterOriginNorth, @"Reference point should be north by default.");
+- (void)testCompassDirections {
+ MGLCompassDirectionFormatter *shortFormatter = [[MGLCompassDirectionFormatter alloc] init];
shortFormatter.unitStyle = NSFormattingUnitStyleShort;
- shortFormatter.locale = [NSLocale localeWithLocaleIdentifier:MGLTestLocaleIdentifier];
- MGLDirectionFormatter *mediumFormatter = [[MGLDirectionFormatter alloc] init];
+ MGLCompassDirectionFormatter *mediumFormatter = [[MGLCompassDirectionFormatter alloc] init];
XCTAssertEqual(mediumFormatter.unitStyle, NSFormattingUnitStyleMedium, @"Unit style should be medium by default.");
- mediumFormatter.locale = [NSLocale localeWithLocaleIdentifier:MGLTestLocaleIdentifier];
- MGLDirectionFormatter *longFormatter = [[MGLDirectionFormatter alloc] init];
+ MGLCompassDirectionFormatter *longFormatter = [[MGLCompassDirectionFormatter alloc] init];
longFormatter.unitStyle = NSFormattingUnitStyleLong;
- longFormatter.locale = [NSLocale localeWithLocaleIdentifier:MGLTestLocaleIdentifier];
XCTAssertEqualObjects(@"NW", [shortFormatter stringFromDirection:-45]);
XCTAssertEqualObjects(@"northwest", [mediumFormatter stringFromDirection:-45]);
@@ -68,44 +62,4 @@ static NSString * const MGLTestLocaleIdentifier = @"en-US";
XCTAssertEqualObjects([mediumFormatter stringFromDirection:720], [longFormatter stringFromDirection:720]);
}
-- (void)testRelativeDirections {
- MGLDirectionFormatter *shortFormatter = [[MGLDirectionFormatter alloc] init];
- shortFormatter.origin = MGLDirectionFormatterOriginStraightAhead;
- shortFormatter.unitStyle = NSFormattingUnitStyleShort;
- shortFormatter.locale = [NSLocale localeWithLocaleIdentifier:MGLTestLocaleIdentifier];
-
- MGLDirectionFormatter *mediumFormatter = [[MGLDirectionFormatter alloc] init];
- mediumFormatter.origin = MGLDirectionFormatterOriginStraightAhead;
- mediumFormatter.locale = [NSLocale localeWithLocaleIdentifier:MGLTestLocaleIdentifier];
-
- MGLDirectionFormatter *longFormatter = [[MGLDirectionFormatter alloc] init];
- longFormatter.origin = MGLDirectionFormatterOriginStraightAhead;
- longFormatter.unitStyle = NSFormattingUnitStyleLong;
- longFormatter.locale = [NSLocale localeWithLocaleIdentifier:MGLTestLocaleIdentifier];
-
- XCTAssertEqualObjects(@"9:00", [shortFormatter stringFromDirection:-90]);
- XCTAssertEqualObjects(@"9 o’clock", [mediumFormatter stringFromDirection:-90]);
- XCTAssertEqualObjects(@"nine o’clock", [longFormatter stringFromDirection:-90]);
-
- XCTAssertEqualObjects(@"12:00", [shortFormatter stringFromDirection:0]);
- XCTAssertEqualObjects(@"12 o’clock", [mediumFormatter stringFromDirection:0]);
- XCTAssertEqualObjects(@"twelve o’clock", [longFormatter stringFromDirection:0]);
-
- XCTAssertEqualObjects(@"2:00", [shortFormatter stringFromDirection:45]);
- XCTAssertEqualObjects(@"2 o’clock", [mediumFormatter stringFromDirection:45]);
- XCTAssertEqualObjects(@"two o’clock", [longFormatter stringFromDirection:45]);
-
- XCTAssertEqualObjects(@"3:00", [shortFormatter stringFromDirection:90]);
- XCTAssertEqualObjects(@"3 o’clock", [mediumFormatter stringFromDirection:90]);
- XCTAssertEqualObjects(@"three o’clock", [longFormatter stringFromDirection:90]);
-
- XCTAssertEqualObjects(@"6:00", [shortFormatter stringFromDirection:180]);
- XCTAssertEqualObjects(@"6 o’clock", [mediumFormatter stringFromDirection:180]);
- XCTAssertEqualObjects(@"six o’clock", [longFormatter stringFromDirection:180]);
-
- XCTAssertEqualObjects(@"9:00", [shortFormatter stringFromDirection:270]);
- XCTAssertEqualObjects(@"9 o’clock", [mediumFormatter stringFromDirection:270]);
- XCTAssertEqualObjects(@"nine o’clock", [longFormatter stringFromDirection:270]);
-}
-
@end
diff --git a/platform/ios/framework/Mapbox.h b/platform/ios/framework/Mapbox.h
index db6aba1495..7afe2f77a8 100644
--- a/platform/ios/framework/Mapbox.h
+++ b/platform/ios/framework/Mapbox.h
@@ -10,8 +10,9 @@ FOUNDATION_EXPORT const unsigned char MapboxVersionString[];
#import "MGLAnnotation.h"
#import "MGLAnnotationImage.h"
#import "MGLCalloutView.h"
+#import "MGLClockDirectionFormatter.h"
+#import "MGLCompassDirectionFormatter.h"
#import "MGLCoordinateFormatter.h"
-#import "MGLDirectionFormatter.h"
#import "MGLMapCamera.h"
#import "MGLGeometry.h"
#import "MGLMapView.h"
diff --git a/platform/ios/ios.xcodeproj/project.pbxproj b/platform/ios/ios.xcodeproj/project.pbxproj
index 5ee63c1c5c..20b0cd96a9 100644
--- a/platform/ios/ios.xcodeproj/project.pbxproj
+++ b/platform/ios/ios.xcodeproj/project.pbxproj
@@ -33,10 +33,16 @@
DA35A2A11CC9E95F00E826B2 /* MGLCoordinateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A01CC9E95F00E826B2 /* MGLCoordinateFormatter.m */; };
DA35A2A21CC9E95F00E826B2 /* MGLCoordinateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A01CC9E95F00E826B2 /* MGLCoordinateFormatter.m */; };
DA35A2AA1CCA058D00E826B2 /* MGLCoordinateFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A91CCA058D00E826B2 /* MGLCoordinateFormatterTests.m */; };
- DA35A2B11CCA141D00E826B2 /* MGLDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2AF1CCA141D00E826B2 /* MGLDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA35A2B21CCA141D00E826B2 /* MGLDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2AF1CCA141D00E826B2 /* MGLDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA35A2B31CCA141D00E826B2 /* MGLDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B01CCA141D00E826B2 /* MGLDirectionFormatter.m */; };
- DA35A2B41CCA141D00E826B2 /* MGLDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B01CCA141D00E826B2 /* MGLDirectionFormatter.m */; };
+ DA35A2B11CCA141D00E826B2 /* MGLCompassDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2AF1CCA141D00E826B2 /* MGLCompassDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA35A2B21CCA141D00E826B2 /* MGLCompassDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2AF1CCA141D00E826B2 /* MGLCompassDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA35A2B31CCA141D00E826B2 /* MGLCompassDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B01CCA141D00E826B2 /* MGLCompassDirectionFormatter.m */; };
+ DA35A2B41CCA141D00E826B2 /* MGLCompassDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B01CCA141D00E826B2 /* MGLCompassDirectionFormatter.m */; };
+ DA35A2B81CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B71CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m */; };
+ DA35A2B91CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B71CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m */; };
+ DA35A2BB1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2BA1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA35A2BC1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2BA1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA35A2C51CCA9F8300E826B2 /* MGLClockDirectionFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C31CCA9F8300E826B2 /* MGLClockDirectionFormatterTests.m */; };
+ DA35A2C61CCA9F8300E826B2 /* MGLCompassDirectionFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C41CCA9F8300E826B2 /* MGLCompassDirectionFormatterTests.m */; };
DA4A26941CB6E337000B7809 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA1DC9561CB6C1C2006E619F /* Main.storyboard */; };
DA4A26951CB6E337000B7809 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA1DC95B1CB6C1C2006E619F /* LaunchScreen.storyboard */; };
DA8847D91CBAF91600AB86E3 /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; };
@@ -281,8 +287,12 @@
DA35A29D1CC9E94C00E826B2 /* MGLCoordinateFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MGLCoordinateFormatter.h; path = include/MGLCoordinateFormatter.h; sourceTree = "<group>"; };
DA35A2A01CC9E95F00E826B2 /* MGLCoordinateFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLCoordinateFormatter.m; path = src/MGLCoordinateFormatter.m; sourceTree = "<group>"; };
DA35A2A91CCA058D00E826B2 /* MGLCoordinateFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLCoordinateFormatterTests.m; path = ../../darwin/test/MGLCoordinateFormatterTests.m; sourceTree = "<group>"; };
- DA35A2AF1CCA141D00E826B2 /* MGLDirectionFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MGLDirectionFormatter.h; path = include/MGLDirectionFormatter.h; sourceTree = "<group>"; };
- DA35A2B01CCA141D00E826B2 /* MGLDirectionFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLDirectionFormatter.m; path = src/MGLDirectionFormatter.m; sourceTree = "<group>"; };
+ DA35A2AF1CCA141D00E826B2 /* MGLCompassDirectionFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MGLCompassDirectionFormatter.h; path = include/MGLCompassDirectionFormatter.h; sourceTree = "<group>"; };
+ DA35A2B01CCA141D00E826B2 /* MGLCompassDirectionFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLCompassDirectionFormatter.m; path = src/MGLCompassDirectionFormatter.m; sourceTree = "<group>"; };
+ DA35A2B71CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLClockDirectionFormatter.m; path = src/MGLClockDirectionFormatter.m; sourceTree = "<group>"; };
+ DA35A2BA1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MGLClockDirectionFormatter.h; path = include/MGLClockDirectionFormatter.h; sourceTree = "<group>"; };
+ DA35A2C31CCA9F8300E826B2 /* MGLClockDirectionFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLClockDirectionFormatterTests.m; path = ../../darwin/test/MGLClockDirectionFormatterTests.m; sourceTree = "<group>"; };
+ DA35A2C41CCA9F8300E826B2 /* MGLCompassDirectionFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLCompassDirectionFormatterTests.m; path = ../../darwin/test/MGLCompassDirectionFormatterTests.m; sourceTree = "<group>"; };
DA4A26961CB6E795000B7809 /* Mapbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Mapbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
DA8847D21CBAF91600AB86E3 /* Mapbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Mapbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
DA8847D61CBAF91600AB86E3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -517,6 +527,8 @@
DA2E88521CC036F400F24E7B /* SDK Tests */ = {
isa = PBXGroup;
children = (
+ DA35A2C31CCA9F8300E826B2 /* MGLClockDirectionFormatterTests.m */,
+ DA35A2C41CCA9F8300E826B2 /* MGLCompassDirectionFormatterTests.m */,
DA35A2A91CCA058D00E826B2 /* MGLCoordinateFormatterTests.m */,
DA2E885C1CC0382C00F24E7B /* MGLGeometryTests.mm */,
DA2E885D1CC0382C00F24E7B /* MGLOfflinePackTests.m */,
@@ -549,10 +561,12 @@
DA8847FF1CBAFA6200AB86E3 /* MGLAccountManager_Private.h */,
DA8848001CBAFA6200AB86E3 /* MGLAccountManager.m */,
DA8847E01CBAFA5100AB86E3 /* MGLAnnotation.h */,
+ DA35A2BA1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h */,
+ DA35A2B71CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m */,
+ DA35A2AF1CCA141D00E826B2 /* MGLCompassDirectionFormatter.h */,
+ DA35A2B01CCA141D00E826B2 /* MGLCompassDirectionFormatter.m */,
DA35A29D1CC9E94C00E826B2 /* MGLCoordinateFormatter.h */,
DA35A2A01CC9E95F00E826B2 /* MGLCoordinateFormatter.m */,
- DA35A2AF1CCA141D00E826B2 /* MGLDirectionFormatter.h */,
- DA35A2B01CCA141D00E826B2 /* MGLDirectionFormatter.m */,
DA8847E11CBAFA5100AB86E3 /* MGLGeometry.h */,
DA8848011CBAFA6200AB86E3 /* MGLGeometry_Private.h */,
DA8848021CBAFA6200AB86E3 /* MGLGeometry.mm */,
@@ -735,6 +749,7 @@
buildActionMask = 2147483647;
files = (
DA88483A1CBAFB8500AB86E3 /* MGLAnnotationImage.h in Headers */,
+ DA35A2BB1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h in Headers */,
DA8848861CBB033F00AB86E3 /* Fabric+FABKits.h in Headers */,
DA8848201CBAFA6200AB86E3 /* MGLOfflinePack_Private.h in Headers */,
DA8847FA1CBAFA5100AB86E3 /* MGLPolyline.h in Headers */,
@@ -762,7 +777,7 @@
DA88481E1CBAFA6200AB86E3 /* MGLMultiPoint_Private.h in Headers */,
DA35A29E1CC9E94C00E826B2 /* MGLCoordinateFormatter.h in Headers */,
DA8847F71CBAFA5100AB86E3 /* MGLOverlay.h in Headers */,
- DA35A2B11CCA141D00E826B2 /* MGLDirectionFormatter.h in Headers */,
+ DA35A2B11CCA141D00E826B2 /* MGLCompassDirectionFormatter.h in Headers */,
DA88488B1CBB037E00AB86E3 /* SMCalloutView.h in Headers */,
DA8847FE1CBAFA5100AB86E3 /* MGLTypes.h in Headers */,
DA8847F11CBAFA5100AB86E3 /* MGLGeometry.h in Headers */,
@@ -808,11 +823,12 @@
DABFB8681CBE99E500D62B32 /* MGLPolyline.h in Headers */,
DABFB86F1CBE9A0F00D62B32 /* MGLMapView.h in Headers */,
DABFB8631CBE99E500D62B32 /* MGLOfflineRegion.h in Headers */,
- DA35A2B21CCA141D00E826B2 /* MGLDirectionFormatter.h in Headers */,
+ DA35A2B21CCA141D00E826B2 /* MGLCompassDirectionFormatter.h in Headers */,
DABFB8731CBE9A9900D62B32 /* Mapbox.h in Headers */,
DABFB86B1CBE99E500D62B32 /* MGLTilePyramidOfflineRegion.h in Headers */,
DABFB85F1CBE99E500D62B32 /* MGLGeometry.h in Headers */,
DABFB85D1CBE99E500D62B32 /* MGLAccountManager.h in Headers */,
+ DA35A2BC1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h in Headers */,
DABFB86E1CBE9A0F00D62B32 /* MGLCalloutView.h in Headers */,
DABFB8601CBE99E500D62B32 /* MGLMapCamera.h in Headers */,
DABFB86A1CBE99E500D62B32 /* MGLStyle.h in Headers */,
@@ -1041,6 +1057,8 @@
DA2E88651CC0382C00F24E7B /* MGLStyleTests.mm in Sources */,
DA2E88611CC0382C00F24E7B /* MGLGeometryTests.mm in Sources */,
DA2E88641CC0382C00F24E7B /* MGLOfflineStorageTests.m in Sources */,
+ DA35A2C61CCA9F8300E826B2 /* MGLCompassDirectionFormatterTests.m in Sources */,
+ DA35A2C51CCA9F8300E826B2 /* MGLClockDirectionFormatterTests.m in Sources */,
DA2E88621CC0382C00F24E7B /* MGLOfflinePackTests.m in Sources */,
DA35A2AA1CCA058D00E826B2 /* MGLCoordinateFormatterTests.m in Sources */,
);
@@ -1056,12 +1074,13 @@
DA88482D1CBAFA6200AB86E3 /* NSBundle+MGLAdditions.m in Sources */,
DA88485B1CBAFB9800AB86E3 /* MGLUserLocation.m in Sources */,
DA88488C1CBB037E00AB86E3 /* SMCalloutView.m in Sources */,
+ DA35A2B81CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m in Sources */,
DA8848901CBB048E00AB86E3 /* reachability.m in Sources */,
DA8848211CBAFA6200AB86E3 /* MGLOfflinePack.mm in Sources */,
DA8848591CBAFB9800AB86E3 /* MGLMapView.mm in Sources */,
DA8848501CBAFB9800AB86E3 /* MGLAnnotationImage.m in Sources */,
DA8848281CBAFA6200AB86E3 /* MGLShape.m in Sources */,
- DA35A2B31CCA141D00E826B2 /* MGLDirectionFormatter.m in Sources */,
+ DA35A2B31CCA141D00E826B2 /* MGLCompassDirectionFormatter.m in Sources */,
DA8848321CBAFA6200AB86E3 /* NSString+MGLAdditions.m in Sources */,
DA35A2A11CC9E95F00E826B2 /* MGLCoordinateFormatter.m in Sources */,
DA8848291CBAFA6200AB86E3 /* MGLStyle.mm in Sources */,
@@ -1091,12 +1110,13 @@
DAA4E4201CBB730400178DFB /* MGLOfflinePack.mm in Sources */,
DAA4E4331CBB730400178DFB /* MGLUserLocation.m in Sources */,
DAA4E4351CBB730400178DFB /* SMCalloutView.m in Sources */,
+ DA35A2B91CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m in Sources */,
DAA4E4251CBB730400178DFB /* MGLShape.m in Sources */,
DAA4E42B1CBB730400178DFB /* NSString+MGLAdditions.m in Sources */,
DAA4E4261CBB730400178DFB /* MGLStyle.mm in Sources */,
DAA4E41D1CBB730400178DFB /* MGLGeometry.mm in Sources */,
DAA4E41F1CBB730400178DFB /* MGLMultiPoint.mm in Sources */,
- DA35A2B41CCA141D00E826B2 /* MGLDirectionFormatter.m in Sources */,
+ DA35A2B41CCA141D00E826B2 /* MGLCompassDirectionFormatter.m in Sources */,
DAA4E4281CBB730400178DFB /* MGLTypes.m in Sources */,
DA35A2A21CC9E95F00E826B2 /* MGLCoordinateFormatter.m in Sources */,
DAA4E42D1CBB730400178DFB /* MGLAnnotationImage.m in Sources */,
diff --git a/platform/osx/osx.xcodeproj/project.pbxproj b/platform/osx/osx.xcodeproj/project.pbxproj
index f31d5f6e55..fe93d425aa 100644
--- a/platform/osx/osx.xcodeproj/project.pbxproj
+++ b/platform/osx/osx.xcodeproj/project.pbxproj
@@ -11,9 +11,12 @@
DA35A2A41CC9EB1A00E826B2 /* MGLCoordinateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2A31CC9EB1A00E826B2 /* MGLCoordinateFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
DA35A2A61CC9EB2700E826B2 /* MGLCoordinateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A51CC9EB2700E826B2 /* MGLCoordinateFormatter.m */; };
DA35A2A81CC9F41600E826B2 /* MGLCoordinateFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A71CC9F41600E826B2 /* MGLCoordinateFormatterTests.m */; };
- DA35A2AD1CCA091800E826B2 /* MGLDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2AB1CCA091800E826B2 /* MGLDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA35A2AE1CCA091800E826B2 /* MGLDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2AC1CCA091800E826B2 /* MGLDirectionFormatter.m */; };
- DA35A2B61CCA14D700E826B2 /* MGLDirectionFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B51CCA14D700E826B2 /* MGLDirectionFormatterTests.m */; };
+ DA35A2AD1CCA091800E826B2 /* MGLCompassDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2AB1CCA091800E826B2 /* MGLCompassDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA35A2AE1CCA091800E826B2 /* MGLCompassDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2AC1CCA091800E826B2 /* MGLCompassDirectionFormatter.m */; };
+ DA35A2B61CCA14D700E826B2 /* MGLCompassDirectionFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B51CCA14D700E826B2 /* MGLCompassDirectionFormatterTests.m */; };
+ DA35A2BF1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2BD1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA35A2C01CCA9B1A00E826B2 /* MGLClockDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2BE1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.m */; };
+ DA35A2C21CCA9F4A00E826B2 /* MGLClockDirectionFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C11CCA9F4A00E826B2 /* MGLClockDirectionFormatterTests.m */; };
DA839E971CC2E3400062CAFB /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DA839E961CC2E3400062CAFB /* AppDelegate.m */; };
DA839E9A1CC2E3400062CAFB /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DA839E991CC2E3400062CAFB /* main.m */; };
DA839E9D1CC2E3400062CAFB /* MapDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = DA839E9C1CC2E3400062CAFB /* MapDocument.m */; };
@@ -142,9 +145,12 @@
DA35A2A31CC9EB1A00E826B2 /* MGLCoordinateFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MGLCoordinateFormatter.h; path = include/MGLCoordinateFormatter.h; sourceTree = "<group>"; };
DA35A2A51CC9EB2700E826B2 /* MGLCoordinateFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLCoordinateFormatter.m; path = src/MGLCoordinateFormatter.m; sourceTree = "<group>"; };
DA35A2A71CC9F41600E826B2 /* MGLCoordinateFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLCoordinateFormatterTests.m; path = ../../darwin/test/MGLCoordinateFormatterTests.m; sourceTree = "<group>"; };
- DA35A2AB1CCA091800E826B2 /* MGLDirectionFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MGLDirectionFormatter.h; path = include/MGLDirectionFormatter.h; sourceTree = "<group>"; };
- DA35A2AC1CCA091800E826B2 /* MGLDirectionFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLDirectionFormatter.m; path = src/MGLDirectionFormatter.m; sourceTree = "<group>"; };
- DA35A2B51CCA14D700E826B2 /* MGLDirectionFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLDirectionFormatterTests.m; path = ../../darwin/test/MGLDirectionFormatterTests.m; sourceTree = "<group>"; };
+ DA35A2AB1CCA091800E826B2 /* MGLCompassDirectionFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MGLCompassDirectionFormatter.h; path = include/MGLCompassDirectionFormatter.h; sourceTree = "<group>"; };
+ DA35A2AC1CCA091800E826B2 /* MGLCompassDirectionFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLCompassDirectionFormatter.m; path = src/MGLCompassDirectionFormatter.m; sourceTree = "<group>"; };
+ DA35A2B51CCA14D700E826B2 /* MGLCompassDirectionFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLCompassDirectionFormatterTests.m; path = ../../darwin/test/MGLCompassDirectionFormatterTests.m; sourceTree = "<group>"; };
+ DA35A2BD1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MGLClockDirectionFormatter.h; path = include/MGLClockDirectionFormatter.h; sourceTree = "<group>"; };
+ DA35A2BE1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLClockDirectionFormatter.m; path = src/MGLClockDirectionFormatter.m; sourceTree = "<group>"; };
+ DA35A2C11CCA9F4A00E826B2 /* MGLClockDirectionFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLClockDirectionFormatterTests.m; path = ../../darwin/test/MGLClockDirectionFormatterTests.m; sourceTree = "<group>"; };
DA839E921CC2E3400062CAFB /* Mapbox GL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Mapbox GL.app"; sourceTree = BUILT_PRODUCTS_DIR; };
DA839E951CC2E3400062CAFB /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
DA839E961CC2E3400062CAFB /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
@@ -357,8 +363,9 @@
DAE6C3371CC30DB200DB3429 /* SDK Tests */ = {
isa = PBXGroup;
children = (
+ DA35A2C11CCA9F4A00E826B2 /* MGLClockDirectionFormatterTests.m */,
+ DA35A2B51CCA14D700E826B2 /* MGLCompassDirectionFormatterTests.m */,
DA35A2A71CC9F41600E826B2 /* MGLCoordinateFormatterTests.m */,
- DA35A2B51CCA14D700E826B2 /* MGLDirectionFormatterTests.m */,
DAE6C3C81CC34BD800DB3429 /* MGLGeometryTests.mm */,
DAE6C3C91CC34BD800DB3429 /* MGLOfflinePackTests.m */,
DAE6C3CA1CC34BD800DB3429 /* MGLOfflineRegionTests.m */,
@@ -377,10 +384,12 @@
DAE6C36A1CC31E2A00DB3429 /* MGLAccountManager_Private.h */,
DAE6C36B1CC31E2A00DB3429 /* MGLAccountManager.m */,
DAE6C34B1CC31E0400DB3429 /* MGLAnnotation.h */,
+ DA35A2BD1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.h */,
+ DA35A2BE1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.m */,
+ DA35A2AB1CCA091800E826B2 /* MGLCompassDirectionFormatter.h */,
+ DA35A2AC1CCA091800E826B2 /* MGLCompassDirectionFormatter.m */,
DA35A2A31CC9EB1A00E826B2 /* MGLCoordinateFormatter.h */,
DA35A2A51CC9EB2700E826B2 /* MGLCoordinateFormatter.m */,
- DA35A2AB1CCA091800E826B2 /* MGLDirectionFormatter.h */,
- DA35A2AC1CCA091800E826B2 /* MGLDirectionFormatter.m */,
DAE6C34C1CC31E0400DB3429 /* MGLGeometry.h */,
DAE6C36C1CC31E2A00DB3429 /* MGLGeometry_Private.h */,
DAE6C36D1CC31E2A00DB3429 /* MGLGeometry.mm */,
@@ -488,6 +497,7 @@
DAE6C3661CC31E0400DB3429 /* MGLShape.h in Headers */,
DAE6C3C21CC31F4500DB3429 /* Mapbox.h in Headers */,
DAE6C3641CC31E0400DB3429 /* MGLPolygon.h in Headers */,
+ DA35A2BF1CCA9B1A00E826B2 /* MGLClockDirectionFormatter.h in Headers */,
DA35A2A41CC9EB1A00E826B2 /* MGLCoordinateFormatter.h in Headers */,
DAE6C3621CC31E0400DB3429 /* MGLOverlay.h in Headers */,
DAE6C3651CC31E0400DB3429 /* MGLPolyline.h in Headers */,
@@ -504,7 +514,7 @@
DAE6C3B91CC31EF300DB3429 /* MGLOpenGLLayer.h in Headers */,
DAE6C3891CC31E2A00DB3429 /* MGLMultiPoint_Private.h in Headers */,
DAE6C3A51CC31E9400DB3429 /* MGLMapView+IBAdditions.h in Headers */,
- DA35A2AD1CCA091800E826B2 /* MGLDirectionFormatter.h in Headers */,
+ DA35A2AD1CCA091800E826B2 /* MGLCompassDirectionFormatter.h in Headers */,
DAE6C3671CC31E0400DB3429 /* MGLStyle.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -670,6 +680,7 @@
DAE6C3941CC31E2A00DB3429 /* MGLStyle.mm in Sources */,
DAE6C3871CC31E2A00DB3429 /* MGLGeometry.mm in Sources */,
DAE6C3B81CC31EF300DB3429 /* MGLMapView+IBAdditions.m in Sources */,
+ DA35A2C01CCA9B1A00E826B2 /* MGLClockDirectionFormatter.m in Sources */,
DAE6C3BA1CC31EF300DB3429 /* MGLOpenGLLayer.mm in Sources */,
DAE6C38A1CC31E2A00DB3429 /* MGLMultiPoint.mm in Sources */,
DAE6C3961CC31E2A00DB3429 /* MGLTypes.m in Sources */,
@@ -682,7 +693,7 @@
DAE6C3851CC31E2A00DB3429 /* MGLAccountManager.m in Sources */,
DAE6C3921CC31E2A00DB3429 /* MGLPolyline.mm in Sources */,
DAE6C3B51CC31EF300DB3429 /* MGLCompassCell.m in Sources */,
- DA35A2AE1CCA091800E826B2 /* MGLDirectionFormatter.m in Sources */,
+ DA35A2AE1CCA091800E826B2 /* MGLCompassDirectionFormatter.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -690,9 +701,10 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ DA35A2C21CCA9F4A00E826B2 /* MGLClockDirectionFormatterTests.m in Sources */,
DAE6C3D41CC34C9900DB3429 /* MGLOfflineRegionTests.m in Sources */,
DAE6C3D61CC34C9900DB3429 /* MGLStyleTests.mm in Sources */,
- DA35A2B61CCA14D700E826B2 /* MGLDirectionFormatterTests.m in Sources */,
+ DA35A2B61CCA14D700E826B2 /* MGLCompassDirectionFormatterTests.m in Sources */,
DAE6C3D21CC34C9900DB3429 /* MGLGeometryTests.mm in Sources */,
DAE6C3D51CC34C9900DB3429 /* MGLOfflineStorageTests.m in Sources */,
DAE6C3D31CC34C9900DB3429 /* MGLOfflinePackTests.m in Sources */,
diff --git a/platform/osx/sdk/Mapbox.h b/platform/osx/sdk/Mapbox.h
index 4fc2e129c2..c7c030dbc2 100644
--- a/platform/osx/sdk/Mapbox.h
+++ b/platform/osx/sdk/Mapbox.h
@@ -9,7 +9,8 @@ FOUNDATION_EXPORT const unsigned char MapboxVersionString[];
#import <Mapbox/MGLAccountManager.h>
#import <Mapbox/MGLAnnotation.h>
#import <Mapbox/MGLAnnotationImage.h>
-#import <Mapbox/MGLDirectionFormatter.h>
+#import <Mapbox/MGLClockDirectionFormatter.h>
+#import <Mapbox/MGLCompassDirectionFormatter.h>
#import <Mapbox/MGLCoordinateFormatter.h>
#import <Mapbox/MGLGeometry.h>
#import <Mapbox/MGLMapCamera.h>