summaryrefslogtreecommitdiff
path: root/platform/darwin/src/MGLStyleAttributeFunction.mm
diff options
context:
space:
mode:
Diffstat (limited to 'platform/darwin/src/MGLStyleAttributeFunction.mm')
-rw-r--r--platform/darwin/src/MGLStyleAttributeFunction.mm309
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