diff options
author | Lauren Budorick <lauren@mapbox.com> | 2017-04-27 15:56:55 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-27 15:56:55 -0700 |
commit | f6e79d70735361438655f279c8699a786d25458c (patch) | |
tree | cc01ae7aba097bae4aa84beb12ac6b8f34f4d51a /platform/darwin/src/MGLFillExtrusionStyleLayer.h | |
parent | 839ad87f37a4880804fb4c79157d998ac59954b5 (diff) | |
download | qtlocation-mapboxgl-f6e79d70735361438655f279c8699a786d25458c.tar.gz |
[core] Render fill-extrusion layers (#8431)
Diffstat (limited to 'platform/darwin/src/MGLFillExtrusionStyleLayer.h')
-rw-r--r-- | platform/darwin/src/MGLFillExtrusionStyleLayer.h | 364 |
1 files changed, 364 insertions, 0 deletions
diff --git a/platform/darwin/src/MGLFillExtrusionStyleLayer.h b/platform/darwin/src/MGLFillExtrusionStyleLayer.h new file mode 100644 index 0000000000..84f6bedde4 --- /dev/null +++ b/platform/darwin/src/MGLFillExtrusionStyleLayer.h @@ -0,0 +1,364 @@ +// This file is generated. +// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`. + +#import "MGLFoundation.h" +#import "MGLStyleValue.h" +#import "MGLVectorStyleLayer.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + Controls the translation reference point. + + Values of this type are used in the `MGLFillExtrusionStyleLayer.fillExtrusionTranslationAnchor` + property. + */ +typedef NS_ENUM(NSUInteger, MGLFillExtrusionTranslationAnchor) { + /** + The fill extrusion is translated relative to the map. + */ + MGLFillExtrusionTranslationAnchorMap, + /** + The fill extrusion is translated relative to the viewport. + */ + MGLFillExtrusionTranslationAnchorViewport, +}; + +/** + An `MGLFillExtrusionStyleLayer` is a style layer that renders one or more 3D + extruded polygons on the map. + + Use a fill-extrusion style layer to configure the visual appearance of polygon + or multipolygon features in vector tiles loaded by an `MGLVectorSource` object + or `MGLPolygon`, `MGLPolygonFeature`, `MGLMultiPolygon`, or + `MGLMultiPolygonFeature` instances in an `MGLShapeSource` object. + + You can access an existing fill-extrusion style layer using the + `-[MGLStyle layerWithIdentifier:]` method if you know its identifier; + otherwise, find it using the `MGLStyle.layers` property. You can also create a + new fill-extrusion style layer and add it to the style using a method such as + `-[MGLStyle addLayer:]`. + + ### Example + + ```swift + let layer = MGLFillExtrusionStyleLayer(identifier: "buildings", source: buildings) + layer.sourceLayerIdentifier = "building" + layer.fillExtrusionHeight = MGLStyleValue(interpolationMode: .identity, sourceStops: nil, attributeName: "height", options: nil) + layer.fillExtrusionBase = MGLStyleValue(interpolationMode: .identity, sourceStops: nil, attributeName: "min_height", options: nil) + layer.predicate = NSPredicate(format: "extrude == TRUE") + mapView.style?.addLayer(layer) + ``` + */ +MGL_EXPORT +@interface MGLFillExtrusionStyleLayer : MGLVectorStyleLayer + +/** + Returns a fill-extrusion style layer initialized with an identifier and source. + + After initializing and configuring the style layer, add it to a map view’s + style using the `-[MGLStyle addLayer:]` or + `-[MGLStyle insertLayer:belowLayer:]` method. + + @param identifier A string that uniquely identifies the source in the style to + which it is added. + @param source The source from which to obtain the data to style. If the source + has not yet been added to the current style, the behavior is undefined. + @return An initialized foreground style layer. + */ +- (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source; + +#pragma mark - Accessing the Paint Attributes + +/** + The height with which to extrude the base of this layer. Must be less than or + equal to `fillExtrusionHeight`. + + This property is measured in meters. + + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing the float `0`. Set this property to `nil` to reset + it to the default value. + + This property is only applied to the style if `fillExtrusionHeight` is + non-`nil`. Otherwise, it is ignored. + + You can set this property to an instance of: + + * `MGLConstantStyleValue` + * `MGLCameraStyleFunction` with an interpolation mode of: + * `MGLInterpolationModeExponential` + * `MGLInterpolationModeInterval` + * `MGLSourceStyleFunction` with an interpolation mode of: + * `MGLInterpolationModeExponential` + * `MGLInterpolationModeInterval` + * `MGLInterpolationModeCategorical` + * `MGLInterpolationModeIdentity` + * `MGLCompositeStyleFunction` with an interpolation mode of: + * `MGLInterpolationModeExponential` + * `MGLInterpolationModeInterval` + * `MGLInterpolationModeCategorical` + */ +@property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *fillExtrusionBase; + +/** + The transition affecting any changes to this layer’s `fillExtrusionBase` property. + + This property corresponds to the `fill-extrusion-base-transition` property in the style JSON file format. +*/ +@property (nonatomic) MGLTransition fillExtrusionBaseTransition; + +#if TARGET_OS_IPHONE +/** + The base color of this layer. The extrusion's surfaces will be shaded + differently based on this color in combination with the `light` settings. If + this color is specified with an alpha component, the alpha component will be + ignored; use `fillExtrusionOpacity` to set layer opacityco. + + The default value of this property is an `MGLStyleValue` object containing + `UIColor.blackColor`. Set this property to `nil` to reset it to the default + value. + + This property is only applied to the style if `fillExtrusionPattern` is set to + `nil`. Otherwise, it is ignored. + + You can set this property to an instance of: + + * `MGLConstantStyleValue` + * `MGLCameraStyleFunction` with an interpolation mode of: + * `MGLInterpolationModeExponential` + * `MGLInterpolationModeInterval` + * `MGLSourceStyleFunction` with an interpolation mode of: + * `MGLInterpolationModeExponential` + * `MGLInterpolationModeInterval` + * `MGLInterpolationModeCategorical` + * `MGLInterpolationModeIdentity` + * `MGLCompositeStyleFunction` with an interpolation mode of: + * `MGLInterpolationModeExponential` + * `MGLInterpolationModeInterval` + * `MGLInterpolationModeCategorical` + */ +@property (nonatomic, null_resettable) MGLStyleValue<UIColor *> *fillExtrusionColor; +#else +/** + The base color of this layer. The extrusion's surfaces will be shaded + differently based on this color in combination with the `light` settings. If + this color is specified with an alpha component, the alpha component will be + ignored; use `fillExtrusionOpacity` to set layer opacityco. + + The default value of this property is an `MGLStyleValue` object containing + `NSColor.blackColor`. Set this property to `nil` to reset it to the default + value. + + This property is only applied to the style if `fillExtrusionPattern` is set to + `nil`. Otherwise, it is ignored. + + You can set this property to an instance of: + + * `MGLConstantStyleValue` + * `MGLCameraStyleFunction` with an interpolation mode of: + * `MGLInterpolationModeExponential` + * `MGLInterpolationModeInterval` + * `MGLSourceStyleFunction` with an interpolation mode of: + * `MGLInterpolationModeExponential` + * `MGLInterpolationModeInterval` + * `MGLInterpolationModeCategorical` + * `MGLInterpolationModeIdentity` + * `MGLCompositeStyleFunction` with an interpolation mode of: + * `MGLInterpolationModeExponential` + * `MGLInterpolationModeInterval` + * `MGLInterpolationModeCategorical` + */ +@property (nonatomic, null_resettable) MGLStyleValue<NSColor *> *fillExtrusionColor; +#endif + +/** + The transition affecting any changes to this layer’s `fillExtrusionColor` property. + + This property corresponds to the `fill-extrusion-color-transition` property in the style JSON file format. +*/ +@property (nonatomic) MGLTransition fillExtrusionColorTransition; + +/** + The height with which to extrude this layer. + + This property is measured in meters. + + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing the float `0`. Set this property to `nil` to reset + it to the default value. + + You can set this property to an instance of: + + * `MGLConstantStyleValue` + * `MGLCameraStyleFunction` with an interpolation mode of: + * `MGLInterpolationModeExponential` + * `MGLInterpolationModeInterval` + * `MGLSourceStyleFunction` with an interpolation mode of: + * `MGLInterpolationModeExponential` + * `MGLInterpolationModeInterval` + * `MGLInterpolationModeCategorical` + * `MGLInterpolationModeIdentity` + * `MGLCompositeStyleFunction` with an interpolation mode of: + * `MGLInterpolationModeExponential` + * `MGLInterpolationModeInterval` + * `MGLInterpolationModeCategorical` + */ +@property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *fillExtrusionHeight; + +/** + The transition affecting any changes to this layer’s `fillExtrusionHeight` property. + + This property corresponds to the `fill-extrusion-height-transition` property in the style JSON file format. +*/ +@property (nonatomic) MGLTransition fillExtrusionHeightTransition; + +/** + The opacity of the entire fill extrusion layer. This is rendered on a + per-layer, not per-feature, basis, and data-driven styling is not available. + + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing the float `1`. Set this property to `nil` to reset + it to the default value. + + You can set this property to an instance of: + + * `MGLConstantStyleValue` + * `MGLCameraStyleFunction` with an interpolation mode of: + * `MGLInterpolationModeExponential` + * `MGLInterpolationModeInterval` + */ +@property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *fillExtrusionOpacity; + +/** + The transition affecting any changes to this layer’s `fillExtrusionOpacity` property. + + This property corresponds to the `fill-extrusion-opacity-transition` property in the style JSON file format. +*/ +@property (nonatomic) MGLTransition fillExtrusionOpacityTransition; + +/** + Name of image in style images to use for drawing image fill-extrusions. For + seamless patterns, image width and height must be a factor of two (2, 4, 8, + ..., 512). + + You can set this property to an instance of: + + * `MGLConstantStyleValue` + * `MGLCameraStyleFunction` with an interpolation mode of + `MGLInterpolationModeInterval` + */ +@property (nonatomic, null_resettable) MGLStyleValue<NSString *> *fillExtrusionPattern; + +/** + The transition affecting any changes to this layer’s `fillExtrusionPattern` property. + + This property corresponds to the `fill-extrusion-pattern-transition` property in the style JSON file format. +*/ +@property (nonatomic) MGLTransition fillExtrusionPatternTransition; + +#if TARGET_OS_IPHONE +/** + The geometry's offset. + + This property is measured in points. + + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing a `CGVector` struct set to 0 points rightward and 0 + points downward. 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-translate"><code>fill-extrusion-translate</code></a> + layout property in the Mapbox Style Specification. + + You can set this property to an instance of: + + * `MGLConstantStyleValue` + * `MGLCameraStyleFunction` with an interpolation mode of: + * `MGLInterpolationModeExponential` + * `MGLInterpolationModeInterval` + */ +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *fillExtrusionTranslation; +#else +/** + The geometry's offset. + + This property is measured in points. + + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing a `CGVector` struct set to 0 points rightward and 0 + points upward. 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-translate"><code>fill-extrusion-translate</code></a> + layout property in the Mapbox Style Specification. + + You can set this property to an instance of: + + * `MGLConstantStyleValue` + * `MGLCameraStyleFunction` with an interpolation mode of: + * `MGLInterpolationModeExponential` + * `MGLInterpolationModeInterval` + */ +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *fillExtrusionTranslation; +#endif + +/** + The transition affecting any changes to this layer’s `fillExtrusionTranslation` property. + + This property corresponds to the `fill-extrusion-translate-transition` property in the style JSON file format. +*/ +@property (nonatomic) MGLTransition fillExtrusionTranslationTransition; + +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *fillExtrusionTranslate __attribute__((unavailable("Use fillExtrusionTranslation instead."))); + +/** + Controls the translation reference point. + + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing `MGLFillExtrusionTranslationAnchorMap`. Set this + property to `nil` to reset it to the default value. + + This property is only applied to the style if `fillExtrusionTranslation` is + non-`nil`. Otherwise, it is ignored. + + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-fill-extrusion-translate-anchor"><code>fill-extrusion-translate-anchor</code></a> + layout property in the Mapbox Style Specification. + + You can set this property to an instance of: + + * `MGLConstantStyleValue` + * `MGLCameraStyleFunction` with an interpolation mode of + `MGLInterpolationModeInterval` + */ +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *fillExtrusionTranslationAnchor; + +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *fillExtrusionTranslateAnchor __attribute__((unavailable("Use fillExtrusionTranslationAnchor instead."))); + +@end + +/** + Methods for wrapping an enumeration value for a style layer attribute in an + `MGLFillExtrusionStyleLayer` object and unwrapping its raw value. + */ +@interface NSValue (MGLFillExtrusionStyleLayerAdditions) + +#pragma mark Working with Fill extrusion Style Layer Attribute Values + +/** + Creates a new value object containing the given `MGLFillExtrusionTranslationAnchor` enumeration. + + @param fillExtrusionTranslationAnchor The value for the new object. + @return A new value object that contains the enumeration value. + */ ++ (instancetype)valueWithMGLFillExtrusionTranslationAnchor:(MGLFillExtrusionTranslationAnchor)fillExtrusionTranslationAnchor; + +/** + The `MGLFillExtrusionTranslationAnchor` enumeration representation of the value. + */ +@property (readonly) MGLFillExtrusionTranslationAnchor MGLFillExtrusionTranslationAnchorValue; + +@end + +NS_ASSUME_NONNULL_END |