summaryrefslogtreecommitdiff
path: root/platform/darwin/src/MGLStyleLayer.mm
diff options
context:
space:
mode:
Diffstat (limited to 'platform/darwin/src/MGLStyleLayer.mm')
-rw-r--r--platform/darwin/src/MGLStyleLayer.mm49
1 files changed, 49 insertions, 0 deletions
diff --git a/platform/darwin/src/MGLStyleLayer.mm b/platform/darwin/src/MGLStyleLayer.mm
index 47f41e0388..60226a6842 100644
--- a/platform/darwin/src/MGLStyleLayer.mm
+++ b/platform/darwin/src/MGLStyleLayer.mm
@@ -65,6 +65,55 @@
return self.rawLayer->getMinZoom();
}
+- (void)setTransition:(MGLTransition)transition forKey:(NSString *)key
+{
+ SEL setPropertyTransitionSelector = [self mbx_selectorForKey:key];
+
+ if ([self respondsToSelector:setPropertyTransitionSelector]) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
+ [self performSelector:setPropertyTransitionSelector withObject:[NSValue value:&transition withObjCType:@encode(MGLTransition)] ];
+#pragma clang diagnostic pop
+ }
+}
+
+- (MGLTransition)transitionForKey:(NSString *)key
+{
+ MGLTransition transition;
+
+ SEL getPropertyTransitionSelector = [self mbx_selectorForKey:key];
+
+ if ([self respondsToSelector:getPropertyTransitionSelector]) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
+ NSValue *transitionValue = [self performSelector:getPropertyTransitionSelector];
+ [transitionValue getValue:&transition];
+#pragma clang diagnostic pop
+ }
+
+ return transition;
+}
+
+- (SEL)mbx_selectorForKey:(NSString *)key
+{
+ NSString *camelCaseKey;
+ if ([key length] > 1) {
+ camelCaseKey = [NSString stringWithFormat:@"%@%@", [[key substringToIndex:1] uppercaseString], [key substringFromIndex:1]];
+ } else {
+ camelCaseKey = [key uppercaseString];
+ }
+ NSString *setPropertyTransitionString = [NSString stringWithFormat:@"mbx_set%@Transition:", camelCaseKey];
+ SEL propertyTransitionSelector = NSSelectorFromString(setPropertyTransitionString);
+
+ return propertyTransitionSelector;
+}
+
+- (NSArray *)transitionKeys
+{
+ // This is overridden by subclasses
+ return nil;
+}
+
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@: %p; identifier = %@; visible = %@>",