diff options
Diffstat (limited to 'platform/darwin/src/MGLStyleAttributeFunction.mm')
-rw-r--r-- | platform/darwin/src/MGLStyleAttributeFunction.mm | 309 |
1 files changed, 0 insertions, 309 deletions
diff --git a/platform/darwin/src/MGLStyleAttributeFunction.mm b/platform/darwin/src/MGLStyleAttributeFunction.mm deleted file mode 100644 index 337e299127..0000000000 --- a/platform/darwin/src/MGLStyleAttributeFunction.mm +++ /dev/null @@ -1,309 +0,0 @@ -#import "MGLStyleAttributeFunction.h" - -#import "MGLStyleLayer_Private.h" -#import "MGLStyleAttributeValue_Private.h" -#import "MGLStyleAttributeFunction_Private.h" - -@implementation MGLStyleValue - -+ (instancetype)valueWithRawValue:(id)rawValue { - return [MGLStyleConstantValue valueWithRawValue:rawValue]; -} - -+ (instancetype)valueWithBase:(CGFloat)base stops:(NSDictionary *)stops { - return [MGLStyleFunction functionWithBase:base stops:stops]; -} - -+ (instancetype)valueWithStops:(NSDictionary *)stops { - return [MGLStyleFunction functionWithStops:stops]; -} - -@end - -@implementation MGLStyleConstantValue - -+ (instancetype)valueWithRawValue:(id)rawValue { - return [[self alloc] initWithRawValue:rawValue]; -} - -- (instancetype)initWithRawValue:(id)rawValue { - if (self = [super init]) { - _rawValue = rawValue; - } - return self; -} - -@end - -@implementation MGLStyleFunction - -+ (instancetype)functionWithBase:(CGFloat)base stops:(NSDictionary *)stops { - return [[self alloc] initWithBase:base stops:stops]; -} - -+ (instancetype)functionWithStops:(NSDictionary *)stops { - return [[self alloc] initWithBase:1 stops:stops]; -} - -- (instancetype)init { - if (self = [super init]) { - _base = 1; - } - return self; -} - -- (instancetype)initWithBase:(CGFloat)base stops:(NSDictionary *)stops { - if (self = [self init]) { - _base = base; - _stops = stops; - } - return self; -} - -@end - - - - - -@interface MGLStyleAttributeFunction() <MGLStyleAttributeValue_Private> -@end - -@implementation MGLStyleAttributeFunction - -- (instancetype)init -{ - if (self = [super init]) { - _base = @1; - } - return self; -} - -- (BOOL)isFunction -{ - return YES; -} - -- (mbgl::style::PropertyValue<mbgl::Color>)mbgl_colorPropertyValue -{ - __block std::vector<std::pair<float, mbgl::Color>> stops; - [self.stops enumerateKeysAndObjectsUsingBlock:^(NSNumber * _Nonnull zoomKey, MGLColor * _Nonnull color, BOOL * _Nonnull stop) { - NSAssert([color isKindOfClass:[MGLColor class]], @"Stops should be colors"); - stops.emplace_back(zoomKey.floatValue, color.mbgl_color); - }]; - return mbgl::style::Function<mbgl::Color>({{stops}}, _base.floatValue); -} - -- (mbgl::style::PropertyValue<float>)mbgl_floatPropertyValue -{ - __block std::vector<std::pair<float, float>> stops; - [self.stops enumerateKeysAndObjectsUsingBlock:^(NSNumber * _Nonnull zoomKey, NSNumber * _Nonnull number, BOOL * _Nonnull stop) { - NSAssert([number isKindOfClass:[NSNumber class]], @"Stops should be NSNumbers"); - stops.emplace_back(zoomKey.floatValue, number.floatValue); - }]; - return mbgl::style::Function<float>({{stops}}, _base.floatValue); -} - -- (mbgl::style::PropertyValue<bool>)mbgl_boolPropertyValue -{ - __block std::vector<std::pair<float, bool>> stops; - [self.stops enumerateKeysAndObjectsUsingBlock:^(NSNumber * _Nonnull zoomKey, NSNumber * _Nonnull number, BOOL * _Nonnull stop) { - NSAssert([number isKindOfClass:[NSNumber class]], @"Stops should be NSNumbers"); - stops.emplace_back(zoomKey.floatValue, number.boolValue); - }]; - return mbgl::style::Function<bool>({{stops}}, _base.floatValue); -} - -- (mbgl::style::PropertyValue<std::string>)mbgl_stringPropertyValue -{ - __block std::vector<std::pair<float, std::string>> stops; - [self.stops enumerateKeysAndObjectsUsingBlock:^(NSNumber * _Nonnull zoomKey, NSString * _Nonnull string, BOOL * _Nonnull stop) { - NSAssert([string isKindOfClass:[NSString class]], @"Stops should be strings"); - stops.emplace_back(zoomKey.floatValue, string.UTF8String); - }]; - return mbgl::style::Function<std::string>({{stops}}, _base.floatValue); -} - -- (mbgl::style::PropertyValue<std::vector<std::string> >)mbgl_stringArrayPropertyValue -{ - __block std::vector<std::pair<float, std::vector<std::string>>> stops; - [self.stops enumerateKeysAndObjectsUsingBlock:^(NSNumber * _Nonnull zoomKey, NSArray * _Nonnull strings, BOOL * _Nonnull stop) { - NSAssert([strings isKindOfClass:[NSArray class]], @"Stops should be NSArray"); - std::vector<std::string>convertedStrings; - for (NSString *string in strings) { - convertedStrings.emplace_back(string.UTF8String); - } - stops.emplace_back(zoomKey.floatValue, convertedStrings); - }]; - return mbgl::style::Function<std::vector<std::string>>({{stops}}, _base.floatValue); -} - -- (mbgl::style::PropertyValue<std::vector<float> >)mbgl_numberArrayPropertyValue -{ - __block std::vector<std::pair<float, std::vector<float>>> stops; - [self.stops enumerateKeysAndObjectsUsingBlock:^(NSNumber * _Nonnull zoomKey, NSArray * _Nonnull numbers, BOOL * _Nonnull stop) { - NSAssert([numbers isKindOfClass:[NSArray class]], @"Stops should be NSArray"); - std::vector<float>convertedNumbers; - for (NSNumber *number in numbers) { - convertedNumbers.emplace_back(number.floatValue); - } - stops.emplace_back(zoomKey.floatValue, convertedNumbers); - }]; - return mbgl::style::Function<std::vector<float>>({{stops}}, _base.floatValue); -} - -- (mbgl::style::PropertyValue<std::array<float, 4> >)mbgl_paddingPropertyValue -{ - __block std::vector<std::pair<float, std::array<float, 4>>> stops; - [self.stops enumerateKeysAndObjectsUsingBlock:^(NSNumber * _Nonnull zoomKey, NSValue * _Nonnull padding, BOOL * _Nonnull stop) { - NSAssert([padding isKindOfClass:[NSValue class]], @"Stops should be NSValue"); - stops.emplace_back(zoomKey.floatValue, padding.mgl_paddingArrayValue); - }]; - return mbgl::style::Function<std::array<float, 4>>({{stops}}, _base.floatValue); -} - -- (mbgl::style::PropertyValue<std::array<float, 2> >)mbgl_offsetPropertyValue -{ - __block std::vector<std::pair<float, std::array<float, 2>>> stops; - [self.stops enumerateKeysAndObjectsUsingBlock:^(NSNumber * _Nonnull zoomKey, NSValue * _Nonnull offset, BOOL * _Nonnull stop) { - NSAssert([offset isKindOfClass:[NSValue class]], @"Stops should be NSValue"); - stops.emplace_back(zoomKey.floatValue, offset.mgl_offsetArrayValue); - }]; - return mbgl::style::Function<std::array<float, 2>>({{stops}}, _base.floatValue); -} - -+ (instancetype)functionWithColorPropertyValue:(mbgl::style::Function<mbgl::Color>)property -{ - MGLStyleAttributeFunction *function = [[MGLStyleAttributeFunction alloc] init]; - auto stops = property.getStops(); - NSMutableDictionary *convertedStops = [NSMutableDictionary dictionaryWithCapacity:stops.size()]; - for (auto stop : stops) { - convertedStops[@(stop.first)] = [MGLColor mbgl_colorWithColor:stop.second]; - } - function.base = @(property.getBase()); - function.stops = convertedStops; - return function; -} - -+ (instancetype)functionWithNumberPropertyValue:(mbgl::style::Function<float>)property -{ - MGLStyleAttributeFunction *function = [[MGLStyleAttributeFunction alloc] init]; - auto stops = property.getStops(); - NSMutableDictionary *convertedStops = [NSMutableDictionary dictionaryWithCapacity:stops.size()]; - for (auto stop : stops) { - convertedStops[@(stop.first)] = @(stop.second); - } - function.base = @(property.getBase()); - function.stops = convertedStops; - return function; -} - -+ (instancetype)functionWithBoolPropertyValue:(mbgl::style::Function<bool>)property -{ - MGLStyleAttributeFunction *function = [[MGLStyleAttributeFunction alloc] init]; - auto stops = property.getStops(); - NSMutableDictionary *convertedStops = [NSMutableDictionary dictionaryWithCapacity:stops.size()]; - for (auto stop : stops) { - convertedStops[@(stop.first)] = @(stop.second); - } - function.base = @(property.getBase()); - function.stops = convertedStops; - return function; -} - -+ (instancetype)functionWithStringPropertyValue:(mbgl::style::Function<std::string>)property -{ - MGLStyleAttributeFunction *function = [[MGLStyleAttributeFunction alloc] init]; - auto stops = property.getStops(); - NSMutableDictionary *convertedStops = [NSMutableDictionary dictionaryWithCapacity:stops.size()]; - for (auto stop : stops) { - convertedStops[@(stop.first)] = @(stop.second.c_str()); - } - function.base = @(property.getBase()); - function.stops = convertedStops; - return function; -} - -+ (instancetype)functionWithOffsetPropertyValue:(mbgl::style::Function<std::array<float, 2> >)property -{ - MGLStyleAttributeFunction *function = [[MGLStyleAttributeFunction alloc] init]; - auto stops = property.getStops(); - NSMutableDictionary *convertedStops = [NSMutableDictionary dictionaryWithCapacity:stops.size()]; - for (auto stop : stops) { - convertedStops[@(stop.first)] = [NSValue mgl_valueWithOffsetArray:stop.second]; - } - function.base = @(property.getBase()); - function.stops = convertedStops; - return function; -} - -+ (instancetype)functionWithPaddingPropertyValue:(mbgl::style::Function<std::array<float, 4> >)property -{ - MGLStyleAttributeFunction *function = [[MGLStyleAttributeFunction alloc] init]; - auto stops = property.getStops(); - NSMutableDictionary *convertedStops = [NSMutableDictionary dictionaryWithCapacity:stops.size()]; - for (auto stop : stops) { - convertedStops[@(stop.first)] = [NSValue mgl_valueWithPaddingArray:stop.second]; - } - function.base = @(property.getBase()); - function.stops = convertedStops; - return function; -} - -+ (instancetype)functionWithStringArrayPropertyValue:(mbgl::style::Function<std::vector<std::string> >)property -{ - MGLStyleAttributeFunction *function = [[MGLStyleAttributeFunction alloc] init]; - auto stops = property.getStops(); - NSMutableDictionary *convertedStops = [NSMutableDictionary dictionaryWithCapacity:stops.size()]; - for (auto stop : stops) { - auto strings = stop.second; - NSMutableArray *convertedStrings = [NSMutableArray arrayWithCapacity:strings.size()]; - for (auto const& string: strings) { - [convertedStrings addObject:@(string.c_str())]; - } - convertedStops[@(stop.first)] = convertedStrings; - } - function.base = @(property.getBase()); - function.stops = convertedStops; - return function; -} - -+ (instancetype)functionWithNumberArrayPropertyValue:(mbgl::style::Function<std::vector<float> >)property -{ - MGLStyleAttributeFunction *function = [[MGLStyleAttributeFunction alloc] init]; - auto stops = property.getStops(); - NSMutableDictionary *convertedStops = [NSMutableDictionary dictionaryWithCapacity:stops.size()]; - for (auto stop : stops) { - auto numbers = stop.second; - NSMutableArray *convertedNumbers = [NSMutableArray arrayWithCapacity:numbers.size()]; - for (auto const& number: numbers) { - [convertedNumbers addObject:@(number)]; - } - convertedStops[@(stop.first)] = convertedNumbers; - } - function.base = @(property.getBase()); - function.stops = convertedStops; - return function; -} - -- (NSString *)description -{ - return [NSString stringWithFormat:@"<%@: %p, base = %@; stops = %@>", - NSStringFromClass([self class]), (void *)self, - self.base, - self.stops]; -} - -- (BOOL)isEqual:(MGLStyleAttributeFunction *)other -{ - return ([other isKindOfClass:[self class]] - && (other.base == self.base || [other.base isEqualToNumber:self.base]) - && [other.stops isEqualToDictionary:self.stops]); -} - -- (NSUInteger)hash -{ - return self.base.hash + self.stops.hash; -} - -@end |