diff options
author | Jesse Bounds <jesse@rebounds.net> | 2017-02-08 12:27:12 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-08 12:27:12 -0800 |
commit | 06a8ed79598beae923b795dea711834b4775f6b0 (patch) | |
tree | 65afbaaf19bee1e7ed7508d6c3b49ee88aa6fc37 /platform/darwin/src/MGLStyleValue.mm | |
parent | 6d69686a12f5fb3761e3318410f5626198d0b92c (diff) | |
download | qtlocation-mapboxgl-06a8ed79598beae923b795dea711834b4775f6b0.tar.gz |
Add back MGLStyleFunction and re-document MGLStyleValue (#7943)
[ios, macos] Add back MGLStyleFunction and re-document MGLStyleValue
Diffstat (limited to 'platform/darwin/src/MGLStyleValue.mm')
-rw-r--r-- | platform/darwin/src/MGLStyleValue.mm | 104 |
1 files changed, 74 insertions, 30 deletions
diff --git a/platform/darwin/src/MGLStyleValue.mm b/platform/darwin/src/MGLStyleValue.mm index 1a8e6edeab..020dc27d6a 100644 --- a/platform/darwin/src/MGLStyleValue.mm +++ b/platform/darwin/src/MGLStyleValue.mm @@ -17,16 +17,16 @@ const MGLStyleFunctionOption MGLStyleFunctionOptionDefaultValue = @"MGLStyleFunc return [MGLCameraStyleFunction functionWithInterpolationMode:MGLInterpolationModeExponential stops:stops options:nil]; } -+ (instancetype)valueWithInterpolationMode:(MGLInterpolationMode)interpolationMode cameraStops:(NSDictionary *)stops options:(NSDictionary *)options { - return [MGLCameraStyleFunction functionWithInterpolationMode:interpolationMode stops:stops options:options]; ++ (instancetype)valueWithInterpolationMode:(MGLInterpolationMode)interpolationMode cameraStops:(NSDictionary *)cameraStops options:(NSDictionary *)options { + return [MGLCameraStyleFunction functionWithInterpolationMode:interpolationMode stops:cameraStops options:options]; } -+ (instancetype)valueWithInterpolationMode:(MGLInterpolationMode)interpolationMode sourceStops:(NSDictionary *)stops attributeName:(NSString *)attributeName options:(NSDictionary *)options { - return [MGLSourceStyleFunction functionWithInterpolationMode:interpolationMode stops:stops attributeName:attributeName options:options]; ++ (instancetype)valueWithInterpolationMode:(MGLInterpolationMode)interpolationMode sourceStops:(NSDictionary *)sourceStops attributeName:(NSString *)attributeName options:(NSDictionary *)options { + return [MGLSourceStyleFunction functionWithInterpolationMode:interpolationMode stops:sourceStops attributeName:attributeName options:options]; } -+ (instancetype)valueWithInterpolationMode:(MGLInterpolationMode)interpolationMode compositeStops:(NSDictionary *)stops attributeName:(NSString *)attributeName options:(NSDictionary *)options { - return [MGLCompositeStyleFunction functionWithInterpolationMode:interpolationMode stops:stops attributeName:attributeName options:options]; ++ (instancetype)valueWithInterpolationMode:(MGLInterpolationMode)interpolationMode compositeStops:(NSDictionary *)compositeStops attributeName:(NSString *)attributeName options:(NSDictionary *)options { + return [MGLCompositeStyleFunction functionWithInterpolationMode:interpolationMode stops:compositeStops attributeName:attributeName options:options]; } @end @@ -62,16 +62,63 @@ const MGLStyleFunctionOption MGLStyleFunctionOptionDefaultValue = @"MGLStyleFunc @end +@implementation MGLStyleFunction + ++ (instancetype)functionWithStops:(NSDictionary *)stops { + return [MGLCameraStyleFunction functionWithInterpolationMode:MGLInterpolationModeExponential stops:stops options:nil]; +} + ++ (instancetype)functionWithInterpolationBase:(CGFloat)interpolationBase stops:(NSDictionary *)stops { + return [MGLCameraStyleFunction functionWithInterpolationMode:MGLInterpolationModeExponential stops:stops options:@{MGLStyleFunctionOptionInterpolationBase: @(interpolationBase)}]; +} + +- (instancetype)init { + if (self = [super init]) { + self.interpolationBase = 1.0; + self.stops = @{}; + } + return self; +} + +- (instancetype)initWithInterpolationBase:(CGFloat)interpolationBase stops:(NSDictionary *)stops { + if (self = [super init]) { + self.interpolationBase = interpolationBase; + self.stops = stops; + } + return self; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, \ + stops = %@, \ + interpolationBase = %f>", + NSStringFromClass([self class]), (void *)self, + self.stops, + self.interpolationBase]; +} + +- (BOOL)isEqual:(MGLStyleFunction *)other { + return ([other isKindOfClass:[self class]] + && [other.stops isEqualToDictionary:self.stops] + && other.interpolationBase == self.interpolationBase); +} + +- (NSUInteger)hash { + return self.stops.hash + @(self.interpolationBase).hash; +} + +@end + @implementation MGLCameraStyleFunction -@synthesize interpolationMode = _interpolationMode; +@dynamic stops; + (instancetype)functionWithInterpolationMode:(MGLInterpolationMode)interpolationMode stops:(NSDictionary *)stops options:(NSDictionary *)options { return [[self alloc] initWithInterpolationMode:interpolationMode stops:stops options:options]; } -- (instancetype)init { - return [self initWithInterpolationMode:MGLInterpolationModeExponential stops:@{} options:nil]; +- (instancetype)initWithInterpolationBase:(CGFloat)interpolationBase stops:(NSDictionary *)stops { + return [self initWithInterpolationMode:MGLInterpolationModeExponential stops:stops options:@{MGLStyleFunctionOptionInterpolationBase: @(interpolationBase)}]; } - (instancetype)initWithInterpolationMode:(MGLInterpolationMode)interpolationMode stops:(NSDictionary *)stops options:(NSDictionary *)options { @@ -82,14 +129,13 @@ const MGLStyleFunctionOption MGLStyleFunctionOptionDefaultValue = @"MGLStyleFunc } if (self == [super init]) { - _interpolationMode = interpolationMode; - _stops = stops; - _interpolationBase = 1.0; + self.interpolationMode = interpolationMode; + self.stops = stops; if ([options.allKeys containsObject:MGLStyleFunctionOptionInterpolationBase]) { if ([options[MGLStyleFunctionOptionInterpolationBase] isKindOfClass:[NSNumber class]]) { NSNumber *value = (NSNumber *)options[MGLStyleFunctionOptionInterpolationBase]; - _interpolationBase = [value floatValue]; + self.interpolationBase = [value floatValue]; } else { [NSException raise:NSInvalidArgumentException format:@"Interpolation base must be an NSNumber that represents a CGFloat."]; } @@ -117,29 +163,28 @@ const MGLStyleFunctionOption MGLStyleFunctionOptionDefaultValue = @"MGLStyleFunc } - (NSUInteger)hash { - return self.interpolationMode + self.stops.hash + self.interpolationBase; + return @(self.interpolationMode).hash + self.stops.hash + @(self.interpolationBase).hash; } @end @implementation MGLSourceStyleFunction -@synthesize interpolationMode = _interpolationMode; +@dynamic stops; + (instancetype)functionWithInterpolationMode:(MGLInterpolationMode)interpolationMode stops:(NSDictionary *)stops attributeName:(NSString *)attributeName options:(NSDictionary *)options { return [[self alloc] initWithInterpolationMode:interpolationMode stops:stops attributeName:attributeName options:options]; } -- (instancetype)init { - return [self initWithInterpolationMode:MGLInterpolationModeExponential stops:nil attributeName:@"" options:nil]; +- (instancetype)initWithInterpolationBase:(CGFloat)interpolationBase stops:(NSDictionary *)stops { + return [self initWithInterpolationMode:MGLInterpolationModeExponential stops:stops attributeName:@"" options:@{MGLStyleFunctionOptionInterpolationBase: @(interpolationBase)}]; } - (instancetype)initWithInterpolationMode:(MGLInterpolationMode)interpolationMode stops:(NSDictionary *)stops attributeName:(NSString *)attributeName options:(NSDictionary *)options { if (self == [super init]) { - _interpolationMode = interpolationMode; - _stops = stops; + self.interpolationMode = interpolationMode; + self.stops = stops; _attributeName = attributeName; - _interpolationBase = 1.0; if ([options.allKeys containsObject:MGLStyleFunctionOptionDefaultValue]) { if ([options[MGLStyleFunctionOptionDefaultValue] isKindOfClass:[MGLStyleValue class]]) { @@ -153,7 +198,7 @@ const MGLStyleFunctionOption MGLStyleFunctionOptionDefaultValue = @"MGLStyleFunc if ([options.allKeys containsObject:MGLStyleFunctionOptionInterpolationBase]) { if ([options[MGLStyleFunctionOptionInterpolationBase] isKindOfClass:[NSNumber class]]) { NSNumber *value = (NSNumber *)options[MGLStyleFunctionOptionInterpolationBase]; - _interpolationBase = [value floatValue]; + self.interpolationBase = [value floatValue]; } else { [NSException raise:NSInvalidArgumentException format:@"Interpolation base must be an NSNumber that represents a CGFloat."]; } @@ -188,29 +233,28 @@ const MGLStyleFunctionOption MGLStyleFunctionOptionDefaultValue = @"MGLStyleFunc } - (NSUInteger)hash { - return self.interpolationMode + self.stops.hash + self.attributeName.hash + self.defaultValue.hash + self.interpolationBase; + return @(self.interpolationMode).hash + self.stops.hash + self.attributeName.hash + self.defaultValue.hash + @(self.interpolationBase).hash; } @end @implementation MGLCompositeStyleFunction -@synthesize interpolationMode = _interpolationMode; +@dynamic stops; + (instancetype)functionWithInterpolationMode:(MGLInterpolationMode)interpolationMode stops:(NSDictionary *)stops attributeName:(NSString *)attributeName options:(NSDictionary *)options { return [[self alloc] initWithInterpolationMode:interpolationMode stops:stops attributeName:attributeName options:options]; } -- (instancetype)init { - return [self initWithInterpolationMode:MGLInterpolationModeExponential stops:@{} attributeName:@"" options:nil]; +- (instancetype)initWithInterpolationBase:(CGFloat)interpolationBase stops:(NSDictionary *)stops { + return [self initWithInterpolationMode:MGLInterpolationModeExponential stops:stops attributeName:@"" options:@{MGLStyleFunctionOptionInterpolationBase: @(interpolationBase)}]; } - (instancetype)initWithInterpolationMode:(MGLInterpolationMode)interpolationMode stops:(NSDictionary *)stops attributeName:(NSString *)attributeName options:(NSDictionary *)options { if (self == [super init]) { - _interpolationMode = interpolationMode; - _stops = stops; + self.interpolationMode = interpolationMode; + self.stops = stops; _attributeName = attributeName; - _interpolationBase = 1.0; if ([options.allKeys containsObject:MGLStyleFunctionOptionDefaultValue]) { if ([options[MGLStyleFunctionOptionDefaultValue] isKindOfClass:[MGLStyleValue class]]) { @@ -224,7 +268,7 @@ const MGLStyleFunctionOption MGLStyleFunctionOptionDefaultValue = @"MGLStyleFunc if ([options.allKeys containsObject:MGLStyleFunctionOptionInterpolationBase]) { if ([options[MGLStyleFunctionOptionInterpolationBase] isKindOfClass:[NSNumber class]]) { NSNumber *value = (NSNumber *)options[MGLStyleFunctionOptionInterpolationBase]; - _interpolationBase = [value floatValue]; + self.interpolationBase = [value floatValue]; } else { [NSException raise:NSInvalidArgumentException format:@"Interpolation base must be an NSNumber that represents a CGFloat."]; } @@ -258,7 +302,7 @@ const MGLStyleFunctionOption MGLStyleFunctionOptionDefaultValue = @"MGLStyleFunc } - (NSUInteger)hash { - return self.interpolationMode + self.stops.hash + self.attributeName.hash + self.interpolationBase; + return @(self.interpolationMode).hash + self.stops.hash + self.attributeName.hash + @(self.interpolationBase).hash; } @end |