diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2018-11-28 11:29:50 +0200 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2018-11-29 14:23:55 +0200 |
commit | e64c28613a3e2f0ee9591ab412a466d52ca17551 (patch) | |
tree | 914cc344412361849746808ae150a6a2718ec718 /platform/darwin/src | |
parent | 217acb894893f64c35a876f573cc616321cfeafd (diff) | |
download | qtlocation-mapboxgl-e64c28613a3e2f0ee9591ab412a466d52ca17551.tar.gz |
[core] Support fill-extrusion-vertical-gradient
Diffstat (limited to 'platform/darwin/src')
-rw-r--r-- | platform/darwin/src/MGLFillExtrusionStyleLayer.h | 27 | ||||
-rw-r--r-- | platform/darwin/src/MGLFillExtrusionStyleLayer.mm | 25 |
2 files changed, 52 insertions, 0 deletions
diff --git a/platform/darwin/src/MGLFillExtrusionStyleLayer.h b/platform/darwin/src/MGLFillExtrusionStyleLayer.h index 6e807c1b44..98eb6b3c20 100644 --- a/platform/darwin/src/MGLFillExtrusionStyleLayer.h +++ b/platform/darwin/src/MGLFillExtrusionStyleLayer.h @@ -164,6 +164,33 @@ MGL_EXPORT @property (nonatomic) MGLTransition fillExtrusionColorTransition; /** + Whether to apply a vertical gradient to the sides of a fill-extrusion layer. If + true, sides will be shaded slightly darker farther down. + + The default value of this property is an expression that evaluates to `YES`. + Set this property to `nil` to reset it to the default value. + + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-fill-extrusion-vertical-gradient"><code>fill-extrusion-vertical-gradient</code></a> + layout property in the Mapbox Style Specification. + + You can set this property to an expression containing any of the following: + + * Constant Boolean values + * Predefined functions, including mathematical and string operators + * Conditional expressions + * Variable assignments and references to assigned variables + * Step functions applied to the `$zoomLevel` variable + + This property does not support applying interpolation functions to the + `$zoomLevel` variable or applying interpolation or step functions to feature + attributes. + */ +@property (nonatomic, null_resettable) NSExpression *fillExtrusionHasVerticalGradient; + +@property (nonatomic, null_resettable) NSExpression *fillExtrusionVerticalGradient __attribute__((unavailable("Use fillExtrusionHasVerticalGradient instead."))); + +/** The height with which to extrude this layer. This property is measured in meters. diff --git a/platform/darwin/src/MGLFillExtrusionStyleLayer.mm b/platform/darwin/src/MGLFillExtrusionStyleLayer.mm index 03676a4ed5..e4e9c707ea 100644 --- a/platform/darwin/src/MGLFillExtrusionStyleLayer.mm +++ b/platform/darwin/src/MGLFillExtrusionStyleLayer.mm @@ -156,6 +156,31 @@ namespace mbgl { return transition; } +- (void)setFillExtrusionHasVerticalGradient:(NSExpression *)fillExtrusionHasVerticalGradient { + MGLAssertStyleLayerIsValid(); + MGLLogDebug(@"Setting fillExtrusionHasVerticalGradient: %@", fillExtrusionHasVerticalGradient); + + auto mbglValue = MGLStyleValueTransformer<bool, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<bool>>(fillExtrusionHasVerticalGradient, false); + self.rawLayer->setFillExtrusionVerticalGradient(mbglValue); +} + +- (NSExpression *)fillExtrusionHasVerticalGradient { + MGLAssertStyleLayerIsValid(); + + auto propertyValue = self.rawLayer->getFillExtrusionVerticalGradient(); + if (propertyValue.isUndefined()) { + propertyValue = self.rawLayer->getDefaultFillExtrusionVerticalGradient(); + } + return MGLStyleValueTransformer<bool, NSNumber *>().toExpression(propertyValue); +} + +- (void)setFillExtrusionVerticalGradient:(NSExpression *)fillExtrusionVerticalGradient { +} + +- (NSExpression *)fillExtrusionVerticalGradient { + return self.fillExtrusionHasVerticalGradient; +} + - (void)setFillExtrusionHeight:(NSExpression *)fillExtrusionHeight { MGLAssertStyleLayerIsValid(); MGLLogDebug(@"Setting fillExtrusionHeight: %@", fillExtrusionHeight); |