[ios, macos] Fixed runtime styling deprecation warnings
This commit is contained in:
committed by
Minh Nguyễn
parent
bd2f3a28a5
commit
360e5bf631
@@ -246,7 +246,10 @@
|
||||
}
|
||||
|
||||
- (void)testClasses {
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
||||
XCTAssertEqual(self.style.styleClasses.count, 0);
|
||||
#pragma clang diagnostic pop
|
||||
}
|
||||
|
||||
- (void)testImages {
|
||||
|
||||
@@ -7,7 +7,107 @@
|
||||
@implementation MGLStyleValueTests
|
||||
|
||||
- (void)testStoplessFunction {
|
||||
XCTAssertThrowsSpecificNamed([MGLStyleValue<NSNumber *> valueWithStops:@{}], NSException, NSInvalidArgumentException, @"Stopless function should raise an exception");
|
||||
XCTAssertThrowsSpecificNamed([MGLStyleValue<NSNumber *> valueWithInterpolationMode:MGLInterpolationModeExponential cameraStops:@{} options:nil], NSException, NSInvalidArgumentException, @"Stopless function should raise an exception");
|
||||
}
|
||||
|
||||
- (void)testDeprecatedFunctions {
|
||||
MGLShapeSource *shapeSource = [[MGLShapeSource alloc] initWithIdentifier:@"test"
|
||||
shape:nil
|
||||
options:nil];
|
||||
MGLSymbolStyleLayer *symbolStyleLayer = [[MGLSymbolStyleLayer alloc] initWithIdentifier:@"symbolLayer"
|
||||
source:shapeSource];
|
||||
MGLCircleStyleLayer *circleStyleLayer = [[MGLCircleStyleLayer alloc] initWithIdentifier:@"circleLayer"
|
||||
source:shapeSource];
|
||||
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
||||
// deprecated function, stops with float values
|
||||
NSDictionary<NSNumber *, MGLStyleValue<NSNumber *> *> *stops = @{
|
||||
@1: [MGLStyleValue<NSNumber *> valueWithRawValue:@0],
|
||||
@2: [MGLStyleValue<NSNumber *> valueWithRawValue:@1],
|
||||
@3: [MGLStyleValue<NSNumber *> valueWithRawValue:@2],
|
||||
@4: [MGLStyleValue<NSNumber *> valueWithRawValue:@0],
|
||||
};
|
||||
MGLStyleValue<NSNumber *> *iconHaloBlurStyleValue =
|
||||
[MGLStyleValue<NSNumber *> valueWithInterpolationBase:1.0 stops:stops];
|
||||
symbolStyleLayer.iconHaloBlur = iconHaloBlurStyleValue;
|
||||
XCTAssertEqualObjects(symbolStyleLayer.iconHaloBlur, iconHaloBlurStyleValue);
|
||||
|
||||
// deprecated function, stops with boolean values
|
||||
stops = @{
|
||||
@1: [MGLStyleValue<NSNumber *> valueWithRawValue:@YES],
|
||||
@2: [MGLStyleValue<NSNumber *> valueWithRawValue:@NO],
|
||||
@3: [MGLStyleValue<NSNumber *> valueWithRawValue:@YES],
|
||||
@4: [MGLStyleValue<NSNumber *> valueWithRawValue:@NO],
|
||||
};
|
||||
MGLStyleValue<NSNumber *> *iconAllowsOverlapStyleValue =
|
||||
[MGLStyleValue<NSNumber *> valueWithInterpolationBase:1.0 stops:stops];
|
||||
symbolStyleLayer.iconAllowsOverlap = iconAllowsOverlapStyleValue;
|
||||
// iconAllowsOverlap is boolean so mgl and mbgl conversions will coerce the developers stops into interval stops
|
||||
MGLStyleValue<NSNumber *> *expectedIconAllowsOverlapStyleValue =
|
||||
[MGLStyleValue<NSNumber *> valueWithInterpolationMode:MGLInterpolationModeInterval
|
||||
cameraStops:stops
|
||||
options:nil];
|
||||
XCTAssertEqualObjects(symbolStyleLayer.iconAllowsOverlap, expectedIconAllowsOverlapStyleValue);
|
||||
|
||||
///
|
||||
// creating and using MGLStyleFunctions directly
|
||||
///
|
||||
|
||||
NSDictionary<NSNumber *, MGLStyleValue<NSNumber *> *> *circleRadiusStops = @{
|
||||
@0: [MGLStyleValue<NSNumber *> valueWithRawValue:@10],
|
||||
@20: [MGLStyleValue<NSNumber *> valueWithRawValue:@5],
|
||||
};
|
||||
MGLStyleFunction<NSNumber *> *circleRadiusFunction =
|
||||
[MGLStyleFunction<NSNumber *> functionWithInterpolationBase:1.0
|
||||
stops:circleRadiusStops];
|
||||
circleStyleLayer.circleRadius = circleRadiusFunction;
|
||||
MGLStyleValue<NSNumber *> *expectedCircleRadiusFunction =
|
||||
[MGLStyleValue<NSNumber *> valueWithInterpolationMode:MGLInterpolationModeExponential
|
||||
cameraStops:circleRadiusStops
|
||||
options:nil];
|
||||
// setting a data driven property to an MGLStyleFunction should return an exponential camera function
|
||||
XCTAssertEqualObjects(circleStyleLayer.circleRadius, expectedCircleRadiusFunction);
|
||||
|
||||
CGVector circleTranslationOne = CGVectorMake(100, 0);
|
||||
CGVector circleTranslationTwo = CGVectorMake(0, 0);
|
||||
#if TARGET_OS_IPHONE
|
||||
NSValue *circleTranslationValueOne = [NSValue valueWithCGVector:circleTranslationOne];
|
||||
NSValue *circleTranslationValueTwo = [NSValue valueWithCGVector:circleTranslationTwo];
|
||||
#else
|
||||
NSValue *circleTranslationValueOne = [NSValue value:&circleTranslationOne withObjCType:@encode(CGVector)];
|
||||
NSValue *circleTranslationValueTwo = [NSValue value:&circleTranslationTwo withObjCType:@encode(CGVector)];
|
||||
#endif
|
||||
|
||||
NSDictionary<NSNumber *, MGLStyleValue<NSValue *> *> *circleTranslationStops = @{
|
||||
@0: [MGLStyleValue<NSValue *> valueWithRawValue:circleTranslationValueOne],
|
||||
@10: [MGLStyleValue<NSValue *> valueWithRawValue:circleTranslationValueTwo],
|
||||
};
|
||||
MGLStyleFunction<NSValue *> *circleTranslationFunction =
|
||||
[MGLStyleFunction<NSValue *> functionWithInterpolationBase:1.0
|
||||
stops:circleTranslationStops];
|
||||
circleStyleLayer.circleTranslation = circleTranslationFunction;
|
||||
MGLStyleValue<NSValue *> *expectedCircleTranslationFunction =
|
||||
[MGLStyleValue<NSValue *> valueWithInterpolationMode:MGLInterpolationModeExponential
|
||||
cameraStops:circleTranslationStops
|
||||
options:nil];
|
||||
// setting a non-data driven, interpolatable property to an MGLStyleFunction should return an exponential camera function
|
||||
XCTAssertEqualObjects(circleStyleLayer.circleTranslation, expectedCircleTranslationFunction);
|
||||
|
||||
NSDictionary<NSNumber *, MGLStyleValue<NSNumber *> *> *iconOptionalStops = @{
|
||||
@0: [MGLStyleValue<NSNumber *> valueWithRawValue:@NO],
|
||||
@20: [MGLStyleValue<NSNumber *> valueWithRawValue:@YES],
|
||||
};
|
||||
MGLStyleFunction<NSNumber *> *iconOptionalFunction =
|
||||
[MGLStyleFunction<NSNumber *> valueWithInterpolationBase:1.0
|
||||
stops:iconOptionalStops];
|
||||
symbolStyleLayer.iconOptional = iconOptionalFunction;
|
||||
MGLStyleValue<NSNumber *> *expectedIconOptionalFunction =
|
||||
[MGLStyleValue<NSNumber *> valueWithInterpolationMode:MGLInterpolationModeInterval
|
||||
cameraStops:iconOptionalStops
|
||||
options:nil];
|
||||
XCTAssertEqualObjects(symbolStyleLayer.iconOptional, expectedIconOptionalFunction);
|
||||
#pragma clang diagnostic pop
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -35,97 +35,6 @@ extension MGLStyleValueTests {
|
||||
XCTAssertEqual(circleStyleLayer.circleScaleAlignment, expectedCircleScaleAlignmentValue)
|
||||
}
|
||||
|
||||
func testDeprecatedFunctions() {
|
||||
let shapeSource = MGLShapeSource(identifier: "test", shape: nil, options: nil)
|
||||
let symbolStyleLayer = MGLSymbolStyleLayer(identifier: "symbolLayer", source: shapeSource)
|
||||
let circleStyleLayer = MGLCircleStyleLayer(identifier: "circleLayer", source: shapeSource)
|
||||
|
||||
// deprecated function, stops with float values
|
||||
let iconHaloBlurStyleValue = MGLStyleValue<NSNumber>(interpolationBase: 1.0, stops: [1: MGLStyleValue(rawValue: 0),
|
||||
2: MGLStyleValue(rawValue: 1),
|
||||
3: MGLStyleValue(rawValue: 2),
|
||||
4: MGLStyleValue(rawValue: 3)])
|
||||
symbolStyleLayer.iconHaloBlur = iconHaloBlurStyleValue
|
||||
XCTAssertEqual(symbolStyleLayer.iconHaloBlur!, iconHaloBlurStyleValue)
|
||||
|
||||
// deprecated function, stops with boolean values
|
||||
let stops: [NSNumber: MGLStyleValue<NSNumber>] = [
|
||||
1: MGLStyleValue(rawValue: true),
|
||||
2: MGLStyleValue(rawValue: false),
|
||||
3: MGLStyleValue(rawValue: true),
|
||||
4: MGLStyleValue(rawValue: false),
|
||||
]
|
||||
let iconAllowsOverlapStyleValue = MGLStyleValue<NSNumber>(interpolationBase: 1, stops: stops)
|
||||
symbolStyleLayer.iconAllowsOverlap = iconAllowsOverlapStyleValue
|
||||
// iconAllowsOverlap is boolean so mgl and mbgl conversions will coerce the developers stops into interval stops
|
||||
let expectedIconAllowsOverlapStyleValue = MGLStyleValue<NSNumber>(
|
||||
interpolationMode: .interval,
|
||||
cameraStops: stops,
|
||||
options: nil
|
||||
)
|
||||
XCTAssertEqual(symbolStyleLayer.iconAllowsOverlap, expectedIconAllowsOverlapStyleValue)
|
||||
|
||||
///
|
||||
// creating and using MGLStyleFunctions directly
|
||||
///
|
||||
|
||||
let circleRadiusStops: [NSNumber: MGLStyleValue<NSNumber>] = [
|
||||
0: MGLStyleValue(rawValue: 10),
|
||||
20: MGLStyleValue(rawValue: 5)
|
||||
]
|
||||
let circleRadiusFunction = MGLStyleFunction<NSNumber>(
|
||||
interpolationBase: 1.0,
|
||||
stops: circleRadiusStops
|
||||
)
|
||||
circleStyleLayer.circleRadius = circleRadiusFunction
|
||||
let expectedCircleRadiusFunction = MGLStyleValue<NSNumber>(
|
||||
interpolationMode: .exponential,
|
||||
cameraStops:
|
||||
circleRadiusStops,
|
||||
options: nil
|
||||
)
|
||||
// setting a data driven property to an MGLStyleFunction should return an exponential camera function
|
||||
XCTAssertEqual(circleStyleLayer.circleRadius, expectedCircleRadiusFunction)
|
||||
|
||||
var circleTranslationOne = CGVector(dx: 100, dy: 0)
|
||||
let circleTranslationValueOne = NSValue(bytes: &circleTranslationOne, objCType: "{CGVector=dd}")
|
||||
var circleTranslationTwo = CGVector(dx: 0, dy: 0)
|
||||
let circleTranslationValueTwo = NSValue(bytes: &circleTranslationTwo, objCType: "{CGVector=dd}")
|
||||
|
||||
let circleTranslationStops: [NSNumber: MGLStyleValue<NSValue>] = [
|
||||
0: MGLStyleValue<NSValue>(rawValue: circleTranslationValueOne),
|
||||
10: MGLStyleValue<NSValue>(rawValue: circleTranslationValueTwo)
|
||||
]
|
||||
let circleTranslationFunction = MGLStyleFunction<NSValue>(
|
||||
interpolationBase: 1.0,
|
||||
stops: circleTranslationStops
|
||||
)
|
||||
circleStyleLayer.circleTranslation = circleTranslationFunction
|
||||
let expectedCircleTranslationFunction = MGLStyleValue<NSValue>(
|
||||
interpolationMode: .exponential,
|
||||
cameraStops: circleTranslationStops,
|
||||
options: nil
|
||||
)
|
||||
// setting a non-data driven, interpolatable property to an MGLStyleFunction should return an exponential camera function
|
||||
XCTAssertEqual(circleStyleLayer.circleTranslation, expectedCircleTranslationFunction)
|
||||
|
||||
let iconOptionalStops: [NSNumber: MGLStyleValue<NSNumber>] = [
|
||||
0: MGLStyleValue(rawValue: false),
|
||||
20: MGLStyleValue(rawValue: true)
|
||||
]
|
||||
let iconOptionalFunction = MGLStyleFunction(
|
||||
interpolationBase: 1.0,
|
||||
stops: iconOptionalStops
|
||||
)
|
||||
symbolStyleLayer.iconOptional = iconOptionalFunction
|
||||
let expectedIconOptionalFunction = MGLStyleValue(
|
||||
interpolationMode: .interval,
|
||||
cameraStops: iconOptionalStops,
|
||||
options: nil
|
||||
)
|
||||
XCTAssertEqual(symbolStyleLayer.iconOptional, expectedIconOptionalFunction)
|
||||
}
|
||||
|
||||
func testFunctionsWithNonDataDrivenProperties() {
|
||||
let shapeSource = MGLShapeSource(identifier: "test", shape: nil, options: nil)
|
||||
let circleStyleLayer = MGLCircleStyleLayer(identifier: "circleLayer", source: shapeSource)
|
||||
|
||||
@@ -689,11 +689,11 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio
|
||||
|
||||
MGLFillStyleLayer *fillStyleLayer = (MGLFillStyleLayer *)[self.mapView.style layerWithIdentifier:@"water"];
|
||||
|
||||
MGLStyleValue *colorFunction = [MGLStyleValue<NSColor *> valueWithStops:@{
|
||||
MGLStyleValue *colorFunction = [MGLStyleValue<NSColor *> valueWithInterpolationMode:MGLInterpolationModeExponential cameraStops:@{
|
||||
@0.0: [MGLStyleValue<NSColor *> valueWithRawValue:[NSColor redColor]],
|
||||
@10.0: [MGLStyleValue<NSColor *> valueWithRawValue:[NSColor yellowColor]],
|
||||
@20.0: [MGLStyleValue<NSColor *> valueWithRawValue:[NSColor blackColor]],
|
||||
}];
|
||||
} options:nil];
|
||||
fillStyleLayer.fillColor = colorFunction;
|
||||
|
||||
NSString *filePath = [[NSBundle bundleForClass:self.class] pathForResource:@"amsterdam" ofType:@"geojson"];
|
||||
@@ -715,11 +715,11 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio
|
||||
theaterLayer.predicate = [NSPredicate predicateWithFormat:@"maki == 'theatre'"];
|
||||
theaterLayer.iconImageName = [MGLStyleValue valueWithRawValue:NSImageNameIChatTheaterTemplate];
|
||||
theaterLayer.iconScale = [MGLStyleValue valueWithRawValue:@2];
|
||||
theaterLayer.iconColor = [MGLStyleValue valueWithStops:@{
|
||||
theaterLayer.iconColor = [MGLStyleValue valueWithInterpolationMode:MGLInterpolationModeExponential cameraStops:@{
|
||||
@16.0: [MGLStyleValue valueWithRawValue:[NSColor redColor]],
|
||||
@18.0: [MGLStyleValue valueWithRawValue:[NSColor yellowColor]],
|
||||
@20.0: [MGLStyleValue valueWithRawValue:[NSColor blackColor]],
|
||||
}];
|
||||
} options:nil];
|
||||
[self.mapView.style addLayer:theaterLayer];
|
||||
}
|
||||
|
||||
@@ -1080,14 +1080,14 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio
|
||||
|
||||
- (void)mapView:(MGLMapView *)mapView didSelectAnnotation:(id <MGLAnnotation>)annotation {
|
||||
if ([annotation isKindOfClass:[DroppedPinAnnotation class]]) {
|
||||
DroppedPinAnnotation *droppedPin = annotation;
|
||||
DroppedPinAnnotation *droppedPin = (DroppedPinAnnotation *)annotation;
|
||||
[droppedPin resume];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)mapView:(MGLMapView *)mapView didDeselectAnnotation:(id <MGLAnnotation>)annotation {
|
||||
if ([annotation isKindOfClass:[DroppedPinAnnotation class]]) {
|
||||
DroppedPinAnnotation *droppedPin = annotation;
|
||||
DroppedPinAnnotation *droppedPin = (DroppedPinAnnotation *)annotation;
|
||||
[droppedPin pause];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user