diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2017-01-16 11:38:35 -0800 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2017-01-16 11:38:35 -0800 |
commit | 7ef2843e6a62116667be6a2c12de085951fdd5ea (patch) | |
tree | 40eca249e044e2706efd1193d617e6eb8e59d708 /platform/darwin/src/MGLSymbolStyleLayer.h | |
parent | 76301b252cbc4bc3ae1fc84322bcbcdbd26cae8a (diff) | |
parent | 13b97dd0cebffe36b187bdb74923910def6bd87b (diff) | |
download | qtlocation-mapboxgl-7ef2843e6a62116667be6a2c12de085951fdd5ea.tar.gz |
Merge branch 'release-ios-v3.4.0' into 1ec5-release-ios-v3.4.0-beta.7
Diffstat (limited to 'platform/darwin/src/MGLSymbolStyleLayer.h')
-rw-r--r-- | platform/darwin/src/MGLSymbolStyleLayer.h | 978 |
1 files changed, 757 insertions, 221 deletions
diff --git a/platform/darwin/src/MGLSymbolStyleLayer.h b/platform/darwin/src/MGLSymbolStyleLayer.h index 57a8f71827..23ddd59d0d 100644 --- a/platform/darwin/src/MGLSymbolStyleLayer.h +++ b/platform/darwin/src/MGLSymbolStyleLayer.h @@ -8,21 +8,29 @@ NS_ASSUME_NONNULL_BEGIN /** - In combination with `symbolPlacement`, determines the rotation behavior of icons. + In combination with `symbolPlacement`, determines the rotation behavior of + icons. - Values of this type are used in the `iconRotationAlignment` property of `MGLSymbolStyleLayer`. + Values of this type are used in the `MGLSymbolStyleLayer.iconRotationAlignment` + property. */ typedef NS_ENUM(NSUInteger, MGLIconRotationAlignment) { /** - When `symbolPlacement` is set to `MGLSymbolPlacementPoint`, aligns icons east-west. When `symbolPlacement` is set to `MGLSymbolPlacementLine`, aligns icon x-axes with the line. + When `symbolPlacement` is set to `MGLSymbolPlacementPoint`, aligns icons + east-west. When `symbolPlacement` is set to `MGLSymbolPlacementLine`, + aligns icon x-axes with the line. */ MGLIconRotationAlignmentMap, /** - Produces icons whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbolPlacement`. + Produces icons whose x-axes are aligned with the x-axis of the viewport, + regardless of the value of `symbolPlacement`. */ MGLIconRotationAlignmentViewport, /** - When `symbolPlacement` is set to `MGLSymbolPlacementPoint`, this is equivalent to `MGLIconRotationAlignmentViewport`. When `symbolPlacement` is set to `MGLSymbolPlacementLine`, this is equivalent to `MGLIconRotationAlignmentMap`. + When `symbolPlacement` is set to `MGLSymbolPlacementPoint`, this is + equivalent to `MGLIconRotationAlignmentViewport`. When `symbolPlacement` is + set to `MGLSymbolPlacementLine`, this is equivalent to + `MGLIconRotationAlignmentMap`. */ MGLIconRotationAlignmentAuto, }; @@ -30,7 +38,8 @@ typedef NS_ENUM(NSUInteger, MGLIconRotationAlignment) { /** Scales the icon to fit around the associated text. - Values of this type are used in the `iconTextFit` property of `MGLSymbolStyleLayer`. + Values of this type are used in the `MGLSymbolStyleLayer.iconTextFit` + property. */ typedef NS_ENUM(NSUInteger, MGLIconTextFit) { /** @@ -54,7 +63,8 @@ typedef NS_ENUM(NSUInteger, MGLIconTextFit) { /** Label placement relative to its geometry. - Values of this type are used in the `symbolPlacement` property of `MGLSymbolStyleLayer`. + Values of this type are used in the `MGLSymbolStyleLayer.symbolPlacement` + property. */ typedef NS_ENUM(NSUInteger, MGLSymbolPlacement) { /** @@ -62,7 +72,8 @@ typedef NS_ENUM(NSUInteger, MGLSymbolPlacement) { */ MGLSymbolPlacementPoint, /** - The label is placed along the line of the geometry. Can only be used on `LineString` and `Polygon` geometries. + The label is placed along the line of the geometry. Can only be used on + `LineString` and `Polygon` geometries. */ MGLSymbolPlacementLine, }; @@ -70,7 +81,8 @@ typedef NS_ENUM(NSUInteger, MGLSymbolPlacement) { /** Part of the text placed closest to the anchor. - Values of this type are used in the `textAnchor` property of `MGLSymbolStyleLayer`. + Values of this type are used in the `MGLSymbolStyleLayer.textAnchor` + property. */ typedef NS_ENUM(NSUInteger, MGLTextAnchor) { /** @@ -114,7 +126,8 @@ typedef NS_ENUM(NSUInteger, MGLTextAnchor) { /** Text justification options. - Values of this type are used in the `textJustification` property of `MGLSymbolStyleLayer`. + Values of this type are used in the `MGLSymbolStyleLayer.textJustification` + property. */ typedef NS_ENUM(NSUInteger, MGLTextJustification) { /** @@ -134,7 +147,8 @@ typedef NS_ENUM(NSUInteger, MGLTextJustification) { /** Orientation of text when map is pitched. - Values of this type are used in the `textPitchAlignment` property of `MGLSymbolStyleLayer`. + Values of this type are used in the `MGLSymbolStyleLayer.textPitchAlignment` + property. */ typedef NS_ENUM(NSUInteger, MGLTextPitchAlignment) { /** @@ -152,21 +166,29 @@ typedef NS_ENUM(NSUInteger, MGLTextPitchAlignment) { }; /** - In combination with `symbolPlacement`, determines the rotation behavior of the individual glyphs forming the text. + In combination with `symbolPlacement`, determines the rotation behavior of the + individual glyphs forming the text. - Values of this type are used in the `textRotationAlignment` property of `MGLSymbolStyleLayer`. + Values of this type are used in the `MGLSymbolStyleLayer.textRotationAlignment` + property. */ typedef NS_ENUM(NSUInteger, MGLTextRotationAlignment) { /** - When `symbolPlacement` is set to `MGLSymbolPlacementPoint`, aligns text east-west. When `symbolPlacement` is set to `MGLSymbolPlacementLine`, aligns text x-axes with the line. + When `symbolPlacement` is set to `MGLSymbolPlacementPoint`, aligns text + east-west. When `symbolPlacement` is set to `MGLSymbolPlacementLine`, + aligns text x-axes with the line. */ MGLTextRotationAlignmentMap, /** - Produces glyphs whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbolPlacement`. + Produces glyphs whose x-axes are aligned with the x-axis of the viewport, + regardless of the value of `symbolPlacement`. */ MGLTextRotationAlignmentViewport, /** - When `symbolPlacement` is set to `MGLSymbolPlacementPoint`, this is equivalent to `MGLTextRotationAlignmentViewport`. When `symbolPlacement` is set to `MGLSymbolPlacementLine`, this is equivalent to `MGLTextRotationAlignmentMap`. + When `symbolPlacement` is set to `MGLSymbolPlacementPoint`, this is + equivalent to `MGLTextRotationAlignmentViewport`. When `symbolPlacement` is + set to `MGLSymbolPlacementLine`, this is equivalent to + `MGLTextRotationAlignmentMap`. */ MGLTextRotationAlignmentAuto, }; @@ -174,7 +196,8 @@ typedef NS_ENUM(NSUInteger, MGLTextRotationAlignment) { /** Specifies how to capitalize text. - Values of this type are used in the `textTransform` property of `MGLSymbolStyleLayer`. + Values of this type are used in the `MGLSymbolStyleLayer.textTransform` + property. */ typedef NS_ENUM(NSUInteger, MGLTextTransform) { /** @@ -194,40 +217,65 @@ typedef NS_ENUM(NSUInteger, MGLTextTransform) { /** Controls the translation reference point. - Values of this type are used in the `iconTranslateAnchor` property of `MGLSymbolStyleLayer`. + Values of this type are used in the `MGLSymbolStyleLayer.iconTranslationAnchor` + property. */ -typedef NS_ENUM(NSUInteger, MGLIconTranslateAnchor) { +typedef NS_ENUM(NSUInteger, MGLIconTranslationAnchor) { /** Icons are translated relative to the map. */ - MGLIconTranslateAnchorMap, + MGLIconTranslationAnchorMap, /** Icons are translated relative to the viewport. */ - MGLIconTranslateAnchorViewport, + MGLIconTranslationAnchorViewport, }; /** Controls the translation reference point. - Values of this type are used in the `textTranslateAnchor` property of `MGLSymbolStyleLayer`. + Values of this type are used in the `MGLSymbolStyleLayer.textTranslationAnchor` + property. */ -typedef NS_ENUM(NSUInteger, MGLTextTranslateAnchor) { +typedef NS_ENUM(NSUInteger, MGLTextTranslationAnchor) { /** The text is translated relative to the map. */ - MGLTextTranslateAnchorMap, + MGLTextTranslationAnchorMap, /** The text is translated relative to the viewport. */ - MGLTextTranslateAnchorViewport, + MGLTextTranslationAnchorViewport, }; /** - A symbol layer which allows customization of styling properties at runtime. You may - instantiate a new symbol layer to add to a map style or you may query an - `MGLMapView` for its `style` and obtain existing layers using the - `-[MGLStyle layerWithIdentifier:]` method. + An `MGLSymbolStyleLayer` is a style layer that renders icon and text labels at + points or along lines on the map. + + Use a symbol style layer to configure the visual appearance of labels for + features in vector tiles loaded by an `MGLVectorSource` object or `MGLShape` or + `MGLFeature` instances in an `MGLShapeSource` object. + + You can access an existing symbol 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 symbol style layer and add it to the style using a method such as + `-[MGLStyle addLayer:]`. + + ### Example + + ```swift + let layer = MGLSymbolStyleLayer(identifier: "coffeeshops", source: pois) + layer.sourceLayerIdentifier = "pois" + layer.iconImageName = MGLStyleValue(rawValue: "coffee") + layer.iconScale = MGLStyleValue(rawValue: 0.5) + layer.text = MGLStyleValue(rawValue: "{name}") + layer.textTranslation = MGLStyleValue(rawValue: NSValue(cgVector: CGVector(dx: 10, dy: 0))) + layer.textJustification = MGLStyleValue(rawValue: NSValue(mglTextJustification: .left)) + layer.textAnchor = MGLStyleValue(rawValue: NSValue(mglTextAnchor: .left)) + layer.predicate = NSPredicate(format: "%K == %@", "venue-type", "coffee") + mapView.style?.addLayer(layer) + ``` */ MGL_EXPORT @interface MGLSymbolStyleLayer : MGLVectorStyleLayer @@ -235,13 +283,19 @@ MGL_EXPORT #pragma mark - Accessing the Layout Attributes /** - If true, the icon will be visible even if it collides with other previously drawn symbols. + If true, the icon will be visible even if it collides with other previously + drawn symbols. - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing `NO`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing `NO`. Set this property to `nil` to reset it to + the default value. - This property is only applied to the style if `iconImageName` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `iconImageName` is non-`nil`. + Otherwise, it is ignored. - This attribute corresponds to the <a href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-allow-overlap"><code>icon-allow-overlap</code></a> layout property in the Mapbox Style Specification. + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-allow-overlap"><code>icon-allow-overlap</code></a> + layout property in the Mapbox Style Specification. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *iconAllowsOverlap; @@ -251,11 +305,16 @@ MGL_EXPORT /** If true, other symbols can be visible even if they collide with the icon. - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing `NO`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing `NO`. Set this property to `nil` to reset it to + the default value. - This property is only applied to the style if `iconImageName` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `iconImageName` is non-`nil`. + Otherwise, it is ignored. - This attribute corresponds to the <a href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-ignore-placement"><code>icon-ignore-placement</code></a> layout property in the Mapbox Style Specification. + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-ignore-placement"><code>icon-ignore-placement</code></a> + layout property in the Mapbox Style Specification. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *iconIgnoresPlacement; @@ -265,52 +324,84 @@ MGL_EXPORT /** A string with {tokens} replaced, referencing the data property to pull from. - This attribute corresponds to the <a href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-image"><code>icon-image</code></a> layout property in the Mapbox Style Specification. + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-image"><code>icon-image</code></a> + layout property in the Mapbox Style Specification. */ @property (nonatomic, null_resettable) MGLStyleValue<NSString *> *iconImageName; @property (nonatomic, null_resettable) MGLStyleValue<NSString *> *iconImage __attribute__((unavailable("Use iconImageName instead."))); +#if TARGET_OS_IPHONE +/** + Offset distance of icon from its anchor. + + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing a `CGVector` struct set to 0 rightward and 0 + downward. Set this property to `nil` to reset it to the default value. + + This property is only applied to the style if `iconImageName` is non-`nil`. + Otherwise, it is ignored. + */ +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *iconOffset; +#else /** Offset distance of icon from its anchor. - The default value of this property is an `MGLStyleValue` object containing an `NSValue` object containing a `CGVector` struct set to 0 from the left and 0 from the top. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing a `CGVector` struct set to 0 rightward and 0 + upward. Set this property to `nil` to reset it to the default value. - This property is only applied to the style if `iconImageName` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `iconImageName` is non-`nil`. + Otherwise, it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *iconOffset; +#endif /** - If true, text will display without their corresponding icons when the icon collides with other symbols and the text does not. + If true, text will display without their corresponding icons when the icon + collides with other symbols and the text does not. - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing `NO`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing `NO`. Set this property to `nil` to reset it to + the default value. - This property is only applied to the style if `iconImageName` is non-`nil`, and `textField` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `iconImageName` is non-`nil`, and + `text` is non-`nil`. Otherwise, it is ignored. */ @property (nonatomic, null_resettable, getter=isIconOptional) MGLStyleValue<NSNumber *> *iconOptional; /** - Size of the additional area around the icon bounding box used for detecting symbol collisions. - + Size of the additional area around the icon bounding box used for detecting + symbol collisions. + This property is measured in points. - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing the float `2`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing the float `2`. Set this property to `nil` to reset + it to the default value. - This property is only applied to the style if `iconImageName` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `iconImageName` is non-`nil`. + Otherwise, it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *iconPadding; /** Rotates the icon clockwise. - + This property is measured in degrees. - 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. + 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 `iconImageName` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `iconImageName` is non-`nil`. + Otherwise, it is ignored. - This attribute corresponds to the <a href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-rotate"><code>icon-rotate</code></a> layout property in the Mapbox Style Specification. + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-rotate"><code>icon-rotate</code></a> + layout property in the Mapbox Style Specification. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *iconRotation; @@ -318,22 +409,31 @@ MGL_EXPORT @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *iconRotate __attribute__((unavailable("Use iconRotation instead."))); /** - In combination with `symbolPlacement`, determines the rotation behavior of icons. + In combination with `symbolPlacement`, determines the rotation behavior of + icons. - The default value of this property is an `MGLStyleValue` object containing an `NSValue` object containing `MGLIconRotationAlignmentAuto`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing `MGLIconRotationAlignmentAuto`. Set this property + to `nil` to reset it to the default value. - This property is only applied to the style if `iconImageName` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `iconImageName` is non-`nil`. + Otherwise, it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *iconRotationAlignment; /** Scale factor for icon. 1 is original size, 3 triples the size. - 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. + 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. - This property is only applied to the style if `iconImageName` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `iconImageName` is non-`nil`. + Otherwise, it is ignored. - This attribute corresponds to the <a href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-size"><code>icon-size</code></a> layout property in the Mapbox Style Specification. + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-size"><code>icon-size</code></a> + layout property in the Mapbox Style Specification. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *iconScale; @@ -343,31 +443,65 @@ MGL_EXPORT /** Scales the icon to fit around the associated text. - The default value of this property is an `MGLStyleValue` object containing an `NSValue` object containing `MGLIconTextFitNone`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing `MGLIconTextFitNone`. Set this property to `nil` to + reset it to the default value. - This property is only applied to the style if `iconImageName` is non-`nil`, and `textField` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `iconImageName` is non-`nil`, and + `text` is non-`nil`. Otherwise, it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *iconTextFit; +#if TARGET_OS_IPHONE /** Size of the additional area added to dimensions determined by `iconTextFit`. - + This property is measured in points. - The default value of this property is an `MGLStyleValue` object containing an `NSValue` object containing `NSEdgeInsetsZero` or `UIEdgeInsetsZero`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing `UIEdgeInsetsZero`. Set this property to `nil` to + reset it to the default value. - This property is only applied to the style if `iconImageName` is non-`nil`, and `textField` is non-`nil`, and `iconTextFit` is set to an `MGLStyleValue` object containing an `NSValue` object containing `MGLIconTextFitBoth`, `MGLIconTextFitWidth`, or `MGLIconTextFitHeight`. Otherwise, it is ignored. + This property is only applied to the style if `iconImageName` is non-`nil`, and + `text` is non-`nil`, and `iconTextFit` is set to an `MGLStyleValue` object + containing an `NSValue` object containing `MGLIconTextFitBoth`, + `MGLIconTextFitWidth`, or `MGLIconTextFitHeight`. Otherwise, it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *iconTextFitPadding; +#else +/** + Size of the additional area added to dimensions determined by `iconTextFit`. + + This property is measured in points. + + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing `NSEdgeInsetsZero`. Set this property to `nil` to + reset it to the default value. + + This property is only applied to the style if `iconImageName` is non-`nil`, and + `text` is non-`nil`, and `iconTextFit` is set to an `MGLStyleValue` object + containing an `NSValue` object containing `MGLIconTextFitBoth`, + `MGLIconTextFitWidth`, or `MGLIconTextFitHeight`. Otherwise, it is ignored. + */ +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *iconTextFitPadding; +#endif /** If true, the icon may be flipped to prevent it from being rendered upside-down. - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing `NO`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing `NO`. Set this property to `nil` to reset it to + the default value. - This property is only applied to the style if `iconImageName` is non-`nil`, and `iconRotationAlignment` is set to an `MGLStyleValue` object containing an `NSValue` object containing `MGLIconRotationAlignmentMap`, and `symbolPlacement` is set to an `MGLStyleValue` object containing an `NSValue` object containing `MGLSymbolPlacementLine`. Otherwise, it is ignored. + This property is only applied to the style if `iconImageName` is non-`nil`, and + `iconRotationAlignment` is set to an `MGLStyleValue` object containing an + `NSValue` object containing `MGLIconRotationAlignmentMap`, and + `symbolPlacement` is set to an `MGLStyleValue` object containing an `NSValue` + object containing `MGLSymbolPlacementLine`. Otherwise, it is ignored. - This attribute corresponds to the <a href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-keep-upright"><code>icon-keep-upright</code></a> layout property in the Mapbox Style Specification. + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-icon-keep-upright"><code>icon-keep-upright</code></a> + layout property in the Mapbox Style Specification. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *keepsIconUpright; @@ -375,13 +509,22 @@ MGL_EXPORT @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *iconKeepUpright __attribute__((unavailable("Use keepsIconUpright instead."))); /** - If true, the text may be flipped vertically to prevent it from being rendered upside-down. - - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing `YES`. Set this property to `nil` to reset it to the default value. - - This property is only applied to the style if `textField` is non-`nil`, and `textRotationAlignment` is set to an `MGLStyleValue` object containing an `NSValue` object containing `MGLTextRotationAlignmentMap`, and `symbolPlacement` is set to an `MGLStyleValue` object containing an `NSValue` object containing `MGLSymbolPlacementLine`. Otherwise, it is ignored. - - This attribute corresponds to the <a href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-keep-upright"><code>text-keep-upright</code></a> layout property in the Mapbox Style Specification. + If true, the text may be flipped vertically to prevent it from being rendered + upside-down. + + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing `YES`. Set this property to `nil` to reset it to + the default value. + + This property is only applied to the style if `text` is non-`nil`, and + `textRotationAlignment` is set to an `MGLStyleValue` object containing an + `NSValue` object containing `MGLTextRotationAlignmentMap`, and + `symbolPlacement` is set to an `MGLStyleValue` object containing an `NSValue` + object containing `MGLSymbolPlacementLine`. Otherwise, it is ignored. + + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-keep-upright"><code>text-keep-upright</code></a> + layout property in the Mapbox Style Specification. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *keepsTextUpright; @@ -390,14 +533,20 @@ MGL_EXPORT /** Maximum angle change between adjacent characters. - + This property is measured in degrees. - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing the float `45`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing the float `45`. Set this property to `nil` to + reset it to the default value. - This property is only applied to the style if `textField` is non-`nil`, and `symbolPlacement` is set to an `MGLStyleValue` object containing an `NSValue` object containing `MGLSymbolPlacementLine`. Otherwise, it is ignored. + This property is only applied to the style if `text` is non-`nil`, and + `symbolPlacement` is set to an `MGLStyleValue` object containing an `NSValue` + object containing `MGLSymbolPlacementLine`. Otherwise, it is ignored. - This attribute corresponds to the <a href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-max-angle"><code>text-max-angle</code></a> layout property in the Mapbox Style Specification. + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-max-angle"><code>text-max-angle</code></a> + layout property in the Mapbox Style Specification. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *maximumTextAngle; @@ -406,14 +555,19 @@ MGL_EXPORT /** The maximum line width for text wrapping. - + This property is measured in ems. - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing the float `10`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing the float `10`. Set this property to `nil` to + reset it to the default value. - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. - This attribute corresponds to the <a href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-max-width"><code>text-max-width</code></a> layout property in the Mapbox Style Specification. + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-max-width"><code>text-max-width</code></a> + layout property in the Mapbox Style Specification. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *maximumTextWidth; @@ -421,11 +575,18 @@ MGL_EXPORT @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *textMaxWidth __attribute__((unavailable("Use maximumTextWidth instead."))); /** - If true, the symbols will not cross tile edges to avoid mutual collisions. Recommended in layers that don't have enough padding in the vector tile to prevent collisions, or if it is a point symbol layer placed after a line symbol layer. - - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing `NO`. 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/#layout-symbol-symbol-avoid-edges"><code>symbol-avoid-edges</code></a> layout property in the Mapbox Style Specification. + If true, the symbols will not cross tile edges to avoid mutual collisions. + Recommended in layers that don't have enough padding in the vector tile to + prevent collisions, or if it is a point symbol layer placed after a line symbol + layer. + + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing `NO`. 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/#layout-symbol-symbol-avoid-edges"><code>symbol-avoid-edges</code></a> + layout property in the Mapbox Style Specification. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *symbolAvoidsEdges; @@ -435,29 +596,57 @@ MGL_EXPORT /** Label placement relative to its geometry. - The default value of this property is an `MGLStyleValue` object containing an `NSValue` object containing `MGLSymbolPlacementPoint`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing `MGLSymbolPlacementPoint`. Set this property to + `nil` to reset it to the default value. */ @property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *symbolPlacement; /** Distance between two symbol anchors. - + This property is measured in points. - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing the float `250`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing the float `250`. Set this property to `nil` to + reset it to the default value. - This property is only applied to the style if `symbolPlacement` is set to an `MGLStyleValue` object containing an `NSValue` object containing `MGLSymbolPlacementLine`. Otherwise, it is ignored. + This property is only applied to the style if `symbolPlacement` is set to an + `MGLStyleValue` object containing an `NSValue` object containing + `MGLSymbolPlacementLine`. Otherwise, it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *symbolSpacing; /** - If true, the text will be visible even if it collides with other previously drawn symbols. + Value to use for a text label. Feature properties are specified using tokens + like {field_name}. - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing `NO`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing the + empty string. Set this property to `nil` to reset it to the default value. - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-field"><code>text-field</code></a> + layout property in the Mapbox Style Specification. + */ +@property (nonatomic, null_resettable) MGLStyleValue<NSString *> *text; + + +@property (nonatomic, null_resettable) MGLStyleValue<NSString *> *textField __attribute__((unavailable("Use text instead."))); + +/** + If true, the text will be visible even if it collides with other previously + drawn symbols. - This attribute corresponds to the <a href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-allow-overlap"><code>text-allow-overlap</code></a> layout property in the Mapbox Style Specification. + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing `NO`. Set this property to `nil` to reset it to + the default value. + + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. + + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-allow-overlap"><code>text-allow-overlap</code></a> + layout property in the Mapbox Style Specification. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *textAllowsOverlap; @@ -467,36 +656,78 @@ MGL_EXPORT /** Part of the text placed closest to the anchor. - The default value of this property is an `MGLStyleValue` object containing an `NSValue` object containing `MGLTextAnchorCenter`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing `MGLTextAnchorCenter`. Set this property to `nil` + to reset it to the default value. - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *textAnchor; /** - Value to use for a text label. Feature properties are specified using tokens like {field_name}. + An array of font face names used to display the text. + + Each font name must be included in the `{fontstack}` portion of the JSON + stylesheet’s <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#glyphs"><code>glyphs</code></a> + property. You can register a custom font when designing the style in Mapbox + Studio. Fonts installed on the system are not used. - The default value of this property is an `MGLStyleValue` object containing the empty string. Set this property to `nil` to reset it to the default value. + The first font named in the array is applied to the text. For each character in + the text, if the first font lacks a glyph for the character, the next font is + applied as a fallback, and so on. + + The default value of this property is an `MGLStyleValue` object containing the + array `Open Sans Regular`, `Arial Unicode MS Regular`. Set this property to + `nil` to reset it to the default value. + + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. + + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-font"><code>text-font</code></a> + layout property in the Mapbox Style Specification. */ -@property (nonatomic, null_resettable) MGLStyleValue<NSString *> *textField; +@property (nonatomic, null_resettable) MGLStyleValue<NSArray<NSString *> *> *textFontNames; + + +@property (nonatomic, null_resettable) MGLStyleValue<NSArray<NSString *> *> *textFont __attribute__((unavailable("Use textFontNames instead."))); /** - Font stack to use for displaying text. + Font size. + + This property is measured in points. - The default value of this property is an `MGLStyleValue` object containing the array `Open Sans Regular`, `Arial Unicode MS Regular`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing the float `16`. Set this property to `nil` to + reset it to the default value. - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. + + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-size"><code>text-size</code></a> + layout property in the Mapbox Style Specification. */ -@property (nonatomic, null_resettable) MGLStyleValue<NSArray<NSString *> *> *textFont; +@property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *textFontSize; + + +@property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *textSize __attribute__((unavailable("Use textFontSize instead."))); /** If true, other symbols can be visible even if they collide with the text. - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing `NO`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing `NO`. Set this property to `nil` to reset it to + the default value. - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. - This attribute corresponds to the <a href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-ignore-placement"><code>text-ignore-placement</code></a> layout property in the Mapbox Style Specification. + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-ignore-placement"><code>text-ignore-placement</code></a> + layout property in the Mapbox Style Specification. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *textIgnoresPlacement; @@ -506,11 +737,16 @@ MGL_EXPORT /** Text justification options. - The default value of this property is an `MGLStyleValue` object containing an `NSValue` object containing `MGLTextJustificationCenter`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing `MGLTextJustificationCenter`. Set this property to + `nil` to reset it to the default value. - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. - This attribute corresponds to the <a href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-justify"><code>text-justify</code></a> layout property in the Mapbox Style Specification. + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-justify"><code>text-justify</code></a> + layout property in the Mapbox Style Specification. */ @property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *textJustification; @@ -519,76 +755,117 @@ MGL_EXPORT /** Text tracking amount. - + This property is measured in ems. - 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. + 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 `textField` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *textLetterSpacing; /** Text leading value for multi-line text. - + This property is measured in ems. - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing the float `1.2`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing the float `1.2`. Set this property to `nil` to + reset it to the default value. - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *textLineHeight; +#if TARGET_OS_IPHONE /** Offset distance of text from its anchor. - + This property is measured in ems. - The default value of this property is an `MGLStyleValue` object containing an `NSValue` object containing a `CGVector` struct set to 0 ems from the left and 0 ems from the top. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing a `CGVector` struct set to 0 ems rightward and 0 + ems downward. Set this property to `nil` to reset it to the default value. - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *textOffset; +#else +/** + Offset distance of text from its anchor. + + This property is measured in ems. + + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing a `CGVector` struct set to 0 ems rightward and 0 + ems upward. Set this property to `nil` to reset it to the default value. + + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. + */ +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *textOffset; +#endif /** - If true, icons will display without their corresponding text when the text collides with other symbols and the icon does not. + If true, icons will display without their corresponding text when the text + collides with other symbols and the icon does not. - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing `NO`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing `NO`. Set this property to `nil` to reset it to + the default value. - This property is only applied to the style if `textField` is non-`nil`, and `iconImageName` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `text` is non-`nil`, and + `iconImageName` is non-`nil`. Otherwise, it is ignored. */ @property (nonatomic, null_resettable, getter=isTextOptional) MGLStyleValue<NSNumber *> *textOptional; /** - Size of the additional area around the text bounding box used for detecting symbol collisions. - + Size of the additional area around the text bounding box used for detecting + symbol collisions. + This property is measured in points. - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing the float `2`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSNumber` object containing the float `2`. Set this property to `nil` to reset + it to the default value. - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *textPadding; /** Orientation of text when map is pitched. - The default value of this property is an `MGLStyleValue` object containing an `NSValue` object containing `MGLTextPitchAlignmentAuto`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing `MGLTextPitchAlignmentAuto`. Set this property to + `nil` to reset it to the default value. - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *textPitchAlignment; /** Rotates the text clockwise. - + This property is measured in degrees. - 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. + 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 `textField` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. - This attribute corresponds to the <a href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-rotate"><code>text-rotate</code></a> layout property in the Mapbox Style Specification. + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#layout-symbol-text-rotate"><code>text-rotate</code></a> + layout property in the Mapbox Style Specification. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *textRotation; @@ -596,31 +873,27 @@ MGL_EXPORT @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *textRotate __attribute__((unavailable("Use textRotation instead."))); /** - In combination with `symbolPlacement`, determines the rotation behavior of the individual glyphs forming the text. + In combination with `symbolPlacement`, determines the rotation behavior of the + individual glyphs forming the text. - The default value of this property is an `MGLStyleValue` object containing an `NSValue` object containing `MGLTextRotationAlignmentAuto`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing `MGLTextRotationAlignmentAuto`. Set this property + to `nil` to reset it to the default value. - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *textRotationAlignment; /** - Font size. - - This property is measured in points. - - The default value of this property is an `MGLStyleValue` object containing an `NSNumber` object containing the float `16`. Set this property to `nil` to reset it to the default value. - - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. - */ -@property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *textSize; - -/** Specifies how to capitalize text. - The default value of this property is an `MGLStyleValue` object containing an `NSValue` object containing `MGLTextTransformNone`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing `MGLTextTransformNone`. Set this property to `nil` + to reset it to the default value. - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *textTransform; @@ -628,123 +901,195 @@ MGL_EXPORT #if TARGET_OS_IPHONE /** - The tint color to apply to the icon. The `iconImageName` property must be set to a template image. + The tint color to apply to the icon. The `iconImageName` property must be set + to a template image. - 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 `iconImageName` is non-`nil`. Otherwise, it is ignored. + 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 `iconImageName` is non-`nil`. + Otherwise, it is ignored. */ -@property (nonatomic, null_resettable) MGLStyleValue<MGLColor *> *iconColor; +@property (nonatomic, null_resettable) MGLStyleValue<UIColor *> *iconColor; #else /** - The tint color to apply to the icon. The `iconImageName` property must be set to a template image. + The tint color to apply to the icon. The `iconImageName` property must be set + to a template image. - 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 `iconImageName` is non-`nil`. Otherwise, it is ignored. + 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 `iconImageName` is non-`nil`. + Otherwise, it is ignored. */ -@property (nonatomic, null_resettable) MGLStyleValue<MGLColor *> *iconColor; +@property (nonatomic, null_resettable) MGLStyleValue<NSColor *> *iconColor; #endif /** Fade out the halo towards the outside. - + This property is measured in points. - 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 `iconImageName` is non-`nil`. Otherwise, it is ignored. + 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 `iconImageName` is non-`nil`. + Otherwise, it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *iconHaloBlur; #if TARGET_OS_IPHONE /** - The color of the icon’s halo. The `iconImageName` property must be set to a template image. + The color of the icon’s halo. The `iconImageName` property must be set to a + template image. - The default value of this property is an `MGLStyleValue` object containing `UIColor.clearColor`. Set this property to `nil` to reset it to the default value. - - This property is only applied to the style if `iconImageName` is non-`nil`. Otherwise, it is ignored. + The default value of this property is an `MGLStyleValue` object containing + `UIColor.clearColor`. Set this property to `nil` to reset it to the default + value. + + This property is only applied to the style if `iconImageName` is non-`nil`. + Otherwise, it is ignored. */ -@property (nonatomic, null_resettable) MGLStyleValue<MGLColor *> *iconHaloColor; +@property (nonatomic, null_resettable) MGLStyleValue<UIColor *> *iconHaloColor; #else /** - The color of the icon’s halo. The `iconImageName` property must be set to a template image. + The color of the icon’s halo. The `iconImageName` property must be set to a + template image. - The default value of this property is an `MGLStyleValue` object containing `NSColor.clearColor`. Set this property to `nil` to reset it to the default value. - - This property is only applied to the style if `iconImageName` is non-`nil`. Otherwise, it is ignored. + The default value of this property is an `MGLStyleValue` object containing + `NSColor.clearColor`. Set this property to `nil` to reset it to the default + value. + + This property is only applied to the style if `iconImageName` is non-`nil`. + Otherwise, it is ignored. */ -@property (nonatomic, null_resettable) MGLStyleValue<MGLColor *> *iconHaloColor; +@property (nonatomic, null_resettable) MGLStyleValue<NSColor *> *iconHaloColor; #endif /** Distance of halo to the icon outline. - + This property is measured in points. - 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 `iconImageName` is non-`nil`. Otherwise, it is ignored. + 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 `iconImageName` is non-`nil`. + Otherwise, it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *iconHaloWidth; /** The opacity at which the icon will be drawn. - 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. - - This property is only applied to the style if `iconImageName` is non-`nil`. Otherwise, it is ignored. + 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. + + This property is only applied to the style if `iconImageName` is non-`nil`. + Otherwise, it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *iconOpacity; +#if TARGET_OS_IPHONE /** Distance that the icon's anchor is moved from its original placement. - + 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 from the left and 0 points from the top. Set this property to `nil` to reset it to the default value. - - This property is only applied to the style if `iconImageName` is non-`nil`. Otherwise, it is ignored. + 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 property is only applied to the style if `iconImageName` is non-`nil`. + Otherwise, it is ignored. + + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-icon-translate"><code>icon-translate</code></a> + layout property in the Mapbox Style Specification. + */ +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *iconTranslation; +#else +/** + Distance that the icon's anchor is moved from its original placement. + + 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 property is only applied to the style if `iconImageName` is non-`nil`. + Otherwise, it is ignored. + + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-icon-translate"><code>icon-translate</code></a> + layout property in the Mapbox Style Specification. */ -@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *iconTranslate; +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *iconTranslation; +#endif + +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *iconTranslate __attribute__((unavailable("Use iconTranslation instead."))); /** Controls the translation reference point. - The default value of this property is an `MGLStyleValue` object containing an `NSValue` object containing `MGLIconTranslateAnchorMap`. Set this property to `nil` to reset it to the default value. - - This property is only applied to the style if `iconImageName` is non-`nil`, and `iconTranslate` is non-`nil`. Otherwise, it is ignored. + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing `MGLIconTranslationAnchorMap`. Set this property to + `nil` to reset it to the default value. + + This property is only applied to the style if `iconImageName` is non-`nil`, and + `iconTranslation` is non-`nil`. Otherwise, it is ignored. + + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-icon-translate-anchor"><code>icon-translate-anchor</code></a> + layout property in the Mapbox Style Specification. */ -@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *iconTranslateAnchor; +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *iconTranslationAnchor; + +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *iconTranslateAnchor __attribute__((unavailable("Use iconTranslationAnchor instead."))); #if TARGET_OS_IPHONE /** The color with which the text will be drawn. - 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 `textField` is non-`nil`. Otherwise, it is ignored. + 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 `text` is non-`nil`. Otherwise, + it is ignored. */ -@property (nonatomic, null_resettable) MGLStyleValue<MGLColor *> *textColor; +@property (nonatomic, null_resettable) MGLStyleValue<UIColor *> *textColor; #else /** The color with which the text will be drawn. - 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 `textField` is non-`nil`. Otherwise, it is ignored. + 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 `text` is non-`nil`. Otherwise, + it is ignored. */ -@property (nonatomic, null_resettable) MGLStyleValue<MGLColor *> *textColor; +@property (nonatomic, null_resettable) MGLStyleValue<NSColor *> *textColor; #endif /** The halo's fadeout distance towards the outside. - + This property is measured in points. - 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 `textField` is non-`nil`. Otherwise, it is ignored. + 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 `text` is non-`nil`. Otherwise, + it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *textHaloBlur; @@ -752,61 +1097,252 @@ MGL_EXPORT /** The color of the text's halo, which helps it stand out from backgrounds. - The default value of this property is an `MGLStyleValue` object containing `UIColor.clearColor`. Set this property to `nil` to reset it to the default value. - - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + The default value of this property is an `MGLStyleValue` object containing + `UIColor.clearColor`. Set this property to `nil` to reset it to the default + value. + + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. */ -@property (nonatomic, null_resettable) MGLStyleValue<MGLColor *> *textHaloColor; +@property (nonatomic, null_resettable) MGLStyleValue<UIColor *> *textHaloColor; #else /** The color of the text's halo, which helps it stand out from backgrounds. - The default value of this property is an `MGLStyleValue` object containing `NSColor.clearColor`. Set this property to `nil` to reset it to the default value. - - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + The default value of this property is an `MGLStyleValue` object containing + `NSColor.clearColor`. Set this property to `nil` to reset it to the default + value. + + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. */ -@property (nonatomic, null_resettable) MGLStyleValue<MGLColor *> *textHaloColor; +@property (nonatomic, null_resettable) MGLStyleValue<NSColor *> *textHaloColor; #endif /** - Distance of halo to the font outline. Max text halo width is 1/4 of the font-size. - + Distance of halo to the font outline. Max text halo width is 1/4 of the + font-size. + This property is measured in points. - 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 `textField` is non-`nil`. Otherwise, it is ignored. + 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 `text` is non-`nil`. Otherwise, + it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *textHaloWidth; /** The opacity at which the text will be drawn. - 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. - - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + 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. + + This property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. */ @property (nonatomic, null_resettable) MGLStyleValue<NSNumber *> *textOpacity; +#if TARGET_OS_IPHONE /** Distance that the text's anchor is moved from its original placement. - + 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 from the left and 0 points from the top. Set this property to `nil` to reset it to the default value. - - This property is only applied to the style if `textField` is non-`nil`. Otherwise, it is ignored. + 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 property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. + + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-text-translate"><code>text-translate</code></a> + layout property in the Mapbox Style Specification. */ -@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *textTranslate; +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *textTranslation; +#else +/** + Distance that the text's anchor is moved from its original placement. + + 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 property is only applied to the style if `text` is non-`nil`. Otherwise, + it is ignored. + + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-text-translate"><code>text-translate</code></a> + layout property in the Mapbox Style Specification. + */ +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *textTranslation; +#endif + +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *textTranslate __attribute__((unavailable("Use textTranslation instead."))); /** Controls the translation reference point. - The default value of this property is an `MGLStyleValue` object containing an `NSValue` object containing `MGLTextTranslateAnchorMap`. Set this property to `nil` to reset it to the default value. + The default value of this property is an `MGLStyleValue` object containing an + `NSValue` object containing `MGLTextTranslationAnchorMap`. Set this property to + `nil` to reset it to the default value. + + This property is only applied to the style if `text` is non-`nil`, and + `textTranslation` is non-`nil`. Otherwise, it is ignored. + + This attribute corresponds to the <a + href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-text-translate-anchor"><code>text-translate-anchor</code></a> + layout property in the Mapbox Style Specification. + */ +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *textTranslationAnchor; + +@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *textTranslateAnchor __attribute__((unavailable("Use textTranslationAnchor instead."))); + +@end + +/** + Methods for wrapping an enumeration value for a style layer attribute in an + `MGLSymbolStyleLayer` object and unwrapping its raw value. + */ +@interface NSValue (MGLSymbolStyleLayerAdditions) + +#pragma mark Working with Symbol Style Layer Attribute Values + +/** + Creates a new value object containing the given `MGLIconRotationAlignment` enumeration. + + @param iconRotationAlignment The value for the new object. + @return A new value object that contains the enumeration value. + */ ++ (instancetype)valueWithMGLIconRotationAlignment:(MGLIconRotationAlignment)iconRotationAlignment; + +/** + The `MGLIconRotationAlignment` enumeration representation of the value. + */ +@property (readonly) MGLIconRotationAlignment MGLIconRotationAlignmentValue; + +/** + Creates a new value object containing the given `MGLIconTextFit` enumeration. - This property is only applied to the style if `textField` is non-`nil`, and `textTranslate` is non-`nil`. Otherwise, it is ignored. + @param iconTextFit The value for the new object. + @return A new value object that contains the enumeration value. + */ ++ (instancetype)valueWithMGLIconTextFit:(MGLIconTextFit)iconTextFit; + +/** + The `MGLIconTextFit` enumeration representation of the value. + */ +@property (readonly) MGLIconTextFit MGLIconTextFitValue; + +/** + Creates a new value object containing the given `MGLSymbolPlacement` enumeration. + + @param symbolPlacement The value for the new object. + @return A new value object that contains the enumeration value. + */ ++ (instancetype)valueWithMGLSymbolPlacement:(MGLSymbolPlacement)symbolPlacement; + +/** + The `MGLSymbolPlacement` enumeration representation of the value. + */ +@property (readonly) MGLSymbolPlacement MGLSymbolPlacementValue; + +/** + Creates a new value object containing the given `MGLTextAnchor` enumeration. + + @param textAnchor The value for the new object. + @return A new value object that contains the enumeration value. + */ ++ (instancetype)valueWithMGLTextAnchor:(MGLTextAnchor)textAnchor; + +/** + The `MGLTextAnchor` enumeration representation of the value. + */ +@property (readonly) MGLTextAnchor MGLTextAnchorValue; + +/** + Creates a new value object containing the given `MGLTextJustification` enumeration. + + @param textJustification The value for the new object. + @return A new value object that contains the enumeration value. + */ ++ (instancetype)valueWithMGLTextJustification:(MGLTextJustification)textJustification; + +/** + The `MGLTextJustification` enumeration representation of the value. + */ +@property (readonly) MGLTextJustification MGLTextJustificationValue; + +/** + Creates a new value object containing the given `MGLTextPitchAlignment` enumeration. + + @param textPitchAlignment The value for the new object. + @return A new value object that contains the enumeration value. + */ ++ (instancetype)valueWithMGLTextPitchAlignment:(MGLTextPitchAlignment)textPitchAlignment; + +/** + The `MGLTextPitchAlignment` enumeration representation of the value. + */ +@property (readonly) MGLTextPitchAlignment MGLTextPitchAlignmentValue; + +/** + Creates a new value object containing the given `MGLTextRotationAlignment` enumeration. + + @param textRotationAlignment The value for the new object. + @return A new value object that contains the enumeration value. + */ ++ (instancetype)valueWithMGLTextRotationAlignment:(MGLTextRotationAlignment)textRotationAlignment; + +/** + The `MGLTextRotationAlignment` enumeration representation of the value. + */ +@property (readonly) MGLTextRotationAlignment MGLTextRotationAlignmentValue; + +/** + Creates a new value object containing the given `MGLTextTransform` enumeration. + + @param textTransform The value for the new object. + @return A new value object that contains the enumeration value. + */ ++ (instancetype)valueWithMGLTextTransform:(MGLTextTransform)textTransform; + +/** + The `MGLTextTransform` enumeration representation of the value. + */ +@property (readonly) MGLTextTransform MGLTextTransformValue; + +/** + Creates a new value object containing the given `MGLIconTranslationAnchor` enumeration. + + @param iconTranslationAnchor The value for the new object. + @return A new value object that contains the enumeration value. + */ ++ (instancetype)valueWithMGLIconTranslationAnchor:(MGLIconTranslationAnchor)iconTranslationAnchor; + +/** + The `MGLIconTranslationAnchor` enumeration representation of the value. + */ +@property (readonly) MGLIconTranslationAnchor MGLIconTranslationAnchorValue; + +/** + Creates a new value object containing the given `MGLTextTranslationAnchor` enumeration. + + @param textTranslationAnchor The value for the new object. + @return A new value object that contains the enumeration value. + */ ++ (instancetype)valueWithMGLTextTranslationAnchor:(MGLTextTranslationAnchor)textTranslationAnchor; + +/** + The `MGLTextTranslationAnchor` enumeration representation of the value. */ -@property (nonatomic, null_resettable) MGLStyleValue<NSValue *> *textTranslateAnchor; +@property (readonly) MGLTextTranslationAnchor MGLTextTranslationAnchorValue; @end |