// This file is generated. // Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`. #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" #include #include namespace mbgl { MBGL_DEFINE_ENUM(MGLCircleScaleAlignment, { { MGLCircleScaleAlignmentMap, "map" }, { MGLCircleScaleAlignmentViewport, "viewport" }, }); MBGL_DEFINE_ENUM(MGLCircleTranslationAnchor, { { MGLCircleTranslationAnchorMap, "map" }, { MGLCircleTranslationAnchorViewport, "viewport" }, }); } @interface MGLCircleStyleLayer () @property (nonatomic) mbgl::style::CircleLayer *rawLayer; @end @implementation MGLCircleStyleLayer { std::unique_ptr _pendingLayer; } - (instancetype)initWithIdentifier:(NSString *)identifier source:(MGLSource *)source { if (self = [super initWithIdentifier:identifier source:source]) { auto layer = std::make_unique(identifier.UTF8String, source.identifier.UTF8String); _pendingLayer = std::move(layer); self.rawLayer = _pendingLayer.get(); } return self; } - (mbgl::style::CircleLayer *)rawLayer { return (mbgl::style::CircleLayer *)super.rawLayer; } - (void)setRawLayer:(mbgl::style::CircleLayer *)rawLayer { super.rawLayer = rawLayer; } - (NSString *)sourceIdentifier { MGLAssertStyleLayerIsValid(); return @(self.rawLayer->getSourceID().c_str()); } - (NSString *)sourceLayerIdentifier { MGLAssertStyleLayerIsValid(); auto layerID = self.rawLayer->getSourceLayer(); return layerID.empty() ? nil : @(layerID.c_str()); } - (void)setSourceLayerIdentifier:(NSString *)sourceLayerIdentifier { MGLAssertStyleLayerIsValid(); self.rawLayer->setSourceLayer(sourceLayerIdentifier.UTF8String ?: ""); } - (void)setPredicate:(NSPredicate *)predicate { MGLAssertStyleLayerIsValid(); self.rawLayer->setFilter(predicate ? predicate.mgl_filter : mbgl::style::NullFilter()); } - (NSPredicate *)predicate { MGLAssertStyleLayerIsValid(); return [NSPredicate mgl_predicateWithFilter:self.rawLayer->getFilter()]; } #pragma mark - Adding to and removing from a map view - (void)addToMapView:(MGLMapView *)mapView belowLayer:(MGLStyleLayer *)otherLayer { if (_pendingLayer == nullptr) { [NSException raise:@"MGLRedundantLayerException" format:@"This instance %@ was already added to %@. Adding the same layer instance " \ "to the style more than once is invalid.", self, mapView.style]; } if (otherLayer) { const mbgl::optional belowLayerId{otherLayer.identifier.UTF8String}; mapView.mbglMap->addLayer(std::move(_pendingLayer), belowLayerId); } else { mapView.mbglMap->addLayer(std::move(_pendingLayer)); } } - (void)removeFromMapView:(MGLMapView *)mapView { if (self.rawLayer != mapView.mbglMap->getLayer(self.identifier.UTF8String)) { return; } auto removedLayer = mapView.mbglMap->removeLayer(self.identifier.UTF8String); if (!removedLayer) { return; } mbgl::style::CircleLayer *layer = dynamic_cast(removedLayer.get()); if (!layer) { return; } removedLayer.release(); _pendingLayer = std::unique_ptr(layer); self.rawLayer = _pendingLayer.get(); } #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 *)circleBlur { MGLAssertStyleLayerIsValid(); auto mbglValue = MGLStyleValueTransformer().toDataDrivenPropertyValue(circleBlur); self.rawLayer->setCircleBlur(mbglValue); } - (void)mbx_setCircleBlurTransition:(NSValue *)transitionValue { MGLAssertStyleLayerIsValid(); MGLTransition transition; [transitionValue getValue:&transition]; mbgl::style::TransitionOptions options { { MGLDurationFromTimeInterval(transition.duration) }, { MGLDurationFromTimeInterval(transition.delay) } }; self.rawLayer->setCircleBlurTransition(options); } - (MGLStyleValue *)circleBlur { MGLAssertStyleLayerIsValid(); auto propertyValue = self.rawLayer->getCircleBlur(); if (propertyValue.isUndefined()) { return MGLStyleValueTransformer().toDataDrivenStyleValue(self.rawLayer->getDefaultCircleBlur()); } return MGLStyleValueTransformer().toDataDrivenStyleValue(propertyValue); } - (NSValue *)mbx_getCircleBlurTransition { MGLAssertStyleLayerIsValid(); mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleBlurTransition(); MGLTransition transition; transition.duration = MGLTimeIntervalFromDuration(transitionOptions.duration.value_or(mbgl::Duration::zero())); transition.delay = MGLTimeIntervalFromDuration(transitionOptions.delay.value_or(mbgl::Duration::zero())); NSValue *transitionValue = [NSValue value:&transition withObjCType:@encode(MGLTransition)]; return transitionValue; } - (void)setCircleColor:(MGLStyleValue *)circleColor { MGLAssertStyleLayerIsValid(); auto mbglValue = MGLStyleValueTransformer().toDataDrivenPropertyValue(circleColor); self.rawLayer->setCircleColor(mbglValue); } - (void)mbx_setCircleColorTransition:(NSValue *)transitionValue { MGLAssertStyleLayerIsValid(); MGLTransition transition; [transitionValue getValue:&transition]; mbgl::style::TransitionOptions options { { MGLDurationFromTimeInterval(transition.duration) }, { MGLDurationFromTimeInterval(transition.delay) } }; self.rawLayer->setCircleColorTransition(options); } - (MGLStyleValue *)circleColor { MGLAssertStyleLayerIsValid(); auto propertyValue = self.rawLayer->getCircleColor(); if (propertyValue.isUndefined()) { return MGLStyleValueTransformer().toDataDrivenStyleValue(self.rawLayer->getDefaultCircleColor()); } return MGLStyleValueTransformer().toDataDrivenStyleValue(propertyValue); } - (NSValue *)mbx_getCircleColorTransition { MGLAssertStyleLayerIsValid(); mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleColorTransition(); MGLTransition transition; transition.duration = MGLTimeIntervalFromDuration(transitionOptions.duration.value_or(mbgl::Duration::zero())); transition.delay = MGLTimeIntervalFromDuration(transitionOptions.delay.value_or(mbgl::Duration::zero())); NSValue *transitionValue = [NSValue value:&transition withObjCType:@encode(MGLTransition)]; return transitionValue; } - (void)setCircleOpacity:(MGLStyleValue *)circleOpacity { MGLAssertStyleLayerIsValid(); auto mbglValue = MGLStyleValueTransformer().toDataDrivenPropertyValue(circleOpacity); self.rawLayer->setCircleOpacity(mbglValue); } - (void)mbx_setCircleOpacityTransition:(NSValue *)transitionValue { MGLAssertStyleLayerIsValid(); MGLTransition transition; [transitionValue getValue:&transition]; mbgl::style::TransitionOptions options { { MGLDurationFromTimeInterval(transition.duration) }, { MGLDurationFromTimeInterval(transition.delay) } }; self.rawLayer->setCircleOpacityTransition(options); } - (MGLStyleValue *)circleOpacity { MGLAssertStyleLayerIsValid(); auto propertyValue = self.rawLayer->getCircleOpacity(); if (propertyValue.isUndefined()) { return MGLStyleValueTransformer().toDataDrivenStyleValue(self.rawLayer->getDefaultCircleOpacity()); } return MGLStyleValueTransformer().toDataDrivenStyleValue(propertyValue); } - (NSValue *)mbx_getCircleOpacityTransition { MGLAssertStyleLayerIsValid(); mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleOpacityTransition(); MGLTransition transition; transition.duration = MGLTimeIntervalFromDuration(transitionOptions.duration.value_or(mbgl::Duration::zero())); transition.delay = MGLTimeIntervalFromDuration(transitionOptions.delay.value_or(mbgl::Duration::zero())); NSValue *transitionValue = [NSValue value:&transition withObjCType:@encode(MGLTransition)]; return transitionValue; } - (void)setCircleRadius:(MGLStyleValue *)circleRadius { MGLAssertStyleLayerIsValid(); auto mbglValue = MGLStyleValueTransformer().toDataDrivenPropertyValue(circleRadius); self.rawLayer->setCircleRadius(mbglValue); } - (void)mbx_setCircleRadiusTransition:(NSValue *)transitionValue { MGLAssertStyleLayerIsValid(); MGLTransition transition; [transitionValue getValue:&transition]; mbgl::style::TransitionOptions options { { MGLDurationFromTimeInterval(transition.duration) }, { MGLDurationFromTimeInterval(transition.delay) } }; self.rawLayer->setCircleRadiusTransition(options); } - (MGLStyleValue *)circleRadius { MGLAssertStyleLayerIsValid(); auto propertyValue = self.rawLayer->getCircleRadius(); if (propertyValue.isUndefined()) { return MGLStyleValueTransformer().toDataDrivenStyleValue(self.rawLayer->getDefaultCircleRadius()); } return MGLStyleValueTransformer().toDataDrivenStyleValue(propertyValue); } - (NSValue *)mbx_getCircleRadiusTransition { MGLAssertStyleLayerIsValid(); mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleRadiusTransition(); MGLTransition transition; transition.duration = MGLTimeIntervalFromDuration(transitionOptions.duration.value_or(mbgl::Duration::zero())); transition.delay = MGLTimeIntervalFromDuration(transitionOptions.delay.value_or(mbgl::Duration::zero())); NSValue *transitionValue = [NSValue value:&transition withObjCType:@encode(MGLTransition)]; return transitionValue; } - (void)setCircleScaleAlignment:(MGLStyleValue *)circleScaleAlignment { MGLAssertStyleLayerIsValid(); auto mbglValue = MGLStyleValueTransformer().toEnumPropertyValue(circleScaleAlignment); self.rawLayer->setCirclePitchScale(mbglValue); } - (void)mbx_setCircleScaleAlignmentTransition:(NSValue *)transitionValue { MGLAssertStyleLayerIsValid(); MGLTransition transition; [transitionValue getValue:&transition]; mbgl::style::TransitionOptions options { { MGLDurationFromTimeInterval(transition.duration) }, { MGLDurationFromTimeInterval(transition.delay) } }; self.rawLayer->setCirclePitchScaleTransition(options); } - (MGLStyleValue *)circleScaleAlignment { MGLAssertStyleLayerIsValid(); auto propertyValue = self.rawLayer->getCirclePitchScale(); if (propertyValue.isUndefined()) { return MGLStyleValueTransformer().toEnumStyleValue(self.rawLayer->getDefaultCirclePitchScale()); } return MGLStyleValueTransformer().toEnumStyleValue(propertyValue); } - (NSValue *)mbx_getCircleScaleAlignmentTransition { MGLAssertStyleLayerIsValid(); mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCirclePitchScaleTransition(); MGLTransition transition; transition.duration = MGLTimeIntervalFromDuration(transitionOptions.duration.value_or(mbgl::Duration::zero())); transition.delay = MGLTimeIntervalFromDuration(transitionOptions.delay.value_or(mbgl::Duration::zero())); NSValue *transitionValue = [NSValue value:&transition withObjCType:@encode(MGLTransition)]; return transitionValue; } - (void)setCirclePitchScale:(MGLStyleValue *)circlePitchScale { } - (MGLStyleValue *)circlePitchScale { return self.circleScaleAlignment; } - (NSValue *)mbx_getCirclePitchScale { return [self mbx_getCircleScaleAlignmentTransition]; } - (void)setCircleStrokeColor:(MGLStyleValue *)circleStrokeColor { MGLAssertStyleLayerIsValid(); auto mbglValue = MGLStyleValueTransformer().toDataDrivenPropertyValue(circleStrokeColor); self.rawLayer->setCircleStrokeColor(mbglValue); } - (void)mbx_setCircleStrokeColorTransition:(NSValue *)transitionValue { MGLAssertStyleLayerIsValid(); MGLTransition transition; [transitionValue getValue:&transition]; mbgl::style::TransitionOptions options { { MGLDurationFromTimeInterval(transition.duration) }, { MGLDurationFromTimeInterval(transition.delay) } }; self.rawLayer->setCircleStrokeColorTransition(options); } - (MGLStyleValue *)circleStrokeColor { MGLAssertStyleLayerIsValid(); auto propertyValue = self.rawLayer->getCircleStrokeColor(); if (propertyValue.isUndefined()) { return MGLStyleValueTransformer().toDataDrivenStyleValue(self.rawLayer->getDefaultCircleStrokeColor()); } return MGLStyleValueTransformer().toDataDrivenStyleValue(propertyValue); } - (NSValue *)mbx_getCircleStrokeColorTransition { MGLAssertStyleLayerIsValid(); mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleStrokeColorTransition(); MGLTransition transition; transition.duration = MGLTimeIntervalFromDuration(transitionOptions.duration.value_or(mbgl::Duration::zero())); transition.delay = MGLTimeIntervalFromDuration(transitionOptions.delay.value_or(mbgl::Duration::zero())); NSValue *transitionValue = [NSValue value:&transition withObjCType:@encode(MGLTransition)]; return transitionValue; } - (void)setCircleStrokeOpacity:(MGLStyleValue *)circleStrokeOpacity { MGLAssertStyleLayerIsValid(); auto mbglValue = MGLStyleValueTransformer().toDataDrivenPropertyValue(circleStrokeOpacity); self.rawLayer->setCircleStrokeOpacity(mbglValue); } - (void)mbx_setCircleStrokeOpacityTransition:(NSValue *)transitionValue { MGLAssertStyleLayerIsValid(); MGLTransition transition; [transitionValue getValue:&transition]; mbgl::style::TransitionOptions options { { MGLDurationFromTimeInterval(transition.duration) }, { MGLDurationFromTimeInterval(transition.delay) } }; self.rawLayer->setCircleStrokeOpacityTransition(options); } - (MGLStyleValue *)circleStrokeOpacity { MGLAssertStyleLayerIsValid(); auto propertyValue = self.rawLayer->getCircleStrokeOpacity(); if (propertyValue.isUndefined()) { return MGLStyleValueTransformer().toDataDrivenStyleValue(self.rawLayer->getDefaultCircleStrokeOpacity()); } return MGLStyleValueTransformer().toDataDrivenStyleValue(propertyValue); } - (NSValue *)mbx_getCircleStrokeOpacityTransition { MGLAssertStyleLayerIsValid(); mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleStrokeOpacityTransition(); MGLTransition transition; transition.duration = MGLTimeIntervalFromDuration(transitionOptions.duration.value_or(mbgl::Duration::zero())); transition.delay = MGLTimeIntervalFromDuration(transitionOptions.delay.value_or(mbgl::Duration::zero())); NSValue *transitionValue = [NSValue value:&transition withObjCType:@encode(MGLTransition)]; return transitionValue; } - (void)setCircleStrokeWidth:(MGLStyleValue *)circleStrokeWidth { MGLAssertStyleLayerIsValid(); auto mbglValue = MGLStyleValueTransformer().toDataDrivenPropertyValue(circleStrokeWidth); self.rawLayer->setCircleStrokeWidth(mbglValue); } - (void)mbx_setCircleStrokeWidthTransition:(NSValue *)transitionValue { MGLAssertStyleLayerIsValid(); MGLTransition transition; [transitionValue getValue:&transition]; mbgl::style::TransitionOptions options { { MGLDurationFromTimeInterval(transition.duration) }, { MGLDurationFromTimeInterval(transition.delay) } }; self.rawLayer->setCircleStrokeWidthTransition(options); } - (MGLStyleValue *)circleStrokeWidth { MGLAssertStyleLayerIsValid(); auto propertyValue = self.rawLayer->getCircleStrokeWidth(); if (propertyValue.isUndefined()) { return MGLStyleValueTransformer().toDataDrivenStyleValue(self.rawLayer->getDefaultCircleStrokeWidth()); } return MGLStyleValueTransformer().toDataDrivenStyleValue(propertyValue); } - (NSValue *)mbx_getCircleStrokeWidthTransition { MGLAssertStyleLayerIsValid(); mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleStrokeWidthTransition(); MGLTransition transition; transition.duration = MGLTimeIntervalFromDuration(transitionOptions.duration.value_or(mbgl::Duration::zero())); transition.delay = MGLTimeIntervalFromDuration(transitionOptions.delay.value_or(mbgl::Duration::zero())); NSValue *transitionValue = [NSValue value:&transition withObjCType:@encode(MGLTransition)]; return transitionValue; } - (void)setCircleTranslation:(MGLStyleValue *)circleTranslation { MGLAssertStyleLayerIsValid(); auto mbglValue = MGLStyleValueTransformer, NSValue *>().toInterpolatablePropertyValue(circleTranslation); self.rawLayer->setCircleTranslate(mbglValue); } - (void)mbx_setCircleTranslationTransition:(NSValue *)transitionValue { MGLAssertStyleLayerIsValid(); MGLTransition transition; [transitionValue getValue:&transition]; mbgl::style::TransitionOptions options { { MGLDurationFromTimeInterval(transition.duration) }, { MGLDurationFromTimeInterval(transition.delay) } }; self.rawLayer->setCircleTranslateTransition(options); } - (MGLStyleValue *)circleTranslation { MGLAssertStyleLayerIsValid(); auto propertyValue = self.rawLayer->getCircleTranslate(); if (propertyValue.isUndefined()) { return MGLStyleValueTransformer, NSValue *>().toStyleValue(self.rawLayer->getDefaultCircleTranslate()); } return MGLStyleValueTransformer, NSValue *>().toStyleValue(propertyValue); } - (NSValue *)mbx_getCircleTranslationTransition { MGLAssertStyleLayerIsValid(); mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleTranslateTransition(); MGLTransition transition; transition.duration = MGLTimeIntervalFromDuration(transitionOptions.duration.value_or(mbgl::Duration::zero())); transition.delay = MGLTimeIntervalFromDuration(transitionOptions.delay.value_or(mbgl::Duration::zero())); NSValue *transitionValue = [NSValue value:&transition withObjCType:@encode(MGLTransition)]; return transitionValue; } - (void)setCircleTranslate:(MGLStyleValue *)circleTranslate { } - (MGLStyleValue *)circleTranslate { return self.circleTranslation; } - (NSValue *)mbx_getCircleTranslate { return [self mbx_getCircleTranslationTransition]; } - (void)setCircleTranslationAnchor:(MGLStyleValue *)circleTranslationAnchor { MGLAssertStyleLayerIsValid(); auto mbglValue = MGLStyleValueTransformer().toEnumPropertyValue(circleTranslationAnchor); self.rawLayer->setCircleTranslateAnchor(mbglValue); } - (void)mbx_setCircleTranslationAnchorTransition:(NSValue *)transitionValue { MGLAssertStyleLayerIsValid(); MGLTransition transition; [transitionValue getValue:&transition]; mbgl::style::TransitionOptions options { { MGLDurationFromTimeInterval(transition.duration) }, { MGLDurationFromTimeInterval(transition.delay) } }; self.rawLayer->setCircleTranslateAnchorTransition(options); } - (MGLStyleValue *)circleTranslationAnchor { MGLAssertStyleLayerIsValid(); auto propertyValue = self.rawLayer->getCircleTranslateAnchor(); if (propertyValue.isUndefined()) { return MGLStyleValueTransformer().toEnumStyleValue(self.rawLayer->getDefaultCircleTranslateAnchor()); } return MGLStyleValueTransformer().toEnumStyleValue(propertyValue); } - (NSValue *)mbx_getCircleTranslationAnchorTransition { MGLAssertStyleLayerIsValid(); mbgl::style::TransitionOptions transitionOptions = self.rawLayer->getCircleTranslateAnchorTransition(); MGLTransition transition; transition.duration = MGLTimeIntervalFromDuration(transitionOptions.duration.value_or(mbgl::Duration::zero())); transition.delay = MGLTimeIntervalFromDuration(transitionOptions.delay.value_or(mbgl::Duration::zero())); NSValue *transitionValue = [NSValue value:&transition withObjCType:@encode(MGLTransition)]; return transitionValue; } - (void)setCircleTranslateAnchor:(MGLStyleValue *)circleTranslateAnchor { } - (MGLStyleValue *)circleTranslateAnchor { return self.circleTranslationAnchor; } - (NSValue *)mbx_getCircleTranslateAnchor { return [self mbx_getCircleTranslationAnchorTransition]; } @end @implementation NSValue (MGLCircleStyleLayerAdditions) + (NSValue *)valueWithMGLCircleScaleAlignment:(MGLCircleScaleAlignment)circleScaleAlignment { return [NSValue value:&circleScaleAlignment withObjCType:@encode(MGLCircleScaleAlignment)]; } - (MGLCircleScaleAlignment)MGLCircleScaleAlignmentValue { MGLCircleScaleAlignment circleScaleAlignment; [self getValue:&circleScaleAlignment]; return circleScaleAlignment; } + (NSValue *)valueWithMGLCircleTranslationAnchor:(MGLCircleTranslationAnchor)circleTranslationAnchor { return [NSValue value:&circleTranslationAnchor withObjCType:@encode(MGLCircleTranslationAnchor)]; } - (MGLCircleTranslationAnchor)MGLCircleTranslationAnchorValue { MGLCircleTranslationAnchor circleTranslationAnchor; [self getValue:&circleTranslationAnchor]; return circleTranslationAnchor; } @end