Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Per-attribute transition properties on MGLStyleLayer #8225

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[ios] MGLTransition implemented for style layer properties
  • Loading branch information
fabian-guerra committed Mar 10, 2017
commit 8ad49c3b2fceef1a6126468a63e8318f25184ebc
41 changes: 41 additions & 0 deletions platform/darwin/src/MGLBackgroundStyleLayer.mm
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#import "MGLSource.h"
#import "MGLMapView_Private.h"
#import "NSPredicate+MGLAdditions.h"
#import "NSDate+MGLAdditions.h"
#import "MGLStyleLayer_Private.h"
#import "MGLStyleValue_Private.h"
#import "MGLBackgroundStyleLayer.h"
Expand Down Expand Up @@ -84,13 +85,33 @@ - (void)removeFromMapView:(MGLMapView *)mapView

#pragma mark - Accessing the Paint Attributes

- (NSArray *)transitionKeys
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this method doesn’t have any dependencies on other instance methods, you can make this a class method. But I’m unclear on this method’s purpose. It appears to be unused.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This method returns the keys which you can add a transition

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, looking more closely, this method appears to be used only in tests (but is exposed publicly). As an alternative to this method, could we move the array of keys into the tests themselves?

{
NSMutableArray *transitionKeys = [NSMutableArray array];
[transitionKeys addObject:@"backgroundColor"];
[transitionKeys addObject:@"backgroundOpacity"];
[transitionKeys addObject:@"backgroundPattern"];

return transitionKeys;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be more efficient to return an array literal.

}

- (void)setBackgroundColor:(MGLStyleValue<MGLColor *> *)backgroundColor {
MGLAssertStyleLayerIsValid();

auto mbglValue = MGLStyleValueTransformer<mbgl::Color, MGLColor *>().toInterpolatablePropertyValue(backgroundColor);
self.rawLayer->setBackgroundColor(mbglValue);
}

- (void)mbx_setBackgroundColorTransition:(NSValue *)transitionValue {
MGLAssertStyleLayerIsValid();

MGLTransition transition;
[transitionValue getValue:&transition];

mbgl::style::TransitionOptions options { { MGLDurationInSecondsFromTimeInterval(transition.duration) }, { MGLDurationInSecondsFromTimeInterval(transition.delay) } };
self.rawLayer->setBackgroundColorTransition(options);
}

