* [ios, macos] Update the logging subsystem to platform agnostic. * [ios, macos] Add coordinate to string function. * [ios, macos] Add BOOL to string function. * [ios, macos] Add tracing logs. * [ios, macos] Add tracing logs to generated style classes. * [ios, macos] Split logging categories accordingly to MGLLoggingLevel. * [ios, macos] Log network requests. * [ios, macos] Migrate NSAssert to MGLAssert. * [ios, macos] Include MGLLoggingConfiguration to filesource-files.txt. * [ios, macos] Fix logger string specifier for the line parameter. * [ios, macos] Add logs to shapes classes. * [ios, macos] Add logs to offline classes. * [ios, macos] Add logs to annotation classes. * [ios, macos] Add logs to foundation classes. * [ios, macos] Fix snapshotter size logging. * [macos] Add logs to map view. * [ios, macos] Fix string from boolean prefix, add custom function for NSCAssert. * Log size test * [ios, macos] Add logging conditional compilation flag. * [ios, macos] Rename function NSStringFromMGLTransition to MGLStringFromMGLTransition. * [ios, macos] Remove verbose logging for release builds. * [ios, macos] Rename NSStringFromCLLocationCoordinate2D to MGLStringFromCLLocationCoordinate2D. * [ios, macos] Clean unnecesary blank lines in MGLLight.mm set methods. * [ios, macos] Fix logging grammar, format, function names. * [ios, macos] Remove compilation flag, rename flags.
61 lines
2.0 KiB
Objective-C
61 lines
2.0 KiB
Objective-C
#import "MGLClockDirectionFormatter.h"
|
||
|
||
#import "NSBundle+MGLAdditions.h"
|
||
#import "MGLLoggingConfiguration_Private.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];
|
||
_numberFormatter.numberStyle = NSNumberFormatterDecimalStyle;
|
||
}
|
||
return self;
|
||
}
|
||
|
||
- (NSString *)stringFromDirection:(CLLocationDirection)direction {
|
||
NSInteger hour = round(wrap(direction, 0, 360) / 360 * 12);
|
||
if (hour == 0) {
|
||
hour = 12;
|
||
}
|
||
NSString *format;
|
||
switch (self.unitStyle) {
|
||
case NSFormattingUnitStyleShort:
|
||
format = NSLocalizedStringWithDefaultValue(@"CLOCK_FMT_SHORT", @"Foundation", nil, @"%@:00", @"Clock position format, short: {hours}:00");
|
||
break;
|
||
|
||
case NSFormattingUnitStyleMedium:
|
||
format = NSLocalizedStringWithDefaultValue(@"CLOCK_FMT_MEDIUM", @"Foundation", nil, @"%@ o’clock", @"Clock position format, medium: {hours} o’clock");
|
||
|
||
break;
|
||
|
||
case NSFormattingUnitStyleLong:
|
||
format = NSLocalizedStringWithDefaultValue(@"CLOCK_FMT_LONG", @"Foundation", nil, @"%@ o’clock", @"Clock position format, long: {hours} o’clock");
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
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 {
|
||
MGLAssert(NO, @"-getObjectValue:forString:errorDescription: has not been implemented");
|
||
return NO;
|
||
}
|
||
|
||
@end
|