From 22b3834caa5fe3ae91cf957124a3f1ad1d165cee Mon Sep 17 00:00:00 2001 From: Jesse Bounds Date: Wed, 4 Jan 2017 07:35:25 -0800 Subject: [ios, macos] Add support for data-driven property functions --- platform/darwin/src/MGLLineStyleLayer.mm | 98 +++++++++++++++++++++++--------- 1 file changed, 70 insertions(+), 28 deletions(-) (limited to 'platform/darwin/src/MGLLineStyleLayer.mm') diff --git a/platform/darwin/src/MGLLineStyleLayer.mm b/platform/darwin/src/MGLLineStyleLayer.mm index 73ffa9a5ae..6f1d2ee249 100644 --- a/platform/darwin/src/MGLLineStyleLayer.mm +++ b/platform/darwin/src/MGLLineStyleLayer.mm @@ -150,7 +150,10 @@ namespace mbgl { - (MGLStyleValue *)lineCap { MGLAssertStyleLayerIsValid(); - auto propertyValue = self.rawLayer->getLineCap() ?: self.rawLayer->getDefaultLineCap(); + auto propertyValue = self.rawLayer->getLineCap(); + if (propertyValue.isUndefined()) { + return MGLStyleValueTransformer().toEnumStyleValue(self.rawLayer->getDefaultLineCap()); + } return MGLStyleValueTransformer().toEnumStyleValue(propertyValue); } @@ -164,35 +167,44 @@ namespace mbgl { - (MGLStyleValue *)lineJoin { MGLAssertStyleLayerIsValid(); - auto propertyValue = self.rawLayer->getLineJoin() ?: self.rawLayer->getDefaultLineJoin(); + auto propertyValue = self.rawLayer->getLineJoin(); + if (propertyValue.isUndefined()) { + return MGLStyleValueTransformer().toEnumStyleValue(self.rawLayer->getDefaultLineJoin()); + } return MGLStyleValueTransformer().toEnumStyleValue(propertyValue); } - (void)setLineMiterLimit:(MGLStyleValue *)lineMiterLimit { MGLAssertStyleLayerIsValid(); - auto mbglValue = MGLStyleValueTransformer().toPropertyValue(lineMiterLimit); + auto mbglValue = MGLStyleValueTransformer().toInterpolatablePropertyValue(lineMiterLimit); self.rawLayer->setLineMiterLimit(mbglValue); } - (MGLStyleValue *)lineMiterLimit { MGLAssertStyleLayerIsValid(); - auto propertyValue = self.rawLayer->getLineMiterLimit() ?: self.rawLayer->getDefaultLineMiterLimit(); + auto propertyValue = self.rawLayer->getLineMiterLimit(); + if (propertyValue.isUndefined()) { + return MGLStyleValueTransformer().toStyleValue(self.rawLayer->getDefaultLineMiterLimit()); + } return MGLStyleValueTransformer().toStyleValue(propertyValue); } - (void)setLineRoundLimit:(MGLStyleValue *)lineRoundLimit { MGLAssertStyleLayerIsValid(); - auto mbglValue = MGLStyleValueTransformer().toPropertyValue(lineRoundLimit); + auto mbglValue = MGLStyleValueTransformer().toInterpolatablePropertyValue(lineRoundLimit); self.rawLayer->setLineRoundLimit(mbglValue); } - (MGLStyleValue *)lineRoundLimit { MGLAssertStyleLayerIsValid(); - auto propertyValue = self.rawLayer->getLineRoundLimit() ?: self.rawLayer->getDefaultLineRoundLimit(); + auto propertyValue = self.rawLayer->getLineRoundLimit(); + if (propertyValue.isUndefined()) { + return MGLStyleValueTransformer().toStyleValue(self.rawLayer->getDefaultLineRoundLimit()); + } return MGLStyleValueTransformer().toStyleValue(propertyValue); } @@ -201,29 +213,35 @@ namespace mbgl { - (void)setLineBlur:(MGLStyleValue *)lineBlur { MGLAssertStyleLayerIsValid(); - auto mbglValue = MGLStyleValueTransformer().toPropertyValue(lineBlur); + auto mbglValue = MGLStyleValueTransformer().toDataDrivenPropertyValue(lineBlur); self.rawLayer->setLineBlur(mbglValue); } - (MGLStyleValue *)lineBlur { MGLAssertStyleLayerIsValid(); - auto propertyValue = self.rawLayer->getLineBlur() ?: self.rawLayer->getDefaultLineBlur(); - return MGLStyleValueTransformer().toStyleValue(propertyValue); + auto propertyValue = self.rawLayer->getLineBlur(); + if (propertyValue.isUndefined()) { + return MGLStyleValueTransformer().toDataDrivenStyleValue(self.rawLayer->getDefaultLineBlur()); + } + return MGLStyleValueTransformer().toDataDrivenStyleValue(propertyValue); } - (void)setLineColor:(MGLStyleValue *)lineColor { MGLAssertStyleLayerIsValid(); - auto mbglValue = MGLStyleValueTransformer().toPropertyValue(lineColor); + auto mbglValue = MGLStyleValueTransformer().toDataDrivenPropertyValue(lineColor); self.rawLayer->setLineColor(mbglValue); } - (MGLStyleValue *)lineColor { MGLAssertStyleLayerIsValid(); - auto propertyValue = self.rawLayer->getLineColor() ?: self.rawLayer->getDefaultLineColor(); - return MGLStyleValueTransformer().toStyleValue(propertyValue); + auto propertyValue = self.rawLayer->getLineColor(); + if (propertyValue.isUndefined()) { + return MGLStyleValueTransformer().toDataDrivenStyleValue(self.rawLayer->getDefaultLineColor()); + } + return MGLStyleValueTransformer().toDataDrivenStyleValue(propertyValue); } - (void)setLineDashPattern:(MGLStyleValue *> *)lineDashPattern { @@ -236,7 +254,10 @@ namespace mbgl { - (MGLStyleValue *> *)lineDashPattern { MGLAssertStyleLayerIsValid(); - auto propertyValue = self.rawLayer->getLineDasharray() ?: self.rawLayer->getDefaultLineDasharray(); + auto propertyValue = self.rawLayer->getLineDasharray(); + if (propertyValue.isUndefined()) { + return MGLStyleValueTransformer, NSArray *, float>().toStyleValue(self.rawLayer->getDefaultLineDasharray()); + } return MGLStyleValueTransformer, NSArray *, float>().toStyleValue(propertyValue); } @@ -250,43 +271,52 @@ namespace mbgl { - (void)setLineGapWidth:(MGLStyleValue *)lineGapWidth { MGLAssertStyleLayerIsValid(); - auto mbglValue = MGLStyleValueTransformer().toPropertyValue(lineGapWidth); + auto mbglValue = MGLStyleValueTransformer().toDataDrivenPropertyValue(lineGapWidth); self.rawLayer->setLineGapWidth(mbglValue); } - (MGLStyleValue *)lineGapWidth { MGLAssertStyleLayerIsValid(); - auto propertyValue = self.rawLayer->getLineGapWidth() ?: self.rawLayer->getDefaultLineGapWidth(); - return MGLStyleValueTransformer().toStyleValue(propertyValue); + auto propertyValue = self.rawLayer->getLineGapWidth(); + if (propertyValue.isUndefined()) { + return MGLStyleValueTransformer().toDataDrivenStyleValue(self.rawLayer->getDefaultLineGapWidth()); + } + return MGLStyleValueTransformer().toDataDrivenStyleValue(propertyValue); } - (void)setLineOffset:(MGLStyleValue *)lineOffset { MGLAssertStyleLayerIsValid(); - auto mbglValue = MGLStyleValueTransformer().toPropertyValue(lineOffset); + auto mbglValue = MGLStyleValueTransformer().toDataDrivenPropertyValue(lineOffset); self.rawLayer->setLineOffset(mbglValue); } - (MGLStyleValue *)lineOffset { MGLAssertStyleLayerIsValid(); - auto propertyValue = self.rawLayer->getLineOffset() ?: self.rawLayer->getDefaultLineOffset(); - return MGLStyleValueTransformer().toStyleValue(propertyValue); + auto propertyValue = self.rawLayer->getLineOffset(); + if (propertyValue.isUndefined()) { + return MGLStyleValueTransformer().toDataDrivenStyleValue(self.rawLayer->getDefaultLineOffset()); + } + return MGLStyleValueTransformer().toDataDrivenStyleValue(propertyValue); } - (void)setLineOpacity:(MGLStyleValue *)lineOpacity { MGLAssertStyleLayerIsValid(); - auto mbglValue = MGLStyleValueTransformer().toPropertyValue(lineOpacity); + auto mbglValue = MGLStyleValueTransformer().toDataDrivenPropertyValue(lineOpacity); self.rawLayer->setLineOpacity(mbglValue); } - (MGLStyleValue *)lineOpacity { MGLAssertStyleLayerIsValid(); - auto propertyValue = self.rawLayer->getLineOpacity() ?: self.rawLayer->getDefaultLineOpacity(); - return MGLStyleValueTransformer().toStyleValue(propertyValue); + auto propertyValue = self.rawLayer->getLineOpacity(); + if (propertyValue.isUndefined()) { + return MGLStyleValueTransformer().toDataDrivenStyleValue(self.rawLayer->getDefaultLineOpacity()); + } + return MGLStyleValueTransformer().toDataDrivenStyleValue(propertyValue); } - (void)setLinePattern:(MGLStyleValue *)linePattern { @@ -299,21 +329,27 @@ namespace mbgl { - (MGLStyleValue *)linePattern { MGLAssertStyleLayerIsValid(); - auto propertyValue = self.rawLayer->getLinePattern() ?: self.rawLayer->getDefaultLinePattern(); + auto propertyValue = self.rawLayer->getLinePattern(); + if (propertyValue.isUndefined()) { + return MGLStyleValueTransformer().toStyleValue(self.rawLayer->getDefaultLinePattern()); + } return MGLStyleValueTransformer().toStyleValue(propertyValue); } - (void)setLineTranslation:(MGLStyleValue *)lineTranslation { MGLAssertStyleLayerIsValid(); - auto mbglValue = MGLStyleValueTransformer, NSValue *>().toPropertyValue(lineTranslation); + auto mbglValue = MGLStyleValueTransformer, NSValue *>().toInterpolatablePropertyValue(lineTranslation); self.rawLayer->setLineTranslate(mbglValue); } - (MGLStyleValue *)lineTranslation { MGLAssertStyleLayerIsValid(); - auto propertyValue = self.rawLayer->getLineTranslate() ?: self.rawLayer->getDefaultLineTranslate(); + auto propertyValue = self.rawLayer->getLineTranslate(); + if (propertyValue.isUndefined()) { + return MGLStyleValueTransformer, NSValue *>().toStyleValue(self.rawLayer->getDefaultLineTranslate()); + } return MGLStyleValueTransformer, NSValue *>().toStyleValue(propertyValue); } @@ -334,7 +370,10 @@ namespace mbgl { - (MGLStyleValue *)lineTranslationAnchor { MGLAssertStyleLayerIsValid(); - auto propertyValue = self.rawLayer->getLineTranslateAnchor() ?: self.rawLayer->getDefaultLineTranslateAnchor(); + auto propertyValue = self.rawLayer->getLineTranslateAnchor(); + if (propertyValue.isUndefined()) { + return MGLStyleValueTransformer().toEnumStyleValue(self.rawLayer->getDefaultLineTranslateAnchor()); + } return MGLStyleValueTransformer().toEnumStyleValue(propertyValue); } @@ -348,14 +387,17 @@ namespace mbgl { - (void)setLineWidth:(MGLStyleValue *)lineWidth { MGLAssertStyleLayerIsValid(); - auto mbglValue = MGLStyleValueTransformer().toPropertyValue(lineWidth); + auto mbglValue = MGLStyleValueTransformer().toInterpolatablePropertyValue(lineWidth); self.rawLayer->setLineWidth(mbglValue); } - (MGLStyleValue *)lineWidth { MGLAssertStyleLayerIsValid(); - auto propertyValue = self.rawLayer->getLineWidth() ?: self.rawLayer->getDefaultLineWidth(); + auto propertyValue = self.rawLayer->getLineWidth(); + if (propertyValue.isUndefined()) { + return MGLStyleValueTransformer().toStyleValue(self.rawLayer->getDefaultLineWidth()); + } return MGLStyleValueTransformer().toStyleValue(propertyValue); } -- cgit v1.2.1