- (MGLStyleValue<MGLColor *> *)backgroundColor {
MGLAssertStyleLayerIsValid();

Expand All @@ -108,6 +129,16 @@ - (void)setBackgroundOpacity:(MGLStyleValue<NSNumber *> *)backgroundOpacity {
self.rawLayer->setBackgroundOpacity(mbglValue);
}

- (void)mbx_setBackgroundOpacityTransition:(NSValue *)transitionValue {
MGLAssertStyleLayerIsValid();

MGLTransition transition;
[transitionValue getValue:&transition];

mbgl::style::TransitionOptions options { { MGLDurationInSecondsFromTimeInterval(transition.duration) }, { MGLDurationInSecondsFromTimeInterval(transition.delay) } };
self.rawLayer->setBackgroundOpacityTransition(options);
}

- (MGLStyleValue<NSNumber *> *)backgroundOpacity {
MGLAssertStyleLayerIsValid();

Expand All @@ -125,6 +156,16 @@ - (void)setBackgroundPattern:(MGLStyleValue<NSString *> *)backgroundPattern {
self.rawLayer->setBackgroundPattern(mbglValue);
}

- (void)mbx_setBackgroundPatternTransition:(NSValue *)transitionValue {
MGLAssertStyleLayerIsValid();

MGLTransition transition;
[transitionValue getValue:&transition];

mbgl::style::TransitionOptions options { { MGLDurationInSecondsFromTimeInterval(transition.duration) }, { MGLDurationInSecondsFromTimeInterval(transition.delay) } };
self.rawLayer->setBackgroundPatternTransition(options);
}

- (MGLStyleValue<NSString *> *)backgroundPattern {
MGLAssertStyleLayerIsValid();

Expand Down
121 changes: 121 additions & 0 deletions platform/darwin/src/MGLCircleStyleLayer.mm
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#import "MGLSource.h"
#import "MGLMapView_Private.h"
#import "NSPredicate+MGLAdditions.h"
#import "NSDate+MGLAdditions.h"
#import "MGLStyleLayer_Private.h"
#import "MGLStyleValue_Private.h"
#import "MGLCircleStyleLayer.h"
Expand Down Expand Up @@ -134,13 +135,43 @@ - (void)removeFromMapView:(MGLMapView *)mapView

#pragma mark - Accessing the Paint Attributes

- (NSArray *)transitionKeys
{
NSMutableArray *transitionKeys = [NSMutableArray array];
[transitionKeys addObject:@"circleBlur"];
[transitionKeys addObject:@"circleColor"];
[transitionKeys addObject:@"circleOpacity"];
[transitionKeys addObject:@"circleRadius"];
[transitionKeys addObject:@"circleScaleAlignment"];
[transitionKeys addObject:@"circlePitchScale"];
[transitionKeys addObject:@"circleStrokeColor"];
[transitionKeys addObject:@"circleStrokeOpacity"];
[transitionKeys addObject:@"circleStrokeWidth"];
[transitionKeys addObject:@"circleTranslation"];
[transitionKeys addObject:@"circleTranslate"];
[transitionKeys addObject:@"circleTranslationAnchor"];
[transitionKeys addObject:@"circleTranslateAnchor"];

return transitionKeys;
}

- (void)setCircleBlur:(MGLStyleValue<NSNumber *> *)circleBlur {
MGLAssertStyleLayerIsValid();

auto mbglValue = MGLStyleValueTransformer<float, NSNumber *>().toDataDrivenPropertyValue(circleBlur);
self.rawLayer->setCircleBlur(mbglValue);
}

- (void)mbx_setCircleBlurTransition:(NSValue *)transitionValue {
MGLAssertStyleLayerIsValid();

MGLTransition transition;
[transitionValue getValue:&transition];

mbgl::style::TransitionOptions options { { MGLDurationInSecondsFromTimeInterval(transition.duration) }, { MGLDurationInSecondsFromTimeInterval(transition.delay) } };
self.rawLayer->setCircleBlurTransition(options);
}

- (MGLStyleValue<NSNumber *> *)circleBlur {
MGLAssertStyleLayerIsValid();

Expand All @@ -158,6 +189,16 @@ - (void)setCircleColor:(MGLStyleValue<MGLColor *> *)circleColor {
self.rawLayer->setCircleColor(mbglValue);
}

- (void)mbx_setCircleColorTransition:(NSValue *)transitionValue {
MGLAssertStyleLayerIsValid();

MGLTransition transition;
[transitionValue getValue:&transition];

mbgl::style::TransitionOptions options { { MGLDurationInSecondsFromTimeInterval(transition.duration) }, { MGLDurationInSecondsFromTimeInterval(transition.delay) } };
self.rawLayer->setCircleColorTransition(options);
}

- (MGLStyleValue<MGLColor *> *)circleColor {
MGLAssertStyleLayerIsValid();

Expand All @@ -175,6 +216,16 @@ - (void)setCircleOpacity:(MGLStyleValue<NSNumber *> *)circleOpacity {
self.rawLayer->setCircleOpacity(mbglValue);
}

- (void)mbx_setCircleOpacityTransition:(NSValue *)transitionValue {
MGLAssertStyleLayerIsValid();

MGLTransition transition;
[transitionValue getValue:&transition];

mbgl::style::TransitionOptions options { { MGLDurationInSecondsFromTimeInterval(transition.duration) }, { MGLDurationInSecondsFromTimeInterval(transition.delay) } };
self.rawLayer->setCircleOpacityTransition(options);
}

- (MGLStyleValue<NSNumber *> *)circleOpacity {
MGLAssertStyleLayerIsValid();

Expand All @@ -192,6 +243,16 @@ - (void)setCircleRadius:(MGLStyleValue<NSNumber *> *)circleRadius {
self.rawLayer->setCircleRadius(mbglValue);
}

- (void)mbx_setCircleRadiusTransition:(NSValue *)transitionValue {
MGLAssertStyleLayerIsValid();

MGLTransition transition;
[transitionValue getValue:&transition];

mbgl::style::TransitionOptions options { { MGLDurationInSecondsFromTimeInterval(transition.duration) }, { MGLDurationInSecondsFromTimeInterval(transition.delay) } };
self.rawLayer->setCircleRadiusTransition(options);
}

- (MGLStyleValue<NSNumber *> *)circleRadius {
MGLAssertStyleLayerIsValid();

Expand All @@ -209,6 +270,16 @@ - (void)setCircleScaleAlignment:(MGLStyleValue<NSValue *> *)circleScaleAlignment
self.rawLayer->setCirclePitchScale(mbglValue);
}

- (void)mbx_setCircleScaleAlignmentTransition:(NSValue *)transitionValue {
MGLAssertStyleLayerIsValid();

MGLTransition transition;
[transitionValue getValue:&transition];

mbgl::style::TransitionOptions options { { MGLDurationInSecondsFromTimeInterval(transition.duration) }, { MGLDurationInSecondsFromTimeInterval(transition.delay) } };
self.rawLayer->setCirclePitchScaleTransition(options);
}

- (MGLStyleValue<NSValue *> *)circleScaleAlignment {
MGLAssertStyleLayerIsValid();

Expand All @@ -233,6 +304,16 @@ - (void)setCircleStrokeColor:(MGLStyleValue<MGLColor *> *)circleStrokeColor {
self.rawLayer->setCircleStrokeColor(mbglValue);
}

- (void)mbx_setCircleStrokeColorTransition:(NSValue *)transitionValue {
MGLAssertStyleLayerIsValid();

MGLTransition transition;
[transitionValue getValue:&transition];

mbgl::style::TransitionOptions options { { MGLDurationInSecondsFromTimeInterval(transition.duration) }, { MGLDurationInSecondsFromTimeInterval(transition.delay) } };
self.rawLayer->setCircleStrokeColorTransition(options);
}

- (MGLStyleValue<MGLColor *> *)circleStrokeColor {
MGLAssertStyleLayerIsValid();

Expand All @@ -250,6 +331,16 @@ - (void)setCircleStrokeOpacity:(MGLStyleValue<NSNumber *> *)circleStrokeOpacity
self.rawLayer->setCircleStrokeOpacity(mbglValue);
}

- (void)mbx_setCircleStrokeOpacityTransition:(NSValue *)transitionValue {
MGLAssertStyleLayerIsValid();

MGLTransition transition;
[transitionValue getValue:&transition];

mbgl::style::TransitionOptions options { { MGLDurationInSecondsFromTimeInterval(transition.duration) }, { MGLDurationInSecondsFromTimeInterval(transition.delay) } };
self.rawLayer->setCircleStrokeOpacityTransition(options);
}

- (MGLStyleValue<NSNumber *> *)circleStrokeOpacity {
MGLAssertStyleLayerIsValid();

Expand All @@ -267,6 +358,16 @@ - (void)setCircleStrokeWidth:(MGLStyleValue<NSNumber *> *)circleStrokeWidth {
self.rawLayer->setCircleStrokeWidth(mbglValue);
}

- (void)mbx_setCircleStrokeWidthTransition:(NSValue *)transitionValue {
MGLAssertStyleLayerIsValid();

MGLTransition transition;
[transitionValue getValue:&transition];

mbgl::style::TransitionOptions options { { MGLDurationInSecondsFromTimeInterval(transition.duration) }, { MGLDurationInSecondsFromTimeInterval(transition.delay) } };
self.rawLayer->setCircleStrokeWidthTransition(options);
}

- (MGLStyleValue<NSNumber *> *)circleStrokeWidth {
MGLAssertStyleLayerIsValid();

Expand All @@ -284,6 +385,16 @@ - (void)setCircleTranslation:(MGLStyleValue<NSValue *> *)circleTranslation {
self.rawLayer->setCircleTranslate(mbglValue);
}

- (void)mbx_setCircleTranslationTransition:(NSValue *)transitionValue {
MGLAssertStyleLayerIsValid();

MGLTransition transition;
[transitionValue getValue:&transition];

mbgl::style::TransitionOptions options { { MGLDurationInSecondsFromTimeInterval(transition.duration) }, { MGLDurationInSecondsFromTimeInterval(transition.delay) } };
self.rawLayer->setCircleTranslateTransition(options);
}

- (MGLStyleValue<NSValue *> *)circleTranslation {
MGLAssertStyleLayerIsValid();

Expand All @@ -308,6 +419,16 @@ - (void)setCircleTranslationAnchor:(MGLStyleValue<NSValue *> *)circleTranslation
self.rawLayer->setCircleTranslateAnchor(mbglValue);
}

- (void)mbx_setCircleTranslationAnchorTransition:(NSValue *)transitionValue {
MGLAssertStyleLayerIsValid();

MGLTransition transition;
[transitionValue getValue:&transition];

mbgl::style::TransitionOptions options { { MGLDurationInSecondsFromTimeInterval(transition.duration) }, { MGLDurationInSecondsFromTimeInterval(transition.delay) } };
self.rawLayer->setCircleTranslateAnchorTransition(options);
}

- (MGLStyleValue<NSValue *> *)circleTranslationAnchor {
MGLAssertStyleLayerIsValid();

Expand Down
Loading